但很多app都实现这种,不点通知进入,直接点app启动照样能得到推送信息的。
网上的说法:没有具体实施
如果不是点击通知栏进入APP,是拿不到推送消息的。原因是这样的,如果堆积了多条应用,回调将会变得复杂,而且没用。正确的做法是,服务器要缓存好当前的未读消息,进入应用的时候去获取未读消息。如果要识别通知栏点击,那获取未读消息之前可能还要进行进一步逻辑处理。
原来极光推送有background模式,我后台的时候直接把消息处理一下,要求显示alert事件,点击icon进入app内就显示alert了。
有关极光社区中的帖子:https://community.jiguang.cn/t/ios/13750
// Required, iOS (7.0 and later) Support
//iOS7及以上系统,收到通知
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
//处理收到的 APNs 消息
JPUSHService.handleRemoteNotification(userInfo)
completionHandler(.newData)
/**
* iOS的应用程序分为3种状态
* 1、前台运行的状态UIApplicationStateActive;
* 2、后台运行的状态UIApplicationStateInactive;
* 3、app关闭状态UIApplicationStateBackground。
*/
if application.applicationState == .active {
// 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下
//let message = "您有一条新的消息,是否点击查看"
print("// 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下------------userinfo:%@",userInfo)
showAlertWithMessage(userInfo)
} else if application.applicationState == .inactive {
// 处于后台运行状态时
print("// 处于后台运行状态时---------userinfo:%@",userInfo)
showAlertWithMessage(userInfo)
} else if application.applicationState == .background {
//app关闭状态
print("//app关闭状态-----------userinfo:%@",userInfo)
showAlertWithMessage(userInfo)
}
}