___K
___K
  • 发布:2017-05-20 14:49
  • 更新:2021-09-19 15:07
  • 阅读:9804

透传消息分享(安卓和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 关注 分享
9***@qq.com

要回复文章请先登录注册

哈哈这是我

哈哈这是我

您好,后端怎么实现,可以给一下源码吗
2021-09-19 15:07
l***@163.com

l***@163.com

逻辑写哪页面 小白求问
2021-03-30 18:13
[已删除]

[已删除]

承接前端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
7***@qq.com

7***@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
从入门到做保安

从入门到做保安

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

1***@163.com

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

1***@qq.com

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

9***@qq.com

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