uni-app 在Hbuilder9.129版建立的移动APP工程实现的本地消息在Hbuilder3.812的5+app中无反应

发布于 1周前 作者 vueper 来自 Uni-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基座运行、云打包运行都一样 反复修改、测试实在没办法了!不知道问题在什么地方! 请高人们指点、指定。


1 回复

在处理从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);
            }
        }
    });
});

注意事项

  1. API兼容性:确保plus对象及其方法在两个版本的5+ Runtime中都是可用的。某些API可能在旧版本中不存在或行为有所不同。
  2. 权限配置:检查manifest.json文件,确保所有必要的权限(如推送通知权限)都已正确配置。
  3. 调试和日志:使用HBuilder的控制台输出日志,检查消息是否成功发送和接收,以及是否有任何错误信息。
  4. 版本差异:考虑到HBuilder 3.812是一个较旧的版本,可能存在一些已知的bug或不支持的特性。如果可能,考虑升级到更新的版本。

通过上述代码和注意事项,你应该能够在5+ App中正确处理从uni-app发送的本地消息。如果问题依旧存在,建议查阅DCloud官方文档或社区论坛获取更多帮助。

回到顶部