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状态做相应的处理。

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