关于iOS Push Notification的响应问题

关于iOS Push Notification的响应问题 (2013-08-24 15:46:07)转载▼

标签: notifcation 推送 消息 it 分类: iOS开发

最近在做推送消息的时候遇到一个问题,就是当程序在后台运行时,这时候收到推送消息后,点击应用图标后无法拿到这个消息,至今还未解决,如有能够解决办法的朋友,忘不吝赐教。

简单总结一下推送消息的相应情况

1. 当程序处于关闭状态收到推送消息时,点击图标会调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 这个方法,那么消息给通过launchOptions这个参数获取到。

2. 当程序处于前台工作时,这时候若收到消息推送,会调用- (void)application:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法

3. 当程序处于后台运行时,这时候若收到消息推送,如果点击消息或者点击消息图标时,也会调用- (void)application:(UIApplication*)application

didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法

4. 当程序处于后台运行时,这时候若收到消息推送,如果点击桌面应用图标,则不会调用didFinishLaunchingWithOptions和didReceiveRemoteNotification方法,所以无法获取消息

下面是针对以上4种情况做响应处理:

第一种情况:

if (launchOptions) {

NSDictionary* pushNotificationKey = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (pushNotificationKey) {

//这里定义自己的处理方式

}

}

第二、三种情况:

if (application.applicationState == UIApplicationStateActive) {

//第二种情况

if ([[userInfo objectForKey:@"aps"] objectForKey:@"alert"]!=NULL) {

[WLHelper showAlert:@"推送消息" msg:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]];

}

} else {

//第三种情况

//这里定义自己的处理方式

}

第四种情况: 目前还不确定如何弄,忘各路朋友帮忙解答,不胜感激

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言:iOS开发,推送可以说是必须的,但是之前对于推送总是概念模糊,最近借公司项目需求,深入了解了一下。“对于知识...
    ibabyblue阅读 5,186评论 36 8
  • 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知...
    莫离_焱阅读 11,596评论 1 8
  • 推送通知 注意:这里说的推送通知跟NSNotification有所区别 NSNotification是抽象的,不可...
    iOS开发攻城狮阅读 9,762评论 1 13
  • 极光推送: 1.JPush当前版本是1.8.2,其SDK的开发除了正常的功能完善和扩展外也紧随苹果官方的步伐,SD...
    Isspace阅读 11,717评论 10 16
  • 温州市特级教师送教文成 执教:温州翔宇中学张强 文成县珊溪中学七(5)班 导入: 别样的复习课——新的区域:全球瞩...
    夏陈伟阅读 5,115评论 2 16