我是靠谱客的博主 饱满月光,这篇文章主要介绍设备接到APNS发来的通知处理方式,现在分享给大家,希望可以做个参考。


我们在做远程通知时,从服务端发来的通知,我们的设备状态可以分为几种状态,如下:

1. 应用还没有加载,即应用既不在前台,也不在后台运行


这时如果点击通知的显示按钮,或者是图标icon,会调用didFinishLaunchingWithOptions,不会调用didReceiveRemoteNotification方法。

如果点击通知的关闭按钮,再点击应用,只会调用didFinishLaunchingWithOptions方法。

我们需要做的是在这个方法只能通过关键字获取APNS的消息内容。

//第一次从通知栏进入
if ([[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsRemoteNotificationKey]) {
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
}

2. 应用在前台(foreground)


这时如果收到通知,会触发didReceiveRemoteNotification方法。我们只需要在这个方法中获取对应消息数据,在我们ui层面做相应操作就可以了。我建议的做法是用NSNotificationCenter。

3.应用在后台


(1)此时如果收到消息通知,点击通知栏消息按钮,会调用didReceiveRemoteNotification方法。

(2)通过点击图标icon启动应用,则didFinishLaunchingWithOptions和didReceiveRemoteNotification都不会调用,那么我们就不能通过回调方法获取对应消息内容了,此时的解决办法是,根据发过来通知中的badge进行判断是否有通知,在应用进入后台时,标记当前时间,应用再次启动时,通过我们标记的时间,到目前时间段,在服务端后台做已发消息内容数据的请求。

应用进入后台调用:applicationDidEnterBackground,在此方法中做时间标记

应用启动会调用:applicationWillEnterForeground和applicationDidBecomeActive,做数据请求

最后

以上就是饱满月光最近收集整理的关于设备接到APNS发来的通知处理方式的全部内容,更多相关设备接到APNS发来内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(125)

评论列表共有 0 条评论

立即
投稿
返回
顶部