zoukankan      html  css  js  c++  java
  • IOS 推送-客户端处理推送消息

    IOS 推送-客户端处理推送消息

    1.推送调用顺序

    APN push的消息到达后,UIApplicationDelegate有两个方法和处理消息有关:

      1)application:didReceiveRemoteNotification:

      2)application:didFinishLaunchingWithOptions:

      详解:

    1)如果是程序正在运行或者说程序正在后台,那么这个时候处理推送消息的工作都是在:

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

    或者:

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

    中完成。

    2)但是如果用户点击推送通知的时候程序还没有被启动,这个时候以上两个函数都是接收不到用户的推送通知的,这个时候需要在

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

    函数里面进行处理。而推送消息的相关信息就存储在launchOptions这个字典里。具体参照如下代码:

    1 NSDictionary* pushInfo = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
    2 if (pushInfo)
    3 {
    4     NSDictionary *apsInfo = [pushInfo objectForKey:@"aps"];
    5     if(apsInfo)
    6     {
    7         //your code here
    8     }
    9 }
    UIApplicationLaunchOptionsRemoteNotificationKey是远程推送,UIApplicationLaunchOptionsLocalNotificationKey为本地推送。
    3)如果用户收到了通知但是没有点按通知,而是点击屏幕上的App图标进入的app。什么都不会被调用

    2.待定

  • 相关阅读:
    深刻理解Docker镜像大小
    UVA 12657 Boxes in a Line
    STL 之 iterator traits 备忘
    python设计模式 之 简单工厂模式
    extjs 时间范围选择的实现
    数据结构
    nodeJS npm grunt grunt-cli
    Ubuntu: GlusterFS+HBase安装教程
    ubuntu 休眠之后蓝牙鼠标无效果。
    基于sparksql调用shell脚本运行SQL
  • 原文地址:https://www.cnblogs.com/alunchen/p/5289819.html
Copyright © 2011-2022 走看看