| Version 22 (modified by wangjianqiang, 14 years ago) (diff) |
|---|
推送流程
整个推送过程涉及以下3个主体:
| 主体 | 说明 |
| PNS | 推送服务器(Push Notification Server),即本系统 |
| Sender | 第三方应用服务器,发起推送的主体 |
| App | 客户端应用,接收推送消息的主体 |
设备注册流程如下:
- App向PNS提交appkey并申请注册该移动设备,参见平台接口定义/设备注册接口
这里是为设备进行注册,而非为当前App注册,设备注册后可为设备上的所有App提供推送服务
如果设备上已经有其它App注册了该设备,则当前App不再进行注册,而是直接使用已注册到的账号
问题:如何有效地保存账号信息?即使发起注册的App被删除后,仍旧能保证账号信息可用
- PNS验证了appkey的合法性后自动分配一个新的账号及随机密码返回给App
自动分配账号信息可能导致一个设备被分配多个账号,比如刷ROM等操作导致账号信息的丢失从而进行了重新注册
如果定期清理僵尸账号,如何保证长久时间未联网的设备再次联网时(账号已被清理)所有App还能正确获取到推送消息?
可以考虑在每次进行设备注册之后发一次系统级的通知,让所有使用了推送服务的App重新走一次下面的Token申请流程
- App获取到账号信息后登录PNS
- App向PNS发送appkey、账号和密码并申请获取推送Token,参见平台接口定义/获取推送Token接口
- PNS验证合法性后随机分配一个Token返回给App
Token是为App而非设备服务的,设备上的每个使用推送服务的App都会被分配一个不同的Token
PNS需要维护账号、appkey与Token之间的关系,即一个账号对应多个Token,每个Token对应一个appkey
- App获取到Token后将Token告知Sender
该环节由App和Sender自己处理,Sender保存下Token以便日后发送推送用
推送流程如下:
- Sender提取出推送Token并连同推送信息一起发送PNS
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)