zoukankan      html  css  js  c++  java
  • iOS 消息推送原理及实现总结

    在实现消息推送之前先提及几个于推送相关概念,如下图:

    1、 Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);
    2、 APNS:Apple Push Notification Service[苹果消息推送服务器];
    3、 iPhone:用来接收APNS下发下来的消息;
    4、 Client App:IOS设备上的应用程序,用来接收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].

    二、消息推送实现:

    1、 生成*.certSigningRequest文件,步骤如下:
    [MacBookà 应用程序à实用工具à钥匙串访问à证书助手à从证书机构求证书?à证书信息(用户电子邮箱地址{填写您的邮箱,如:your@email.com},常用 名称{任意,如:PushDemo},请求是:{单选,选择‘存储到磁盘’})à继续à保存],这时会在您指定的地方生成你指定的文件,默认为 CertificateSigningRequest.certSigningRequest文件,这里命名 为:PushDemo.certSigningRequest.在此*.certSigningRequest已经生成,具体操作步骤如下面两张图所示。

    如果生成成功,则会在[钥匙串访问|登录|密钥]栏目中列出与*.certSigningRequest关联的密钥,这里是PushDemo,如下图所示:

    2、 新建一个App ID(在苹果开发者账号中配置)
    (1) 登录iOS Dev Center,登录成功后,点击(iOS Provisioning Portal对应链接),如下图所示:

    (2) 创建New App ID[App IDsàManageàNew App ID]( Description{填写您对此App ID 的描述,如:iShop},Bundle Seed ID(App ID Prefix){选择绑定App ID前缀,如:默认选择Generate New},Bundle Identifier(App ID Suffix){填写绑定App ID后缀,如:com.yourcorp.iShop}),如下图所示:

    这样就会生成下面这条记录,如下图所示:

    (3) 配置上一步中生成的App ID,让其支持消息推送[点击2-6中的Configureà选中Enable for Apple Push Notification serviceà点击Configure],如下图所示:

    (4) Generate a Certificate Signing Request(生成部署请求认证)[点击上图中的2ConfigureàContinueà步骤1生成的*certSigningRequest文件 (这里是iShop. certSigningRequest)à Generateà生成完成后将其下载下来,命名为:aps_developer_identity.cer],双击 aps_developer_identity.cer证书{将证书与密钥关联,并将证书导入到MacBook中},如下图所示:

    (5) 创建Development Provisioning Profiles[开发许可配置文件](Provisioning| Development|New Profile),具体操作流程如下图所示:

    点击上图中Submit,生成Development Provisioning Profiles[开发许可配置文件],这里是:iShopDevprofile.mobileprovision如下图所示:

    下载此开发许可证书(用于联机调试)。
    总 结,到现在为止,我们已经生成:A:*.certSigningRequest文件(在步骤(4)中使用,用于生成证书B)、B: aps_developer_identity.cer证书(在Provider[Push服务器]服务端应用使用)、 C:*..mobileprovision开发许可配置文件(在Client App客户端应用联机调试使用)。

    至此,消息推送的配置已经全部完成,接下来的工作就是编写Provider[Push服务器]服务端应用和Client App客户端应用的程序。

    三、Provider服务端的实现

    在这里只是简单讲述Provider服务端(JAVA实现)步骤如下:

    (1) 制作Provider服务端所需要的*.p12文件:
    在 上面的实现的(4) 部分的图所展示的密钥、证书,我们并没有使用到它,那么为什么要展示出来呢,猜猜是为什么?为制作*.p12文件?哈哈,您猜对了,下面我们就利用它来制 作*.p12文件,步骤:([MacBookà应用程序à实用工具à钥匙串访问[钥匙串:登录,种类:证书]à选择刚刚生成的证书(Apple Development IOS Services:*******)à菜单à文件à导出项目…à[存储为:任意文件名(如:iPush),文件格式:默认(个人信息交换 (.p12))]à输入密码以进行导出[密码:任意,验证:与密码同一]à输入MACBook登录密码à允许à最终生成。

    关键步骤如下图:

  • 相关阅读:
    Python基础:文件的基本操作
    Python基础:函数的介绍及应用
    Python基础:列表,元组和字典的基本操作
    Python基础:字符串的常见操作
    Python基础:Python数据类型及逻辑判断语句
    Apache Hive (七)Hive的DDL操作
    Apache Hive (六)Hive SQL之数据类型和存储格式
    Apache Hive (五)DbVisualizer配置连接hive
    网络通信
    HashMap与Hashtable的区别
  • 原文地址:https://www.cnblogs.com/inandroid/p/3896595.html
Copyright © 2011-2022 走看看