iOS友盟推送跳转指定页面详细篇

这篇友盟的想写了很久了,实属友盟文档写的有点难懂。最近看群里好多人用了友盟,有不同的问题存在。今天,我将我集成UPush的过程,以及遇到的一些小问题写一下。

首先,(集成之前, 请在push.umeng.com/申请开通【友盟+】消息推送服务)下载SDK,我是手动添加的,传送门:SDK下载(如果需要插屏等功能需要下载U-Push iOS v1.5.0a,注意无IDFA版本)

1.导入SDK,引入库文件增加UserNotifications.framework到项目中。具体操作如下:点击项目---->TARGET---->Build Phases---->Link Binary with Libraries---->左侧+号---->搜索UserNotifications---->选中UserNotifications.framework---->点击Add。 

点击项目---->TARGET---->Capabilities,将这里的Push Notification的开关打开(有些可能遇到Code=3000 "未找到应用程序的“aps-environment”的授权字符串,这时候要检查App ID是否开启了推送服务,并保证推送证书有效,检查PP(配置)文件)

2.开始集成,会有部分代码

打开AppDelegate.m  引入头文件 引入UMessage.h,UserNotifications.h 设置代理

设置UNUserNotificationCenterDelegate  如果需要适配HTTPs加上一句代码 [UMessage startWithAppkey:@"your appkey" launchOptions:launchOptions httpsenable:YES ];

didFinishLaunchingWithOptions 中初始化

[UMessage startWithAppkey:@"your appkey"launchOptions:launchOptions];

[UMessage registerForRemoteNotifications];

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];

center.delegate=self;、UNAuthorizationOptions types10=UNAuthorizationOptionBadge|  UNAuthorizationOptionAlert|UNAuthorizationOptionSound;

[center requestAuthorizationWithOptions:types10    completionHandler:^(BOOLgranted,NSError* _Nullable error) {if(granted)

 {//点击允许//这里可以添加一些自己的逻辑

}else{//点击不允许//这里可以添加一些自己的逻辑}

}];

//打开日志,方便调试。[UMessage setLogEnabled:YES];

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

{

//注册deviceToken,现在不用手动注册,但测试模式下要将deviceToken添加到Umeng后台的测试设备中 [UMessage registerDeviceToken:deviceToken];

}

接受通知。 //关闭U-Push自带的弹出框[UMessage setAutoAlert:NO];

[UMessage didReceiveRemoteNotification:userInfo]; //统计点击次数

//iOS10以下使用这个方法接收通知- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

{[UMessage didReceiveRemoteNotification:userInfo];}

//iOS10新增:处理后台点击通知的代理方法-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{

NSDictionary* userInfo = response.notification.request.content.userInfo;

if([response.notification.request.triggerisKindOfClass:[UNPushNotificationTrigger class]]) {

//应用处于后台时的远程推送接受//必须加这句代码

[UMessage didReceiveRemoteNotification:userInfo];

}else{

//应用处于后台时的本地推送接受}

}

//iOS10新增:处理前台收到通知的代理方法-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void(^)(UNNotificationPresentationOptions))completionHandler{

NSDictionary* userInfo = notification.request.content.userInfo;

if([notification.request.triggerisKindOfClass:[UNPushNotificationTrigger class]]) 

{//应用处于前台时的远程推送接受//关闭U-Push自带的弹出框[UMessage setAutoAlert:NO];//必须加这句代码[UMessage didReceiveRemoteNotification:userInfo];

}else{//应用处于前台时的本地推送接受}//当应用处于前台时提示设置,需要哪个可以设置哪一个completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);//声音角标提示}

如果需要调转指定页面 往下看

写到这里可以进行测试了。如果测试没有问题,来继续写一下,如果App处于被杀死状态,点击通知,跳转到指定页面,因为我们做的是跳转到webview所以我根据是否含有url来判断,如果是要跳到不同的指定页面,需要对参数进行判断

didFinishLaunchingWithOptions  这个方法,Apple的官方文档//Tells the delegate when the application has launched and may have additional launch options to handle. 可能有额外的启动选项来处理。

在这里我们来看一下推送的userinfo

// 如果 launchOptions 不为空,我采用的是将推送中需要跳转的url存入沙盒内。

if (launchOptions) {

// 获取推送通知定义的userinfo

NSDictionary *userInfo = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];

NSUserDefaults *DYG = [NSUserDefaults standardUserDefaults];

[DYG setObject:userInfo[@"url"] forKey:@"dygPushUrl1"];

[DYG synchronize];

}

在程序进入后如果沙盒内存在这个url,那么跳转到加载web页面。也可以将这个web页面设置成rootviewcontroller,应该好多种方法吧。

当程序处于运行状态,接受到通知,这里运行包括前后台

- (void)handlerTuisong:(NSDictionary *)userInfo{

UINavigationController *contoller = nil;

if (![[userInfo allKeys] containsObject:@"url"]) {

NSLog(@"没有推送要求");

}else{

if (self.tabBarViewController) {

contoller = (UINavigationController *)self.tabBarViewController.selectedViewController;

} else {

UIViewController * DygVC = self.window.rootViewController;

if ([DygVC isKindOfClass:[UINavigationController class]]) {

UINavigationController * DygNav = (UINavigationController *)self.window.rootViewController;

contoller = DygNav;

}

}

DygWkWebView *DygWebView = [[DygWkWebView alloc]init];

DygWebView.url = userInfo[@"url"];

DygWebView.hidesBottomBarWhenPushed = YES;

[contoller pushViewController:DygWebView animated:YES];

}

}

好了,完工!

再加入一个小小的插屏功能,有广告效果,又可以在更好的位置让用户看到,既显示出你的细心,又让产品 (汪!)乐呵呵~

注意使用的SDK版本要是带.a的,我第一次搞,选错了版本,找不到文档上的方法,给Umeng发邮件臭骂了一顿结果是我自己的SDK版本不对(我又发了致歉邮件,错了就改改了再犯千锤百炼嘛~)。

[UMessage addCardMessageWithLable:@"这里写标识"]; 记得要在指定页面写好标识符,可以用汉字,但是不要乱写,只有10个位置!

暂时功能是做了这些,如果有什么疑问,可以加QQ交流。745377439 问题答案:不是。QQ群:139852091  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容