APNS是iOS生态下面的推送机制。其原理是APP启动的时候,向苹果注册,并获得一个唯一token,然后不论app是否继续在运行,都可以通过调用苹果的APNS服务,来向持有token的设备推送消息,例如顶部的通知。
一开始我也分不清,后来发现,APNS可以在应用关闭的时候,通过iOS系统的通知栏,推送消息给用户,让用户重新进入app中执行某些事情。而这些,是SSE做不到的,SSE仅仅是一套消息机制,必须有app运行的时候才有效。
参考这篇文章:https://github.com/phonegap-build/PushPlugin#automatic_installation
使用方法:
1、安装PushPlugin插件
cordova plugin add https://github.com/phonegap-build/PushPlugin.git
2、配置插件
View the code on Gist.
这个是我把官方的例子,做了一下AMD的封装,使用的方法如下。
// 加载模块 var pushNotification = require('pushNotification'); // 向消息中心注册 pushNotification.register();
1234 | // 加载模块var pushNotification = require('pushNotification');// 向消息中心注册pushNotification.register(); |
---|
然后,就没有然后了。留意tokenHandler里面的结果,收集下来,然后就可以给服务端。app启动后,就可以随时接收服务端的信息了。
嗯,APP端很简单,但是服务端涉及到各种证书,有点弄不清,然后官方的文档又都是全英,半桶水英语看得够呛。
PushPlugin为我们准备了Example目录,里面的server端有ruby的脚本供我们测试。
测试前的准备:
接下来就是看得我头晕的生成pem的过程。
客户端安装PushPlugin,并配置好register的时机,同时,在获取到token之后,将token上报给服务端。
服务端按照苹果的要求,配置好各种证书后,向持有token的设备下达消息。
不论app是否仍在运行,设备都将会受到这条消息。