iOS消息推送接收处理

首先要说明两个概念:本地通知和远程推送。本地通知是由本地应用触发的,接收会比较及时。远程推送是通过苹果的APNs发送到应用客户端的。

以下有处理推送的三种状态:

一.APP没有被杀掉进程的时候,会根据是本地通知还是远程推送来调用不同的函数

//本地通知

-(void)application:(UIApplication*)application didReceiveLocalNotification:(UILocalNotification*)notification {

...

}

//远程推送

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {

...

}

//远程推送时苹果官方文档更推荐使用这个

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler

{

}

二.APP在杀掉进程的时候,当我们通过通知进入APP时,会调用下面的函数

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

//检查是否从通知启动

if(launchOptions)

{

NSDictionary* remoteNotification=[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

NSLog(@"remoteNotification%@",remoteNotification);

}

}

三.判断接收消息时的状态

//当应用程序在激活状态时接到通知,会是如下状态

if(application.applicationState == UIApplicationStateActive) {

...

//当应用程序在后台挂起时接到通知,用户进入应用后,会是如下状态

}else if(application.applicationState == UIApplicationStateInactive) {

...

}

在我们了解了以上三点后,就可以根据不同的情况处理推送消息了。

天伦物业项目的要求是不管APP在什么状态点击推送都要跳转到相应的页面,这个时候我们通过第一点和第二点会调用的函数,解析收到的消息字典获取不同的type值,做相应的跳转。

我完成的仟询项目的要求是APP在活跃状态下是不处理推送的,我们接收到消息的情况下,可以通过第三点来判断APP状态做相应的处理

文/zyh1158(作者)

原文链接:http://www.jianshu.com/p/4126ce0fe13f

著作权归作者所有,转载请联系作者获得授权,并标注“作者”。

你可能感兴趣的:(iOS消息推送接收处理)