y***@126.com
y***@126.com
  • 发布:2018-08-30 15:05
  • 更新:2021-03-30 18:17
  • 阅读:4598

个推的推送成功解决

分类:HTML5+

首先声明,个推推送,官方文档是,android可以推送通知和透传消息,ios只能推送透传消息。
但在mui实现的时候,android端推送的通知,点击以后无法监听。经过苦逼的程序猿的苦苦探求,终于发现可以解决的一种方式了:
首先推送的时候,不能用通知推送,用透传消息的方式进行推送(透传消息可以监听到的),然后通过mui的的创建通知的方法,把获取的到的透传消息转为通知,这个时候的通知点击的时候就可以监听了,这个方法本人经过试验,可以成功的。代码如下

  
  
document.addEventListener("plusready", function() {  
  
	// 监听点击消息事件  
	plus.push.addEventListener("click", function(msg) {  
  
//		showAlert(JSON.stringify(msg))  
		switch(msg.payload) {  
			case "LocalMSG":  
				showAlert("点击通知本地创建消息启动:" + msg.content);  
				break;  
			default:  
				showAlert("点击离线推送消息启动:" + msg.content);  
				break;  
		}  
		   
	}, false);  
  
	// 监听在线消息事件  
	plus.push.addEventListener("receive", function(msg) {  
		if(msg.aps) { // Apple APNS message  
			showAlert("接收到在线APNS消息:");  
		} else {  
			showAlert("接收到在线透传消息:" + msg.content );  
		}  
		createLocalPushMsg(msg);  
	}, false);  
	  
}, false);  
  
function showAlert(tiltle) {  
	alert(tiltle);  
}  
  
  
  
function bindAlias(alias) {  
	var PushManager = plus.android.importClass("com.igexin.sdk.PushManager");  
	var mainActivity = plus.android.runtimeMainActivity();  
	var i = PushManager.getInstance().bindAlias(mainActivity, alias);  
}  
  
function unbindAlias(alias) {  
	var PushManager = plus.android.importClass("com.igexin.sdk.PushManager");  
	var mainActivity = plus.android.runtimeMainActivity();  
	var i = PushManager.getInstance().unBindAlias(mainActivity, alias);  
}  
  
function getClientid() {  
  
	var PushManager = plus.android.importClass("com.igexin.sdk.PushManager");  
	var mainActivity = plus.android.runtimeMainActivity();  
	return PushManager.getInstance().getClientid(mainActivity);  
  
}  
  
//创建本地通知  
function createLocalPushMsg(msg){  
	  
    var options = {cover:false};  
    var str = msg.content;  
    plus.push.createMessage( str, "LocalMSG", options );  
}  
  
//拉起服务的代码是这样的 :这个代码经测试,有或没有都可以收到通知消息  
function startService() {  
	var main = plus.android.runtimeMainActivity();  
	var Intent = plus.android.importClass('android.content.Intent');  
	var intent = new Intent();  
//	var serviceName = 'com.igexin.sdk.PushServiceForUser';  
		  var serviceName = 'com.igexin.sdk.PushService';//把这里换成其他Service的名字,也可以实现拉取自定义的Service  
	intent.setClassName(main, serviceName);  
	main.startService(intent);  
}  

0 关注 分享

要回复文章请先登录注册

l***@163.com

l***@163.com

这到底写在那个文件 这个功能详细讲解都没有
2021-03-30 18:17
1***@163.com

1***@163.com

哥这个样式到后来你有改吗
2019-03-13 16:29