消息推送

原创 2015年11月21日 16:35:54

APNS的推送机制

⾸首先我们看⼀一下苹果官⽅方给出的对ios推送机制的解释。如下图

Provider就是我们⾃自⼰己程序的后台服务器,APNSApple Push Notification Service的缩写,也就是苹果的推送服务器。

上图可以分为三个阶段:第⼀一阶段:应⽤用程序的服务器端把要发送的消息、⺫⽬目的iPhone的标识打包,发给APNS

第⼆二阶段:APNS在⾃自⾝身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone

第三阶段:iPhone把发来的消息传递给相应的应⽤用程序,并且按照设定弹出Push通知。

APNS推送通知的详细⼯工作流程

下⾯面这张图是说明APNS推送通知的详细⼯工作流程:

根据图⽚片我们可以概括⼀一下:

1. 应⽤用程序注册APNS消息推送。
2. iOSAPNS Server获取devicetoken,应⽤用程序接收device token3. 应⽤用程序将device token发送给程序的PUSH服务端程序。
4. 服务端程序向APNS服务发送消息。
5. APNS服务将消息发送给iPhone应⽤用程序。

远程推送操作过程简介

1. App启动过程中,使⽤用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请。若注册成功,回调函

application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

会被触发,App可以得到deviceToken,该token就是⼀一个与设备相关的字符串.

  1. App获取到DeviceToken后,将DeviceToken发送给⾃自⼰己的服务端。

  2. 服务端拿到DeviceToken以后,使⽤用证书⽂文件,向苹果的APNS服务器发起⼀一个SSL连接。连接成功之后,发送⼀一段JSON串,该JSON串包含推送消息的类型及内容。

  3. 苹果的APNS服务器得到JSON串以后,向App发送通知消息,使得App的回调函数

application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo

userInfo中即可得到推送消息的内容。

⽤用到的证书⽂文件及⽣生成过程

被调⽤用,App

  1. certSigningRequest⽂文件,该⽂文件在MAC系统中⽣生成,⽤用于在Apple⺴⽹网站上申请推送证书⽂文件。 ⽣生成过程: 打开应⽤用程序中的钥匙串访问软件,从菜单中选择 钥匙串访问”-证书助理”-从证书颁发机构请求证书,邮箱和名称随便填写,然后选择保存到磁盘,就可以在本地⽣生成⼀一个CertificateSigningRequest.certSigningRequest⽂文件。

  2. 注册⼀一个⽀支持pushapp id,后⾯面会⽤用到。 ⽣生成过程: 进⼊入developer.apple.com,选择member center - Certificates, Identifiers & Profiles - Identifiers- App Ids,然后选择注册app id,设置appid名称,同时,app id suffix⼀一栏必须选择explicit app id,然后设置bundleid,最后勾选 App Services中的 Push Notifications,这样就可以注册⼀一个⽀支持pushaphid

  3. 推送证书cer⽂文件,该⽂文件在developer.apple.com中⽣生成,⽤用于⽣生成服务端需要的⽂文件。⽣生成过程: 进⼊入developer.apple.com,选择member center - Certificates, Identifiers &Profiles - Certificates,然后选择创建certificate,类型分为DevelopmentProduct。这⾥里以Development为例,选择Apple Push Notification service SSL (Sandbox) ,然后下⼀一步,选择之前⽣生成的⽀支持pushAppId,然后下⼀一步,提交之前创建的CSR⽂文件,再下⼀一步就可以⽣生成cer⽂文件,然后保存到本地。

  4. ⽣生成服务端使⽤用的证书⽂文件。如果是使⽤用⺴⽹网上的mac PushMeBaby⼯工具,在mac机器上进⾏行推送消息的发送,那么有上⾯面的cer⽂文件就够了。如果是使⽤用PHPjava/c#开发⾃自⼰己的服务端,那么还需要将上⾯面的cer⽂文件做⼀一个转换,⽣生成pem⽂文件或者p12⽂文件。

  5. ⽣生成Xcode使⽤用的provisioning⽂文件,该⽂文件⽤用于真机调试。⽣生成过程:进⼊入developer.apple.com,选择member center - Certificates, Identifiers & Profiles -Provisioning Profiles,然后选择创建Provisioning file,接着选择iOS App Development ,下⼀一步选择AppId,选中之前建⽴立的⽀支持pushappid,接着下⼀一步选择⽀支持pushcertificate,下⼀一步勾选需要⽀支持的device id,最后⼀一步设置provisioning⽂文件的⽂文件名,这样provisioning⽂文件就⽣生成了。

客户端的开发

⾸首先下载前⾯面建⽴立的cer⽂文件和provisioning⽂文件,双击,导⼊入到xcode中,在build settingcode signing⼀一栏⾥里选择这两个⽂文件的名称,这样就可以将⽀支持pushapp部署到真机中。然后是要处理推送消息。

客户端对推送消息的处理分两种情况:

1. App没有运⾏行的情况下,系统收到推送消息,⽤用户点击推送消息,启动App。此时,不会执⾏行前⾯面提到的 didReceiveRemoteNotification 函数,⽽而是在AppapplicationDidFinishLaunching函数中处理推送,通过以下代码可以获取推送消息中的数据:

1. APP处于前台时,系统收到推送消息,此时系统不会弹出消息提⽰示,会直接触发application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary)userInfo函数,推送数据在userInfo字典中。

App处于后台时,如果系统收到推送消息,当⽤用户点击推送消息时,会执⾏行application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo函数, 此时

NSDictionary *userInfo =[launchOptions objectForKey:UIApplicationLaunchOp
tionsRemoteNotificationKey];

AppDelegate中函数执⾏行的顺序为:

applicationWillEnterForeground
application:didReceiveRemoteNotification

applicationDidBecomeActive
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

友盟+消息推送Demo

  • 2017-09-28 10:17
  • 4.42MB
  • 下载

DWR消息推送简单实例

  • 2017-04-10 21:39
  • 26KB
  • 下载

基于native.js和html5的APP开发之消息推送

基于native.js的APP开发之消息推送native.js是为了方便html开发时,调用android原生态,实现消息的推送。首先看一下效果图: 在实现的过程中,要在plus初始化结束后,才能调...

Android消息推送

  • 2015-06-01 11:54
  • 14.95MB
  • 下载

android消息推送

  • 2013-08-12 21:12
  • 17.26MB
  • 下载

消息推送的那些坑

搞开发的,多少都会接触到一些推送。这里就列出来一些消息推送里面存在的坑,或许可以解决一些问题。 这里不说代码,只说遇到问题时解决问题的思路。基本上按照推送的接入文档来都可以接入,关键是接入了推送,在推...

android 消息推送

  • 2013-07-26 09:52
  • 2.55MB
  • 下载

android消息推送XPMM.rar

  • 2013-04-28 10:11
  • 16.06MB
  • 下载

微信公众号开发===消息推送_Controller代码(1)

项目目的:由于是电商项目,所以在用户下单之后,需要在微信公众号中推送订单的状态项目流程:1、需要在公众号后台创建模板 2.根据微信文档,编写代码 /** * - 公众号通知推送 */ ...

android 消息推送09_02

  • 2012-09-02 14:34
  • 1.14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)