uni-app中plus.device.getInfo在小米手机上弹窗提示获取通话状态和移动网络信息,导致上架不了小米

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

uni-app中plus.device.getInfo在小米手机上弹窗提示获取通话状态和移动网络信息,导致上架不了小米

图片

1 回复

在uni-app中,使用 plus.device.getInfo 方法获取设备信息时,如果遇到在小米手机上弹窗提示获取通话状态和移动网络信息,这通常是因为你的应用请求了不必要的权限,而小米应用商店对权限使用有严格的审核要求。为了避免这种情况,你可以尝试以下几种方法:

1. 精确申请所需权限

确保你的应用只申请实际需要的权限。如果不需要获取通话状态和移动网络信息,就不要在 manifest.json 中申请这些权限。检查并修改 manifest.json 中的权限配置:

"mp-weixin": { // 示例,针对微信小程序,其他平台类似
    "requiredPrivateInfos": [] // 确保这里不包含不必要的权限
},
"plus": {
    "distribute": {
        "android": {
            "permissions": [
                // 只保留必要的权限
                "android.permission.INTERNET",
                "android.permission.ACCESS_NETWORK_STATE",
                // ... 其他必要的权限
                // 移除不必要的权限,如:
                // "android.permission.READ_PHONE_STATE",
                // "android.permission.ACCESS_FINE_LOCATION"
            ]
        }
    }
}

2. 动态申请权限(如果必须)

如果确实需要某些敏感权限,可以考虑在运行时动态申请,而不是在 manifest.json 中静态声明。这可以减少用户在安装时看到的权限数量,提高过审概率。

// 示例:动态申请权限(需在用户触发某个功能时执行)
function requestPermissions() {
    const permissions = ['android.permission.READ_PHONE_STATE']; // 示例权限
    plus.android.requestPermissions(
        permissions,
        function(event) {
            const granted = event.deniedAlways.length === 0;
            if (granted) {
                console.log('Permissions granted');
                // 执行需要权限的操作
            } else {
                console.log('Permissions denied');
                // 处理权限被拒绝的情况
            }
        },
        function(e) {
            console.error('Request permissions failed: ' + JSON.stringify(e));
        }
    );
}

3. 使用替代方案

如果 plus.device.getInfo 某些信息不是必须的,考虑使用其他方式获取所需信息,或者调整应用逻辑,避免使用可能触发敏感权限的方法。

4. 提交审核说明

在提交应用审核时,提供详细的权限使用说明,解释为什么需要这些权限,以及这些权限是如何被使用的。这有助于增加过审的概率。

通过上述方法,你可以有效减少应用因权限问题而被小米应用商店拒绝上架的风险。

回到顶部