远程消息推送:3-打开指定界面(自定义消息内容)
在我们收到远程推送消息时,点击该消息,默认情况下,会打开该App的首页,但通常情况下,我们希望打开特定的一个界面。例如,点击新闻类App的推送消息会打开某条新闻;社交类App的推送消息,会打开与某人的聊天界面。这就需要在推送消息中携带自定义消息内容,例如某条新闻的url,当用户点击消息打开App时,即可根据消息中携带的自定义内容,打开特定的控制器(界面)。
自定义消息内容
在第三方消息推送服务平台上,我们可以为需要推送的消息中添加附加信息。以极光推送为例,在发送消息界面,点开可选设置,在其中的附加字段,我们可以添加在推送消息中可以携带的自定义内容,这些内容都保存在userInfo属性中。
如下图所示,我们新增了两个自定义内容weburl以及slogan。
获取自定义消息内容
远程推送消息的内容,都存储在userInfo属性中,该属性是一个字典类型的对象,因此,我们可以通过键值来取出对应的值。我们以iOS10为例,当用户点击远程消息时,如下方法会被调用。
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
// Required
NSDictionary * userInfo = response.notification.request.content.userInfo;
NSLog(@"%@",userInfo);
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
}
completionHandler(); // 系统要求执行这个方法
}
打印userInfo,可以看到除了默认的信息外,自定义的两个信息weburl以及slogan也被传递到手机上。
打开指定的控制器
在didReceiveNotificationResponse:withCompletionHandler:方法中,我们可以按照如下步骤打开指定的控制器:
- 获取远程推送消息中携带的自定义信息,用于获取需要展示的内容
- 实例化需要打开的控制器对象,并初始化
- 获取当前根控制器,并打开新控制器
例如,我们打开一个新的UIViewController对象,如下所示。实际情况下,更多的是打开一个导航控制器管理下的子控制器,原理是一致的。
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
// 获取推送消息中携带的信息
NSDictionary * userInfo = response.notification.request.content.userInfo;
NSLog(@"%@",userInfo);
//打开新控制器
UIViewController *newVc = [[UIViewController alloc] init];
newVc.view.backgroundColor = [UIColor redColor];
[self.window.rootViewController presentViewController:newVc animated:YES completion:nil];
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
}
completionHandler(); // 系统要求执行这个方法
}
文章发布时间为: November 19th , 2016 at 11:37 am
最后编辑时间为: September 22nd , 2017 at 01:16 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 22nd , 2017 at 01:16 am
本文由 99ios 创作,转载请注明出处