uni-app 在Hbuilder9.129版建立的移动APP工程实现的本地消息在Hbuilder3.812的5+app中无反应
uni-app 在Hbuilder9.129版建立的移动APP工程实现的本地消息在Hbuilder3.812的5+app中无反应
产品分类
HTML5+
开发环境
项目 | 信息 |
---|---|
HBuilderX版本号 | 3.8.12 |
手机系统 | Android |
手机系统版本号 | Android 8.1 |
手机厂商 | 华为 |
手机机型 | BKK-AL10 |
打包方式 | 云端 |
示例代码
<body style="margin-top: 0">
<!--====1====-->
<!--====2====-->
<script type="text/javascript">
function tz(){
alert('运行开始')
var NotifyID = 1;
var Context = plus.android.importClass("android.content.Context");
var main = plus.android.runtimeMainActivity();
var Noti = plus.android.importClass("android.app.Notification");
var NotificationManager = plus.android.importClass("android.app.NotificationManager");
var nm = main.getSystemService(Context.NOTIFICATION_SERVICE)
var Notification = plus.android.importClass("android.app.Notification");
var mNotification = new Notification.Builder(main);
//mNotification.setOngoing(true);//-------不能清除
mNotification.setContentTitle("提醒2") //-------标题
mNotification.setContentText("您有新的消息,请注意查收。") //-------内容
mNotification.setSmallIcon(17301610)//-------图标
mNotification.setTicker("提示文字文字"); //通知首次出现在通知栏时的效果
mNotification.setDefaults(Noti.DEFAULT_ALL);//声音、闪灯、震动效果,可叠加---->震动
mNotification.setDefaults(Noti.DEFAULT_SOUND);//声音、闪灯、震动效果,可叠加---->声音
mNotification.setDefaults(Noti.DEFAULT_LIGHTS);//声音、闪灯、震动效果,可叠加---->呼吸灯
mNotification.setTicker("PadInfo")//-------类别(平板信息)__//弹出通知
mNotification.setNumber(10)
var mNb = mNotification.build()
nm.notify(NotifyID,mNb);
alert('运行结束')
}
</script>
<input id="Submit22" name="Submit22" type="submit" value="测试开始22" onclick="tz()" />
</body>
操作步骤
Hbuilder9.129中运行一切正常,手机本地消息正常出现(真机基座运行正常) Hbuilder3.812的5+app一点反应都没有
预期结果
Hbuilder3.812的5+app中正常运行
实际结果
Hbuilder3.812的5+app一点反应都没有
bug描述
在Hbuilder9.129版建立的移动APP工程实现的本地消息在Hbuilder3.812的5+app就没反应了,代码是一样的。 Hbuilder9.129中运行一切正常,Hbuilder3.812的5+app一点反应都没有 运行到android app基座运行、云打包运行都一样 反复修改、测试实在没办法了!不知道问题在什么地方! 请高人们指点、指定。
在处理从uni-app(使用HBuilder 9.129版本)开发的移动APP工程到HBuilder 3.812版本的5+ App(DCloud的5+ Runtime)迁移过程中本地消息无反应的问题时,主要需要考虑两个版本之间的API兼容性和实现差异。以下是一个基本的示例代码和可能的解决方案,展示如何在uni-app中发送本地消息,并确保这些消息在5+ App中能够被正确处理。
在uni-app中发送本地消息
在uni-app中,你可以使用plus.push.createMessage()
方法来创建并发送本地消息。以下是一个简单的示例:
// 发送本地消息的示例代码
plus.push.createMessage({
title: "本地通知标题",
content: "这是本地通知的内容",
cover: false, // 是否覆盖之前的通知
extras: {
key1: "value1",
key2: "value2"
}
}, function(e) {
if (e.code == 0) {
console.log("本地消息发送成功");
} else {
console.error("本地消息发送失败:" + e.msg);
}
});
在5+ App中接收并处理本地消息
在5+ App中,你需要监听plus.push.addEventListener()
事件来接收本地消息。确保在manifest.json
中已正确配置了推送权限。
// 在应用启动时添加推送事件监听
document.addEventListener('plusready', function() {
plus.push.addEventListener('receive', function(msg) {
if (msg.aps || msg.payload) { // 处理远程推送消息(如果是iOS)
// 处理远程推送逻辑
} else { // 处理本地推送消息
console.log("收到本地消息:", msg.title, msg.content, msg.extras);
// 在这里添加处理本地消息的逻辑,比如显示弹窗等
if (msg.extras && msg.extras.key1) {
alert("Extra Data: " + msg.extras.key1);
}
}
});
});
注意事项
- API兼容性:确保
plus
对象及其方法在两个版本的5+ Runtime中都是可用的。某些API可能在旧版本中不存在或行为有所不同。 - 权限配置:检查
manifest.json
文件,确保所有必要的权限(如推送通知权限)都已正确配置。 - 调试和日志:使用HBuilder的控制台输出日志,检查消息是否成功发送和接收,以及是否有任何错误信息。
- 版本差异:考虑到HBuilder 3.812是一个较旧的版本,可能存在一些已知的bug或不支持的特性。如果可能,考虑升级到更新的版本。
通过上述代码和注意事项,你应该能够在5+ App中正确处理从uni-app发送的本地消息。如果问题依旧存在,建议查阅DCloud官方文档或社区论坛获取更多帮助。