uni-app 安卓APP不在线时点击推送信息不触发 plus.push.addEventListener 函数
uni-app 安卓APP不在线时点击推送信息不触发 plus.push.addEventListener 函数
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win 11 | HBuilderX |
示例代码:
plus.push.addEventListener(‘click’, (msg) => {
if(plus.os.name==‘iOS’){
var payload = msg.payload;
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
//获取应用图标的数量
var oldNum = app.applicationIconBadgeNumber();
if (oldNum != 0) {
//console.log('角标取值', oldNum);
// console.log("oldNum:"+oldNum);
var newNum = oldNum - 1;
//设置应用图标的数量
plus.runtime.setBadgeNumber(newNum);
//导入个推原生类
var GeTuiSdk = plus.ios.importClass('GeTuiSdk');
GeTuiSdk.setBadge(newNum);
console.log(payload);
if (payload.type == "tab") { //跳转订单页面
uni.switchTab({
url:'/'+payload.path,
complete:(res)=>{
console.log(JSON.stringify(res));
}
});
}else if (payload.type == "nav") { //跳转订单页面
uni.navigateTo({
url:'/'+payload.path,
complete:(res)=>{
console.log(JSON.stringify(res));
}
});
}
}
}else{
console.log(6666);
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
let curRoute = routes[routes.length - 1].route //获取当前页面路由
var luyou_num=curRoute.split('/').length-1;
var qpath='';
for(var i=0;i<luyou_num;i++){
qpath=qpath+'../';
}
console.log(qpath);
var args = plus.runtime.arguments;
console.log(args);
var data = JSON.parse(args);
var payload = JSON.parse(data.payload);
plus.runtime.setBadgeNumber(0);
console.log(payload);
if (payload.type == "tab") { //跳转订单页面
uni.switchTab({
url:qpath+payload.path,
complete:(res)=>{
console.log(JSON.stringify(res));
}
});
}else if (payload.type == "nav") { //跳转订单页面
uni.navigateTo({
url:qpath+payload.path,
complete:(res)=>{
console.log(JSON.stringify(res));
}
});
}
}
});
### 操作步骤:
安卓应用不在线点击推送信息启动APP无法跳转页面,但安卓应用在线时,页面可以跳转,在监听函数反复调试输出打印完全没有输出打印数据
### 预期结果:
安卓应用不在线点击推送信息启动APP无法跳转页面,但安卓应用在线时,页面可以跳转,在监听函数反复调试输出打印完全没有输出打印数据
### 实际结果:
安卓应用不在线点击推送信息启动APP无法跳转页面,但安卓应用在线时,页面可以跳转,在监听函数反复调试输出打印完全没有输出打印数据
### bug描述:
plus.push.addEventListener
控制台打印调试无法进入该监听
更多关于uni-app 安卓APP不在线时点击推送信息不触发 plus.push.addEventListener 函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html
您发送推送消息的时候,传了intent字段了么?
更多关于uni-app 安卓APP不在线时点击推送信息不触发 plus.push.addEventListener 函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是的
$androidnotif->setClickType(‘intent’);//intent:打开应用内特定页面(厂商都支持),url:打开网页地址(厂商都支持,华为要求https协议),startapp:打开应用首页(厂商都支持) //$androidnotif->setUrl(‘https://shfw:pages/index/index’);//打开应用地址 setClickType为url必填 $androidnotif->setIntent(‘intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=uni.UNIF0F5EEF/io.dcloud.PandoraEntry;S.title=’.$this->title.’;S.content=’.$this->body.’;S.payload=’. $this->path .’;end’);//打开应用地址 setClickType为intent必填
离线推送不用这个intent那用那个呢?
回复 c***@126.com: intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end
注意事项:
component=io.dcloud.HBuilder/io.dcloud.PandoraEntry,其中 io.dcloud.HBuilder 为 App 包名,需要替换为自己 App 的包名,与 App 云端打包界面设置的 Android 包名一致。
回复 c***@126.com: 你发的intent内容没有 UP-OL-SU标志。
回复 DCloud_Android_THB: 安卓加了标志后 能触发click了 但是苹果还是不行 苹果也要加什么标识吗 我是在dcloud的后端 做的调试
请问最后怎么解决的 我这个APP也是IOS能触发 安卓无法触发
我估计安卓性能太差,需要设置延时调用才行
这个问题是安卓APP在离线状态下点击推送消息时,推送事件监听器没有被触发的常见问题。以下是关键点分析:
-
对于安卓离线推送的处理,需要在应用启动时检查plus.runtime.arguments获取推送参数,而不是依赖plus.push事件监听。
-
修改方案:在应用启动生命周期中(如App.vue的onLaunch)添加以下代码:
onLaunch: function() {
// 处理离线推送
if(plus.os.name === 'Android') {
let args = plus.runtime.arguments;
if(args) {
try {
let data = JSON.parse(args);
let payload = JSON.parse(data.payload);
this.handlePushPayload(payload);
} catch(e) {
console.error('解析推送参数失败', e);
}
}
}
},
methods: {
handlePushPayload(payload) {
// 处理跳转逻辑
if(payload.type === "tab") {
uni.switchTab({url: payload.path});
} else if(payload.type === "nav") {
uni.navigateTo({url: payload.path});
}
}
}