普通推送:当APP离线时,当有推送下达的时候,走的是APNs,所以手机会有铃声、手机顶部出现横幅/通知栏会收到通知。
APP离线时,相关方法什么时候执行,看下面1-4就知道了:
1.只有点开通知栏中的通知进入APP/点开横幅中的通知进入APP,才会执行方法AAA;不点击不执行。
2.点击应用图标进入APP,一定不会执行方法AAA。
3.APP离线收到推送,点击应用图标进入APP/点开通知栏中的通知/点开横幅中的通知进入APP,会执行个推提供的 方法BBB的离线的透传消息
4.APP在线收到推送,就不走APNs,会直接执行个推提供的 方法BBB的在线的透传消息
总结:综合1-4,只要点开APNs发来的通知,那么先执行方法AAA,再执行个推的方法BBB
方法AAA
iOS 10之前,点通知,会调用如下方法。
- (void)applicationUIApplication *)application didReceiveRemoteNotificationNSDictionary *)userInfo fetchCompletionHandlervoid (^)(UIBackgroundFetchResult))completionHandler{
...
做你想做的操作。例如更新UI,跳转界面,文字转语音并读出来,顶部弹框,操作userInfo中的内容。
...
}
iOS 10 及以后版本,点击通知,会调用如下方法
-(void)userNotificationCenterUNUserNotificationCenter *)center didReceiveNotificationResponseUNNotificationResponse *)response withCompletionHandlervoid (^)(void))completionHandler{
...
做你想做的操作。例如更新UI,跳转界面,文字转语音并读出来,顶部弹框,操作userInfo中的内容。
...
NSLog(@"didReceiveNotification:%@", response.notification.request.content.userInfo);
// [ GTSdk ]:将收到的APNs信息传给个推统计
[GeTuiSdk handleRemoteNotification:response.notification.request.content.userInfo];
completionHandler();
}
方法BBB
离线的透传消息:程序离线收到推送时候,当由离线进入在线的时候会执行(offLine为YES)。离线的时候不会执行该方法。
在线的透传消息:程序在线收到推送的时候会执行(offLine为NO)。
接收个推推送的透传消息,就会执行如下代理方法
- (void)GeTuiSdkDidReceivePayloadDataNSData *)payloadData andTaskIdNSString *)taskId andMsgIdNSString *)msgId andOffLineBOOL)offLine fromGtAppId:(NSString *)appId {
拿到payloadData并转成字符串,然后做你想做的操作 :更新UI,跳转界面,文字转语音并读出来,顶部弹框
if (!offLine) {// offLine为NO表示在线的透传消息。
}else{// offLine为YES表示离线的透传消息。
}
} |