iOS push

https://www.jianshu.com/p/213641cf524a

https://www.jianshu.com/p/f9bef7e7a4ab

 

https://www.cnblogs.com/cy568searchx/p/5521545.html

 

PushKit是一种新的消息通知方式,旨在帮助voip应用(iOS 8)和watch OSComplication(iOS 9)减少电池的使用,提供更好的用户体验,app可以通过PushKit进行唤醒,进行一些操作,而不被用户感知。

PushKit和APNS的区别

  • APNS 远程推送 ,在每次启动时只能获取到一条推送内容,并且相应的处理必须在用户进行一定的操作后才能执行。而PushKit可以在无操作的情况就能进行消息的处理。
  • APNS需要获取用户的权限,如果用户不同意接收推送,那么app就获取不到deviceToken,相应我们也就没办法推送给客户端消息,而PushKit则可以,当然如果用户拒绝接收通知栏等推送,你想在PushKit的代理方法中,进行本地推送,也是不可以的。
  • PushKit类似于APNS的静默推送,但是在送达率上比静默推送可靠的多,用户是可以没有任何感知的。


实验结果:
1)APP在前台,收到PushKit推送后,发送本地推送,APP不提示;(与其他remote notification一致);
2)APP在后台,或者被closed的状态下,都能收到PushKit推送,并发出本地推送。我在另外一个稍微复杂点的测试中,在收到PushKit推送和发送本地推送之间,加入了根据message id在服务器获取消息具体内容的操作,也是正常的,可见在APP closed时,由PushKit推送调起的网络访问也是正常的。
3)APNs silent push优先级最低,然后是APNs普通推送,优先级最高的是PushKit推送。
4)APNs silent push和PushKit推送都能在APP处于后台的时候,唤醒APP,运行30s,不同的是silent push在APP closed(用户手动killed,手机重启或者APP被系统回收)时不能唤醒APP,现象就是APP没有反应,而PushKit在APP closed的时候,仍然能够唤醒APP,执行一段代码。

猜测,在APP closed状态下,系统收到silent push后其实有能力执行APP的一段代码,只不过silent push优先级低,所以被忽略了~

 


 
 
posted @ 2019-04-29 08:50  willbin  阅读(338)  评论(0编辑  收藏  举报