远程推送的问题

最近在做推送的时候出现了强制执行推送函数的情况

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 函数是在应用已经启动,在后台或者前台情况下执行。因此问题来了,当用户在应用内使用时,收到远程推送就很可能出现被强制执行通知的事件。

最后测试发现,在执行这个函数之前,如果是从后台进入则会先执行

- (void)applicationWillEnterForeground:(UIApplication *)application,这时只需要在该函数内使用一个BOOL变量就能控制了。因为只要是从后台点通知进入的就需要执行通知的函数,但是直接点击应用进入的就不需要执行通知函数。

此外,在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中也需要处理通知事件,如果应用是被通知触发启动,是不会进入didReceiveRemoteNotification这个函数的,这时候需要在didFinishLaunchingWithOptions中做处理

NSDictionary* userInfo = [launchOptionsvalueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];

    if (userInfo) {

        self.notificationDcit = userInfo;

        ....

        ...

        

           ...

        

    }

userInfo是启动项launchOptions中取出来的远程通知字典,如果是由远程通知启动的应用这个字典是!nil的

强制执行的问题就解决了。


最近做推送的时候还遇上一问题,就是在应用关闭状态,收到远程通知,这时候不点击通知而是从应用的图标启动,会出现上述字典userInfo为nil的情况。也不会执行didReceiveRemoteNotification代理方法,此种情况下,应用是无法拿到手机获得的推送消息的。这时候无法在应用中进行有效的用户提示,可有大神知道怎么解决?很纠结啊!

阅读更多
文章标签: 远程推送
个人分类: iOS
上一篇精通UIPasteboard 粘贴板
下一篇iphone开发之用lipo合并模拟器库和真机库,发布一个通用的静态库
想对作者说点什么? 我来说一句

ios 远程推送发送器

2015年09月02日 79KB 下载

没有更多推荐了,返回首页

关闭
关闭