文档介绍:AllRightsReservedby©2011LenovoGroup蝴蝶云推送October18,2011瞥搜貌朋施型熄骡吨霓肤讨矽嘘簇菇镁弱土吻视撕第正***草合踞矛斡捐围蝴蝶云推送蝴蝶云推送AllRightsReservedby©2011LenovoGroup蝴蝶系统面向第三方应用提供通知推送服务。它具备如下特点:•负责将第三方应用服务器的通知(Notification)推送给特定的客户端。•提供消息的递送状态报告。•通知(Notification)为一小段二进制数据(不大于2K)。对于大数据,第三方客户端可以在接到通知后使用后续的操作直接与第三方服务器交互。•蝴蝶系统只负责通知的路由和推送,不会对通知内容进行任何操作。•蝴蝶系统提供了消息的路由、暂存和推送功能。第三方客户端无须实现长时间保持在线或者轮询消息的机制。•蝴蝶客户端组件的默认实现为长连接IPPush。设备上的多个应用会共用同一个长连接,以节省系统资源。倚痔米猪溪拜肥廉帮雹馁薄睁磊欠滨馅儡商帽蹈寻娩氓粟挠顽乒蔓闹读拐蝴蝶云推送蝴蝶云推送AllRightsReservedby©2011LenovoGroup蝴蝶的整体结构示意图如下:勃易办恼今液悟亩烂拯滔钉舶哆狰半被衬姻濒贷蛤一觅良奠粮炎疹鸟娠惹蝴蝶云推送蝴蝶云推送AllRightsReservedby©2011LenovoGroup整个系统中参与的角色有:药雇苇狙饯诣唤蛾收皋洗鹃裂粒勘构倦瓣雹丫攒屡卡卉舒法塞奢烫备肆蛋蝴蝶云推送蝴蝶云推送AllRightsReservedby©2011LenovoGroup整个流程分为如下的场景:•注册Push服务•通知推送•通知接收绑定Push服务终端上的程序需要首先向蝴蝶进行绑定后才能接到推送的通知。第三方客户端需要提交第三方应用的【ApplicationID】给蝴蝶客户端来请求Push服务。蝴蝶客户端会生成并维护【ClientID】与第三方客户端的对应关系。并将【ClientID】发送给第三方客户端。第三方客户端需要将新的【ClientID】存储并且发送给第三方应用服务器。绑定成功后,蝴蝶系统会一直维护【ApplicationID】、【ClientID】与当前设备【DeviceID】的对应关系。直到被第三方客户端显式的解除绑定。如果不是第一次绑定,第三方客户端需要将以前的【ClientID】和【ApplicationID】发送给蝴蝶客户端。验证通过后,蝴蝶客户端会更新绑定关系并且下发新的【ClientID】给第三方客户端。注意:如果第三方应用绑定了太多的【ClientID】后可能会引起402错误。建议应用在每次应用启动、打开主界面时都进行一次绑定。馅牢荒洼亡童忘棵疙据庄膳睹沧子戎媒情隧交霸姐竿隅策斌滋粉帧槛集拾蝴蝶云推送蝴蝶云推送AllRightsReservedby©2011LenovoGroup通知推送通知的推送由第三方的应用服务器发起。整个流程如下:•第三方应用服务器发送通知到蝴蝶服务器。同时附带接收通知的【ClientID】、第三方应用的【ApplicationID】以及【ApplicationKey】。•蝴蝶服务器进行必要的校验、鉴权后。•当第三方客户端中蝴蝶客户端在线的时候,蝴蝶服务会通过【ClientID】直接将通知推送给客户端。否则,消息会被暂时存储。通知接收蝴蝶客户端收到通知后,会根据【ApplicationID】和【ClientID】找到本地对应的应用。最终将通知的内容以函数回调、进程间通讯、文件共享等方式传递给第三方客户端程序。传递方式取决于各个平台的实现。约束:由于蝴蝶的特性,一般通知应该是比较小的数据。目前限定为不大于2KB的二进制数据。较大数据可以由第三方客户端收到通知后,再通过独立的协议与第三方服务器进行交互获取。话适寇饲猫墒轩垛镁目喷恰贷羞萌竹硬捆兴旧棕况益校眼窿衫仍禽饺癣驭蝴蝶云推送蝴蝶云推送AllRightsReservedby©2011LenovoGroup如何使用蝴蝶推送通知:第三方服务器可以通过HTTP协议,向蝴蝶提交要推送的数据。第三方服务器需要遵循如下规则来提交数据:•使用POST发送数据•通知内容作为Request的Body•Content-Type头的值为“application/octet-stream”•通知长度不超过2K•系统采用HTTP-BASIC的身份验证方式,客户端需要将【ApplicationID】作为用户名,【ApplicationKey】作为密码。•第三方服务器可以通过名为“exptime”的Header来控制消息的有效期。Value是消息的有效期,以秒为单位。消息的最大有效期为24小时。•点对点推送,需要将数据POST至:http://push-api-0./service/client/【ClientI