iOS 消息推送接收处理

作者: zyh1158 | 来源:发表于2016-05-16 11:16 被阅读1949次

           结合最近做的项目来总结一下,在我们接收到推送通知后我们将要怎么处理这条推送消息,也为以后再做相关推送的时候能够更快处理。

    首先要说明两个概念:本地通知和远程推送。本地通知是由本地应用触发的,接收会比较及时。远程推送是通过苹果的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状态做相应的处理。

    相关文章

      网友评论

      • 风火游龙:不点击通知栏的消息,直接点击app图标,怎么拿到通知栏的所有消息呢
        65cb190bef16:@风火游龙 我也想知道怎么过去
      • 4090dea7ba26:开机不启动程序,接收消息只能用推送吗?
        zyh1158:@妈妈说你还小 是的
        4090dea7ba26:@zyh1158 那像微信,qq那种, 不打开程序, 能收到一条条的消息,也是用的远程推送吗?
        zyh1158:@妈妈说你还小 是的啊,只能远程推送

      本文标题:iOS 消息推送接收处理

      本文链接:https://www.haomeiwen.com/subject/ourbrttx.html