远程推送点击消息跳转到指定页面

各个推送平台:

    极光推送
    小米推送
    友盟推送
    个推
    信鸽
    阿里推送

推送的逻辑处理:

一、收到推送消息有三种情况:
1、应用未启动(默认显示在通知栏,或者锁屏时显示在锁屏页面)
2、应用在后台挂起(默认显示在通知栏,或者锁屏时显示在锁屏页面)
3、应用在前台(默认不显示)

二、点击推送消息有两种情况:

1、应用未启动-->启动:
无论是点击推送消息打开应用还是点击icon打开应用都会调用以下方法

//只有重新打开APP和后台杀死后在打开APP才会走下面的方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; 
//如果userInfo 有内容说明是点击通知打开的应用,如果没有内容则是点击icon打开的应用 
if (userInfo) { // 有推送的消息,处理推送的消息 
_isLaunchedByNotification = YES; 
} }

2、应用在后台 -> 应用在前台:
应用在后台挂起时点击推送消息和应用在前台时收到推送消息,都会调用以下方法:
ios7以上会调用下面这个方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification :(NSDictionary *)userInfo fetchCompletionHandler: (void (^)(UIBackgroundFetchResult result))completionHandler{}

ios 10 会调用 下面的方法

// iOS 10 Support(极光) 处于前台的时候 消息推送过来的手机上弹出消息的 - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
 // Required 
AudioServicesPlaySystemSound(1007); 
NSDictionary * userInfo = notification.request.content.userInfo; if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { 
[JPUSHService handleRemoteNotification:userInfo]; 
} 
completionHandler(UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置 }
 // iOS 10 Support(极光) 点击消息的时候才调用的方法 
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { 
// Required
 NSDictionary * userInfo = response.notification.request.content.userInfo;
 if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { 
[JPUSHService handleRemoteNotification:userInfo];
 } 
completionHandler(); // 系统要求执行这个方法 }

你可能感兴趣的:(远程推送点击消息跳转到指定页面)