接收到推送后创建一个全局变量来保存接收到的推送。
点击推送后会来到后台点击远程通知的代理方法,
//iOS10新增:处理后台点击通知的代理方法
-(**void**)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(**void** (^)(**void**))completionHandler API_AVAILABLE(ios(10.0)){
NSDictionary * userInfo = response.notification.request.content.userInfo;
if ([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
//应用处于后台时的远程推送接受
[UMessage setBadgeClear:YES];
//必须加这句代码
[UMessage didReceiveRemoteNotification:userInfo];
UIApplicationState appState = [UIApplication sharedApplication].applicationState;
if (appState == UIApplicationStateActive) {
[[PushNotiModel shareModel] addInfo:userInfo];
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_SHOW_DETAIL object:**nil**];
}else{
[[PushNotiModel shareModel] addInfo:userInfo];
}
}else{
//应用处于后台时的本地推送接受
}
completionHandler();
}
- (void)appResignActive{
[[PushNotiModel shareModel] removeAll];
}
- (void)appDidBecomeActive{
//跳转详情
}
在这里处理当应用处于前台或者后台时如何跳转: 1.当应用处于前台时:保存数据,采取相对方式跳转,清空数据 2.当应用处于后台或者killed状态时:保存数据,在app becomeActive时采取相对方式跳转,清空数据。
这里需要注意的是当应用resignActive时需要清空数据,避免 本app -> home页(其他应用)-> 本app 导致becomeActive的操作。