`
huangyongxing310
  • 浏览: 494733 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

APNS、GCM

 
阅读更多
APNS

APNs(英文全称:Apple Push Notification service),中文翻译为:苹果推送通知服务。该技术由苹果公司提供的APNs服务。(苹果的服务器)



通知是由两个主要部分组成的数据:设备令牌和有效载荷的短消息。


工作原理:
//首先,APNs会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书以确定其为苹果设备)

//然后,将服务器的信息接收并且保存在APNs当中,APNs从其中注册的列表中查找该IOS设备
// (设备可以为iPhone、iPad、iPod Touch,版本是iOS3.0及以上)并将信息发送到该设备;

//最后,设备接收到数据信息给相应的APP,并按照设定弹出Push信息。

过程:
//第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。
//第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone。
//第三阶段:iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知。


//1、首先是应用程序注册消息推送。
//发起请求,系统记录好了那个应用程序注册了推送服务,为后面收到推送信息推送信息到那个应用做好准备
//2、 IOS跟APNS Server要deviceToken。应用程序接受deviceToken。
//IOS系统向APNS Server(服务器)取得一个deviceToken,APNS Server会记录下这个设备与这个deviceToken关联,
//(一个设备可能对应多个deviceToken(多个应用(APP)))那后面信息推送给谁做准备,不同应用申请的deviceToken可
//能是不一样的,这样就可以为后期区别不同应用做好准备了
//3、应用程序将deviceToken发送给PUSH服务端程序。
//应用程序得到deviceToken,并发送给业务服务器(决定推送什么信息的服务器),业务服务器记录下这个
//deviceToken,为后面事件发生向那些指定的设备推送信息
//4、 服务端程序向APNS服务发送消息。
//业务服务器发生某些事件时,把推送的信息和deviceToken一起发送到APNS Server,
//5、APNS服务将消息发送给iPhone应用程序
//APNS Server收到业务服务器发送的信息,从记录好的deviceToken与设备对应关系中找到设备,APNS Server并把推送到设备,
//设备接收到推送的信息,IOS系统从中得到那些应用软件(APP)注册了推送服务,然后将信息发送给对应的应用软件(APP),
//应用软件(APP)从而向系统申请弹出信息框,信息就可以在设备上看到了


信息组成:
//提供端需要推送的数据有两个部分组成:
//Device Token
//Payload

//Token 很容易理解,就是验证双份身份时需要携带的认证讯息;
//而Payload则是需要推送的主要信息了,它又包括:
//展示给用户的信息
//给 App 展示的 icon 徽标 ( 俗称小红点 ) 数量信息
//在设备端发出的声音
//当然其中只有 1 是必需的。




特点:
//推荐使用APNs服务,稳定,方便,美中不足是没有推送到达的回执和统计,不方便产品运营。如对此方面有需求可以使用 个推等第三方推送服务解决





链路:
//信息提供者(provider)-->APNS-->IPohne(设备)-->应用程序(APP)


//Provider是指某个iPhone软件的Push服务器
//APNS是Apple Push Notification Service的缩写,是苹果的服务器



无论是iPhone客户端和APNS,还是Provider和APNS,都需要通过证书进行连接


用户设备联网后,会保持跟苹果 APNs 服务器的连接,所有推送都通过这个连接发送到用户设备,系统再根据设置弹出提醒(是长连接)



GCM(谷歌云推送)



实现原理与APNS差不多





服务端和GCM的通信方式有两种:
1.Http协议
2.Xmpp协议





registerId:客户端向GCM申请的设备关系码
1. 注册用户,得到Project Number和APP key,Project Number就是我们在后面编程时候所要用到的SENDER_ID 。



//==========================================================================================
1.Sender ID //项目ID,向GCM那个项目进行请求Registration Token(APP)和向其发送信息(应用服务器)
2.API Key //访问GCM要用到的一个密码
3.Registration Token //APP向GCM申请得到的一个与设备绑定的ID



//==========================================================================================
工作流程:
//1.创建一个谷歌API项目,选择Other>Create一个新的项目,Google会自动生成一个project Id. 这是你的项目ID,
// 请注意这个Id 项目ID:382396212935 下面很多地方用到了.
// 1.1获取一个Server API密钥
//2.APP通过向系统调用接口,向GCM的project Id请求得到Registration Token,系统登记好这个Registration Token与APP的关系,
// 同时GCM,会记录好这个Registration Token与那个设备(可能是socket)进行关联的
//3.APP向应用服务器提交得到的Registration Token与用户ID(用于应用服务器进行关系绑定)
//4.应用服务器保存Registration Token与用户ID的关联
//5.当要进行消息推送时,将包含有Sender ID、API Key、Registration Token、消息内容的请求发送到GCM
//6.GCM接收到请求后,从Registration Token与那个设备(可能是socket)进行关联的表中得到设备(可能是socket),并通过这个
// (可能是socket)长连接发送相应的消息。
//7.APP系统就可以接收到这个消息,从系统中(Registration Token与APP的关系表)就可以知道这个消息是与那个APP进行关联的,
// 系统发送相应的消息到APP,APP接收到消息




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics