uni-app dcloud老是读取已安装APP信息

uni-app dcloud老是读取已安装APP信息

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

操作步骤:

  • dcloud老是读取已安装APP信息

预期结果:

  • dcloud不读取已安装APP信息

实际结果:

  • dcloud老是读取已安装APP信息

bug描述:

  • dcloud和个推老是读取已安装APP信息,调用栈已经打印

App下载地址或H5网址:


更多关于uni-app dcloud老是读取已安装APP信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

附件调用栈已经上传

更多关于uni-app dcloud老是读取已安装APP信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html


顶顶顶顶顶

HBuilder X 4.0 修复过读取应用列表的情况,更新之后重新提交打包再检测一下,如果代码中有调用plus.runtime.isApplicationExist也建议去掉。

4.0.2024012711-alpha,这个版本吗

回复 小七ing: 最新版,HBuilder X4.02版本

回复 DCloud_Android_zl: 是正式版吗?正式版没有4.02啊

回复 小七ing: alpha版

在使用 UniApp 开发应用时,如果你发现 DCloud 相关的模块(如 plus.runtime)频繁读取已安装的 APP 信息,可能是由于以下原因导致的:


1. 正常功能需求

  • plus.runtime 是 UniApp 提供的原生扩展模块,用于获取设备信息和已安装的应用程序信息。
  • 某些功能(如检查是否安装了某个应用、获取应用版本号等)需要调用 plus.runtime 接口,这属于正常行为。

2. 频繁读取的可能原因

  • 代码逻辑问题:如果你的代码中频繁调用了 plus.runtime 相关接口(如在 onShow 或定时器中调用),会导致频繁读取已安装的 APP 信息。
  • 插件或 SDK 问题:某些第三方插件或 SDK 可能会在内部调用 plus.runtime,导致频繁读取。
  • 调试模式:在开发模式下,UniApp 可能会频繁调用某些接口以监控应用状态。

3. 解决方法

  • 优化代码逻辑
    • 避免在 onShow 或频繁触发的函数中调用 plus.runtime 接口。
    • 将获取到的信息缓存起来,避免重复调用。
    let appListCache = null;
    function getAppList() {
        if (!appListCache) {
            appListCache = plus.runtime.getAppList();
        }
        return appListCache;
    }
    
  • 检查第三方插件
    • 如果使用了第三方插件,检查其是否频繁调用 plus.runtime,必要时联系插件开发者优化。
  • 关闭调试模式
    • 在发布版本中,确保关闭调试模式,减少不必要的接口调用。

4. 进一步排查

  • 使用 console.log 或调试工具,定位具体是哪个模块或代码段频繁调用 plus.runtime
  • 检查 manifest.json 中的配置,确保没有不必要的权限或模块引入。

5. 隐私合规性

  • 如果你的应用需要读取已安装的 APP 信息,确保符合隐私政策,并在用户同意的情况下进行。
  • manifest.json 中声明相关权限:
    "permissions": {
        "runtime": {
            "description": "获取应用信息"
        }
    }
回到顶部