首先声明,个推推送,官方文档是,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);
}
2 个评论
要回复文章请先登录或注册
l***@163.com
1***@163.com