HTML5+ 推送开发

  in   tech with  0  comment

最近一直在使用 dcloud 做 HTML5+ 的 webapp 开发,产品不错,可惜文档不全,基本实现每一个复杂的功能都在摸索中完善。下面是在做推送模块中遇到的问题,记之。

推送配置

dcloud 的推送集成了 个推 ,文档挺全。《 推送插件开发指南 》里简单讲解了配置,按照这篇文章一步一步基本上可以推送成功。
消息类型

个推的消息类型分为两大类: 普通消息 和 透传消息 。

  1. 普通消息

服务器可以向安卓平台发送三种类型的普通消息“通知”“下载”“网址”,发送“通知”消息会启动HTML5+应用,如果是“下载”消息则会调用系统的下载管理器下载指定文件。点击“网址”消息则会调用系统浏览器打开指定的网址。

普通消息已经基本可以满足常用的推送类型,比如广告、更新、通知等等。

  1. 透传消息

透传消息实现复杂操作的主要途径。因为普通消息只允许发送标题、内容、图片等等基本内容。但是透传消息却允许我们发送一个 json 格式的数据对象。除了包含标题、内容、图片等基本内容外,还可以携带自定义参数。通过这个参数我们可以实现一些比较复杂的功能。比如引导用户打开特定页面、用户点击增加积分等等具有可扩展性的操作。
透传消息的格式为{title:“通知标题”,content:“通知内容”,payload:“通知去干嘛这里可以自定义”}
客户端实现

客户端主要在页面中增加监听 plus.push 的 click 和 receive 事件。

  1. click事件

应用在运行,用户点击了消息中心的消息,会触发click事件。

// 监听点击消息事件
plus.push.addEventListener( “click”, function( msg ) {
// 判断是从本地创建还是离线推送的消息
switch( msg.payload ) {
case “LocalMSG”:
outSet( “点击本地创建消息启动:” );
break;
default:
outSet( “点击离线推送消息启动:”);
break;
}
// 提示点击的内容
plus.ui.alert( msg.content );
// 处理其它数据
logoutPushMsg( msg );
}, false );

  1. receive事件

如果客户端正在前台操作,并且已经监听了receive事件,则会触发这个事件。在IOS平台,应用在前台操作时消息不会进入消息中心。

// 监听在线消息事件
plus.push.addEventListener( “receive”, function( msg ) {
if ( msg.aps ) { // Apple APNS message
outSet( “接收到在线APNS消息:” );
} else {
outSet( “接收到在线透传消息:” );
}
logoutPushMsg( msg );
}, false );

服务端实现

个推 已经有了详细的文档和对应的SDK,为了使用方便,我又对php版的sdk的推送模版选择和推送方式做了封装,地址见 https://github.com/lscho/library/blob/master/lib/push.class.php 。
其他问题

  1. 针对个人用户的推送

查看个推文档我们发现对用户需要cid,这个cid可以通过APP端使用 plus.push.getClientInfo() 来获取,返回的是一个对象。 {“clientid”:“587e96f5017afce79473942fae35461d”,“appid”:“pPyZWvH3Fa6PXba10aJ009”,“appkey”:“b7dOGlNPHR7pqwUxDhpTi4”} 。clientid即是推送标识cid。可以在用户登录的时候绑定此cid,一旦有关于此用户的操作(修改密码,提交订单等),即可针对该用户做出推送。

  1. 真机运接收不到推送信息

真机运行是使用的HBuilder基座APP,所以对应的appid和appkey不是自己填写在个推后台的,所以接收不到,必须打包再运行。

Responses