Apple Push Notification的一些总结

一.原理性介绍及编程入门文章

1.官方文档

http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

2.Iphone的Push(推送通知)功能原理浅析

http://xiaolife.com/wordpress/an-introduce-to-iphone-push/

2.iphone push notification 消息推送

http://blog.csdn.net/linkai5696/article/details/6316929

4.编程指导

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

http://www.raywenderlich.com/3525/apple-push-notification-services-tutorial-part-2

 

二.IPhone激活的目的

IPhone激活的目的是获得苹果颁发的设备证书和密钥,激活成功后,苹果服务器会将证书下发到Iphone上保存。

IPhone一开机就用此设备证书和密钥来和苹果公司的APNS建立一条TLS安全连接(长连接),所有的push消息都是通过这条连接下发到手机上的。

一些解锁的手机跳过了激活过程,也就获取不到合法的设备证书和密钥,和APNS建立不起TLS连接,push功能也就失效了。

 

三.设备证书/密钥/设备令牌

设备证书和密钥是在手机激活时获得的,是用来和APNS建立TLS连接用的。手机一开机就试图建立TLS链接,所有的push消息都是通过此链接下发给手机的。

设备令牌是Iphone上的应用程序注册push功能时,APNS下发给APP的唯一标识,通过设备令牌,APNS可以唯一定位一个Iphone和此Iphone上的哪个app。所以消息发送者给APNS发送消息时,需要携带发送目的地的设备令牌。

 

四.Push消息的可靠性

1.当APNS发送消息给设备,但设备离线时,APNS将在一定时间内(没有找到具体的时间定义)缓存这条消息,超过时间将删除它。但是对于一个设备的一个应用,APNS只缓存最后一条消息,也就是对应一个device token只能缓存一条消息;

2.当推送一条消息给某个设备上的某个应用,但是此应用已经被用户卸载了,则设备将拒绝接收,并告诉APNS应用不存在,APNS将会记录下来此device token。用户的发送服务器(provider)应该定期去feedback.push.apple.com或sandbox.feedback.push.apple.com上获取失效的devicetoken,避免再次向失效的device token发送信息。

 

五.Push机制的耗电量

正常情况下Iphone会和APNS建立一条TLS长连接,在没有数据的情况下,IPhone会每隔15分钟发送一条保活消息,消息也非常短,所以基本上不会消耗太多电力。

但是如果在网络异常的情况下,Iphone会定期向APNS尝试建立TLS连接,这个连接过程要稍微复杂一些,常常会消耗较多的电力。

 

六.网络异常的情况

在cmwap网络中,是不能建立起TLS连接的,所以要检查蜂窝数据设置中APN是否设置为cmnet;

在wifi网络中,如果无线路由器开启了DNS转发功能,那么iphone也很有可能无法成功与APNS服务器建立TLS链接;可关闭路由器的DNS转发功能,手动为Iphone的wifi链接设置DNS为8.8.8.8

 

七.为什么要建立用户的发送服务器

当然,如果发送者知道目的设备的device token,那么理论上在任何机器上都可以作为provider发送push 消息,但是device token是一个32字节的数字,要记住它非常不容易。所以一般的实现方案中,要架设用户的发送服务器(provider),让每个设备向发送服务器登记自己的device token和昵称,发送方告诉服务器接收者的昵称,由发送服务器查找出devicetoken发送即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值