DCloud_UNI_CHB
DCloud_UNI_CHB
  • 发布:2017-11-20 22:02
  • 更新:2021-08-05 15:12
  • 阅读:27390

消息推送 - wap2app教程

分类:wap2app

wap2app应用目前支持集成个推平台,可以向用户发送推送消息。

wap2app的推送开发,分为三个部分:

  1. 个推平台申请账号及应用登记,获取应用的appid、appkey、appsecret参数;
  2. 本地manifest.json中配置推送权限及个推参数
  3. 本地app.js中编写推送消息监听代码

其中,前两项和5+ App的配置方法相同,参考推送插件开发指南即可,其中有推送原理的详细说明;为了便于理解,这里再次简述一下推送的相关概念。

推送概念简述

推送消息分为普通推送和透传推送,区别在于:

  • 普通推送只有消息标题和消息内容;
  • 透传消息除了消息标题、消息内容外,还有payload字段,payload是一个json对象,可以包含业务自定义参数,比如新闻ID等。

wap2app应用支持click、receive两种事件监听推送消息,主要区别在于:

  • 进入手机消息中心的推送,用户点击后触发click事件
  • 透传消息不符合规范或iOS应用正处于前台运行时收到推送,此时消息不会进入手机消息中心,而会直接触发receive事件。

Tips:Android平台的普通消息会进入消息中心,但用户点击后仅激活应用,不会触发click事件。

为了完整实现,需要在代码中同时监听click事件和receive事件。

wap2app中的推送监听

wap2app应用需要在app.js的onLaunch事件中监听推送消息,本示例接收透传消息,透传消息中包含新闻ID,用户点击推送消息后,直接打开新闻详情,实现消息直达的需求;推送内容如下:

{title:"推送标题",content:"推送内容",payload:{id:1001}}

示例代码如下:

/**  
 * 当wap2app初始化完成时,会触发 onLaunch  
 * @param {Object} options  
 */  
onLaunch: function (options) {  
  //应用初始化  

  /******推送消息监听代码开始******/  

  //监听click事件,用户从消息中心点击触发的  
  plus.push.addEventListener("click", function (msg) {  
    console.log("You clicked: " + msg.title); //推送消息标题  
    console.log("You clicked: " + msg.content); //推送消息内容  
    //根据payload传递过来的数据,打开一个详情  
    var payload = msg.payload;  
    if (payload) {  
      // payload 按照规范是 Object,但实际推送过来有可能是 String,需要多一步处理;  
      if (typeof payload === 'string') {  
        payload = JSON.parse(payload);  
      }  
      if (typeof payload === 'object') {  
        //payload是一个json对象,可以传递业务数据,开发者可以根据实际需求自定义参数  
        //本示例在payload中传入新闻id,wap2app接收到推送后,直接打开新闻详情  
        var detailId = payload.id;  
        //wap2app.open(url)可以直接打开对应的webview  
        //这里是示例,实际项目中开发者需根据M站的url拼接页面地址  
        wap2app.open('https://m.example.com/detial/' + detailId + '.html');  
      }  
    }  
  }, false);  

  //监听receive事件  
  plus.push.addEventListener("receive", function (msg) {  
    console.log("recieve title: " + msg.title); //推送消息标题  
    console.log("recieve content: " + msg.content); //推送消息内容  
    //根据payload传递过来的数据,打开一个详情  
    var payload;  
    if (msg.payload) {  
      //如透传消息不符合格式,则“payload”属性为string类型  
      //这里的示例以json字符串去解析,实际上也可以做字符串匹配  
      if (typeof (msg.payload) == "string") {  
        try {  
          payload = JSON.parse(msg.payload);  
        } catch (error) {  
          console.log(error);  
        }  
      } else if (typeof (msg.payload) == "object") {  
        //iOS应用正处于前台运行时收到推送,也触发receive事件,此时payload为json对象  
        payload = msg.payload;  
      }  

      if (payload) {  
        //本示例在payload中传入新闻id,wap2app接收到推送后,直接打开新闻详情  
        var detailId = payload.id;  
        //wap2app.open(url)可以直接打开对应的webview  
        //这里是示例,实际项目中开发者需根据M站的url拼接页面地址  
        wap2app.open('https://m.example.com/detial/' + detailId + '.html');  
      }  
    }  

  }, false);  

  /******推送消息监听代码结束******/  
}
2 关注 分享
Neil_HL Trust

要回复文章请先登录注册

书无理

书无理

回复 DCloud_UNI_CHB :
__W2A__youhuiquan.cloudsand.cn
2018-01-23 19:54
DCloud_UNI_CHB

DCloud_UNI_CHB (作者)

回复 书无理 :
HBuilder顶部菜单,发行-- >发行流应用
2018-01-22 14:59
书无理

书无理

回复 DCloud_UNI_CHB :
请问在哪里提交测试版,
2018-01-22 13:37
DCloud_UNI_CHB

DCloud_UNI_CHB (作者)

回复 书无理 :
提交一下流应用测试版,然后给出appid,我们跟进一下问题
2018-01-22 01:23
书无理

书无理

按照这段代码,写结果还是只打开APP,没有到具体的页面
2018-01-22 00:57