之前做的消息推送,向Android和ios客户端推送。这里只说ios的推送,ios的推送最后都会推送到苹果的APNS服务器上,再有APNS服务器推送到ios设备上。因为考虑到这一点,第一版的消息推送苹果的采用了直接推送到苹果的APNS服务器上。
1) 基于 JavaPNS 2.2 的实现
参考地址 : http://www.cnblogs.com/lihaozy/archive/2013/03/13/2957904.html
参考地址2:http://511930751.iteye.com/blog/1595298
jar 下载: http://code.google.com/p/javapns/downloads/detail?name=JavaPNS_2.2.jar&can=2&q=
不足之处在于推送多个设备的时候中间有一个的UDID不正确,会导致APNS连接断开,后面的都无法完成推送。(我的判断是 UDID length == 64)
2) 直接使用 APNS 推送
参考地址 : https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW21
客户端需要每次登陆后上传UDID(去年,UDID就不会变,因为UDID泄露,广告到处都是,今年的时候发现UDID会变)。
中文参考 : http://www.cocoachina.com/applenews/devnews/2014/0528/8582.html
3) 其它第三方的
极光(api调用频率600/min,标签支持不限制)、
个推、
百度、
信鸽(标签只支持1W个,api频率基本不限制,目前不收费,ios和android的客户端推送accessid\secretkey是分开的)……
ios的推送国际化(固定的词语)
之前做摄像机消息推送的时候,比如移动侦测,布防什么的,开始只推送出去的是中文的,最后需要国际化,使用的就是下面的方法
参考官方文档
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW21
{ "aps" : { "alert" : { "loc-key" : "GAME_PLAY_REQUEST_FORMAT", "loc-args" : [ "Jenna", "Frank"] }, "sound" : "chime" }, "acme" : "foo" }
loc-key 客户端设置一个多语言的字典,推送到达,系统自动显示不用的语言,没有的话就是原始值。
如果alert里面什么都不写,ios设备是不会显示的。
4) git 上的
参考地址 https://github.com/hengyunabc/zpush