uni-app 插件讨论 获取不到 plus.runtime.appid

发布于 1周前 作者 itying888 来自 Uni-App

uni-app 插件讨论 获取不到 plus.runtime.appid

首先作者的思路很好
但是不知道为啥const { appid } = plus.runtime as PlusRuntime 这个获取到的 appidUNI8fjdfsdf 这种格式的,期望是包名

1 回复

在uni-app中,plus.runtime.appid 是 HBuilderX 打包成原生应用(如Android或iOS)后才能获取到的属性,用于标识应用的唯一ID。如果你在开发过程中或者在非原生环境下(如H5、小程序)尝试访问这个属性,会遇到获取不到值的情况。

首先,确保你的应用已经被打包为原生应用,并且是在原生环境中运行。以下是一些代码示例,展示如何在uni-app中正确使用plus.runtime.appid

在条件编译中使用

由于plus对象在非原生环境下不可用,你可以使用uni-app的条件编译特性来确保代码只在原生环境下执行。

// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.APPID, function(info){
    console.log("App ID: " + info.value);
});
// #endif

这段代码会在编译为原生应用时生效,而在H5或小程序中则会被忽略。

在页面加载时获取

你也可以在页面的onLoadonShow生命周期钩子中尝试获取plus.runtime.appid,同样需要配合条件编译使用。

export default {
    onLoad() {
        // #ifdef APP-PLUS
        plus.runtime.getProperty(plus.runtime.APPID, function(info){
            this.appId = info.value;
            console.log("App ID in onLoad: " + this.appId);
        }.bind(this));
        // #endif
    },
    data() {
        return {
            appId: ''
        };
    }
}

注意,由于plus API是异步的,这里使用了.bind(this)来确保回调函数中的this指向Vue组件实例。

注意事项

  1. 确保环境:务必确认你的应用是在原生环境下运行,如已经通过HBuilderX打包成APK或IPA文件安装在设备上。
  2. 权限问题:虽然获取appid通常不需要额外权限,但确保你的应用拥有必要的运行时权限,特别是针对Android 6.0及以上版本。
  3. 调试工具:使用真机调试而非模拟器,因为模拟器可能不支持所有plus API。

通过上述方法,你应该能够在uni-app的原生应用中正确获取到plus.runtime.appid。如果仍然遇到问题,请检查你的打包配置和原生环境设置。

回到顶部