zoukankan      html  css  js  c++  java
  • iOS的推送机制APNs:本地推送&远程推送

    本地推送:

      本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒。本篇不做详细描述。

    远程推送:APNS(苹果推送通知服务)

               

    iOS远程推送机制的原理及流程:

      注册推送(橙色部分):若该App允许接收推送消息,则先要在代码中注册远程推送。注册推送后,iOS带着设备序列号去请求ANPS而获得deviceToken。然后App把deviceToken发送给我们App的服务器。因为若服务器有消息给我们推送时,它会把要发送的消息和deviceToken按照一定的格式一并打包发送给ANPS服务器。

      消息推送(蓝色部分):原本App的服务器和客户端是直接进行数据交互的,但iOS推送消息时必须经由APNS服务器。我们App先把要发送的消息和目标设备deviceToken按照一定的格式发送给APNS,APNS再推送给我们设备上的App客户端。

      

    关于服务器具体是如何打包数据的。以及App在手机上被卸载后,APNS是如何处理的,还会向它发送推送消息吗?

    这篇博客总结的很好:点击进入

    当APP被卸载后,APP服务器和APNS还会向APP发送消息吗?答案是否定的。因为APNS有反馈机制(feedback service)。当APNS服务器把消息推送给我们的设备,但设备无法找到APP发送给它时,就会给APNS服务器返回一条反馈信息,记录该设备已卸载APP,无法收到推送消息。那以后就不会再给那台设备推送消息了。

    代码实现:

    在AppDelegate.m中

    1. 首先给App注册远程推送:

    iOS8:

    先设置能接收的推送类型,根据类型生成settings,注册settings,注册远程推送。重写注册成功和失败的代理方法  

    iOS7:

    先设置推送类型,根据类型注册远程推送。重写代理方法。

    2. 获取到deviceToken的回调方法,以及推送消息接收成功后的回调方法

     

    需要的几个证书:

      参考:博客 《iOS远程推送需要的几个证书》

  • 相关阅读:
    【二分图最大独立集/最小割】P3355 骑士共存问题
    【费用流+正负费用处理】UVA11613 Acme Corporation
    【费用流】P2517 [HAOI2010]订货
    【最小割】P1361 小M的作物
    【最小割】[SHOI2007]善意的投票
    【最小割+割点转换】[USACO5.4]奶牛的电信Telecowmunication
    数据结构学习笔记——ST表
    图论学习笔记——LCA
    基于CNN的手写数字识别程序
    [Atcoder]M-Solutions 题解
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4495516.html
Copyright © 2011-2022 走看看