美文网首页
IOS Push 通知

IOS Push 通知

作者: 派大星的博客 | 来源:发表于2018-11-01 11:32 被阅读0次

    1.推送过程简介

     (1)App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请。若注册成功,回调函数application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 会被触发,App可以得到deviceToken,该token就是一个与设备相关的字符串.
    
     (2)App获取到DeviceToken后,将DeviceToken发送给自己的服务端。
    
     (3)服务端拿到DeviceToken以后,使用证书文件,向苹果的APNS服务器发起一个SSL连接。连接成功之后,发送一段JSON串,该JSON串包含推送消息的类型及内容。
    
    (4)苹果的APNS服务器得到JSON串以后,向App发送通知消息,使得App的回调函数application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo被调用,App从userInfo中即可得到推送消息的内容。
    

    2. 用到的证书文件及生成过程

    certSigningRequest文件,该文件在MAC系统中生成,用于在Apple网站上申请推送证书文件。

    生成过程:
    打开应用程序中的“钥匙串访问”软件,从菜单中选择 “钥匙串访问”-》“证书助理”-》“从证书颁发机构请求证书”,邮箱和名称随便填写,然后选择保存到磁盘,就可以在本地生成一个CertificateSigningRequest.certSigningRequest文件。

    3. 客户端的开发

     (1)下载前面建立的cer文件和provisioning文件,双击,导入到xcode中,在build setting中code signing一栏里选择这两个文件的名称,这样就可以将支持push的app部署到真机中。
    
     (2)处理推送消息
    
           客户端对推送消息的处理分两种情况:
    
          一. 在App没有运行的情况下,[系统](http://www.2cto.com/os/)收到推送消息,用户点击推送消息,启动App。此时,不会执行前面提到的          didReceiveRemoteNotification函数,而是在App的applicationDidFinishLaunching函数中处理推送,通过以下代码可以获取推送消息中的数据: NSDictionary *userInfo =[launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    
          二 . 当APP处于前台时,系统收到推送消息,此时系统不会弹出消息提示,会直接触发application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo函数,推送数据在userInfo字典中。
    
           当App处于后台时,如果系统收到推送消息,当用户点击推送消息时,会执行application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo函数,
    
          此时AppDelegate中函数执行的顺序为:
    
          applicationWillEnterForeground 
    
          application:didReceiveRemoteNotification
    
          applicationDidBecomeActive
    

    相关文章

      网友评论

          本文标题:IOS Push 通知

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