• IOS系统推送原理


    IOS推送大致原理如下图

    IOS设备推送

    1、Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);

    2、APNSApple Push Notification Service[苹果消息推送服务器];

    3、iPhone:用来接收APNS下发下来的消息;

    4、Client AppIOS设备上的应用程序,用来接收iphone传递APNS下发的消息到制定的一个客户端 app[消息的最终响应者];

    上图可以分为三个阶段:

    阶段一:Provider[服务端]把要发送的消息,目的IOS设备标识打包,发送给APNS;

    阶段二:APNS在自身的已注册Push服务的IOS设备列表中,查找有相应标识的IOS设备,并将消息发送到IOS设备;

    阶段三:IOS设备把发送的消息传递给对应的应用程序,并且按照设定弹出Push通知。

    具体过程,见下图

    1、[Client App]注册消息推送;

    2、[Client App]跟[APNS Service]要deviceToken, Client App接收deviceToken;

    3、[Client App]将deviceToken发送给[Provider]Push服务端程序;

    4、当Push服务端程序满足发送消息条件了,[Provider]向[APNS Service]发送消息;

    5、[APNS Service]将消息发送给[Client App].

    IOS推送交互具体过程

     

    IOS设备上的一些基本概念:

    UDID:iOS设备的一个唯一识别码,每台iOS设备都有一个独一无二的编码,这个编码,我们称之为识别码,也叫做UDID( Unique Device Identifier)。

    Bundle ID:(Bundle Identifier)是一款iOS应用的唯一标识,应用与Bundle ID之间是唯一对应关系。

    请注意:应用新建成功后,Bundle ID将不可修改,如必须修改只能创建一个新的应用,届时App ID、App Key和App Secret也将重新分配,旧版用户将无法收到针对新Bundle ID的推送。

    Device Token:设备令牌、用户标识

    1.获取devicetoken:

    1>客户端向苹果服务APNS,发送设备的UDID和英语的Bundle Identifier.
    2>经苹果服务器加密生成一个deviceToken
    3>将当前用户的deviceToken(用户标识),发送给自己应用的服务器
    4>自己的服务器,将得到的deviceToken,进行保存

    !!!device有可能会发生变化

    1. 在一台设备中, device token 是系统级别的,不同 App 获得的 device token 是相同的。假如我的手机安装了 Angry Bird 和 Evernote ,这两个应用获得 device token 一模一样。

    2. device token 并不会因为单个 app 的更新而发生改变。假如我的 iPhone 升级了最新版的愤怒的小鸟,这并不会导致我 device token 的改变。

    3. 假如我的 iPhone 从 backup 中恢复数据,device token 不会发生变化。

    4. 用户抹除 iPhone 的数据时,意味着要与这台手机撇清关系,比如出售或者送人。此时为了保护隐私,device token 会改变。

    2.获取到deviceToken后推送消息给设备

     

    5>需要推送的时候,将消息和deviceToken一起发送给APNS,苹果服务器,再通过deviceToken找到用户,并将消息发给用户

    实例讲解

     参考文章:

    http://www.cnblogs.com/fendou0320/p/6526955.html

    http://blog.csdn.net/u012449749/article/details/50542285

  • 相关阅读:
    CF932E Team Work(第二类斯特林数)
    BZOJ 3732: Network(Kruskal重构树)
    BZOJ 2753: [SCOI2012]滑雪与时间胶囊(最小生成树)
    BZOJ 2286: [Sdoi2011]消耗战(虚树+树形dp)
    hdu 4336 Card Collector(状压dp/Min-Max反演)
    BZOJ 3622: 已经没有什么好害怕的了(二项式反演)
    BZOJ 2839: 集合计数(二项式反演)
    CF gym 101933 K. King's Colors(二项式反演)
    BZOJ 1101: [POI2007]Zap(莫比乌斯反演)
    BZOJ 3747: [POI2015]Kinoman(线段树)
  • 原文地址:https://www.cnblogs.com/lingyejun/p/7238031.html
Copyright © 2020-2023  润新知