___K
___K
  • 发布:2017-05-20 14:49
  • 更新:2020-08-01 09:45
  • 阅读:6348

透传消息分享(安卓和IOS)

分类:HTML5+

IOS是6,安卓是华为。安卓手机在线和后台能接受到推送信息,退出的话接受不到,苹果手机的APP在不在线都可以接受到推送。
后台代码没有弄,是通过个推上的透传消息进行的推送。客户端代码如下:

//消息推送  
mui.plusReady(function() {  

    // 监听点击消息事件  
    plus.push.addEventListener( "click", function( msg ) {  
        var payload=(plus.os.name=='iOS')?msg.payload:JSON.parse(msg.payload);  
    }, false );  

    // 监听在线消息事件  
    plus.push.addEventListener( "receive", function( msg ) {  
        logoutPushMsg( msg );  
    }, false );  

});  

//获取穿透参数  
function logoutPushMsg( msg ) {  
    if ( msg.payload ) {  
        if ( typeof(msg.payload)=="string" ) {  
            createLocalPushMsg(msg.content);  
        } else {  
            var data = JSON.parse(msg.payload);  
            createLocalPushMsg(data.content);  
        }  
    } else {  
        console.log( "payload: undefined" );  
    }  
}  

//创建本地推送  
function createLocalPushMsg(content){  

    var options = {cover:false,};  
    plus.push.createMessage(content, "LocalMSG", options );  
    if(plus.os.name=="iOS"){  
        alert('*如果无法创建消息,请到"设置"->"通知"中配置应用在通知中心显示!');  
    }  

}

PS:IOS的话证书有两份,一份是上传到个推的,一份是打包用的。可以参考网站:http://docs.getui.com/mobile/ios/apns/

1 关注 分享
915833445@qq.com

要回复文章请先登录注册

白色风车

白色风车

承接前端H5、小程序、APP、PC端网站等外包,主要技术栈为vue、uni-app,有意请加微信:13192733603(我是前端,找有渠道接外包的服务端合伙人)
2020-08-01 09:45
风云杭州

风云杭州

plus.push.createMessage 创建的本地消息,弹出后,用户点击是不是没反应呀
2020-07-31 23:08
指尖上的代码

指尖上的代码

plus.push.createMessage 创建两遍是怎么处理的 他默认 会多执行一次透传事件
2020-04-28 10:48
768720281@qq.com

768720281@qq.com

```
//监听推送的点击事件
//监听click事件,用户从消息中心点击触发的
plus.push.addEventListener("click", function(msg) {
//根据payload传递过来的数据,打开一个详情
console.log(msg);
console.log(that.$store.state.userInfo);
var payload = msg.payload;
if(that.$store.state.userInfo!=null){
uni.navigateTo({
url: '/pages/my/mymessage/mymessage'
})
console.log(msg)
}else{
console.log('click未登录')
}
}, false);
//监听receive事件//监听推送的接受事件
plus.push.addEventListener("receive", function(msg) {
console.log(msg)
console.log(that.$store.state.userInfo);
if(that.$store.state.userInfo!=null){//判断是否登录
if(typeof(msg) != "object"){
var msg = JSON.parse(msg);
}
if (plus.os.name != 'iOS') {
var options={};
options.title=msg.title;
if(msg.title=="下线通知"){
uni.reLaunch({
url:'/pages/index/login?sate=true',
})
}
plus.push.createMessage(msg.content, msg.payload,options);
}else if(msg.aps){
console.log(msg.aps)
}
else{
switch (msg.payload) {
case "LocalMSG":
break;
default:
//测试本地推送
var iosmsgstr = msg.content.replace(/\'/g, '"')
var iosmsg=JSON.parse(iosmsgstr);
var options = {cover: false};
if(iosmsg.title=="下线通知"){
uni.reLaunch({
url:'/pages/index/login?sate=true',
})
}
plus.push.createMessage(iosmsg.content, "LocalMSG", options);
break;
}
}
}else{
console.log('receive未登录')
}
}, false);
```
2019-07-09 17:44
1537372393@qq.com

1537372393@qq.com

回复 1044853574@qq.com :
JSON.parse(string)
2019-07-09 17:24
17775039497@163.com

17775039497@163.com

ios收不到啊
2019-03-14 14:42
1044853574@qq.com

1044853574@qq.com

各位大神,在监听点击消息事件时是安卓系统,所以payload=JSON.parse(msg.payload)中payload赋值不成功,我看http://ask.dcloud.net.cn/article/1041最后说的安卓解析的msg.payload是string类型的,要转换为JSON数组,怎么转换?
2018-10-16 10:47
920436794@qq.com

920436794@qq.com

楼主,我的ios只能在打开写了这段代码的那个页面时,发透传消息才有推送显示,退出app就不行了,求解~~!!
2018-09-04 17:31
625467820@qq.com

625467820@qq.com

回复 回梦無痕 :
请问创建本地消息,这么添加参数区分本地和非本地
2018-04-18 09:09
404630028@qq.com

404630028@qq.com

回复 1021738078@qq.com :
看不懂
2017-07-19 13:37