uni-app打包后启动APP询问"hbuilder"拨打电话和管理通话权限,导致APP上架市场不通过

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

uni-app打包后启动APP询问"hbuilder"拨打电话和管理通话权限,导致APP上架市场不通过

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

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:4.15

手机系统:Android

手机系统版本号:Android 10

手机厂商:小米

手机机型:小米 note

页面类型:vue

vue版本:vue3

打包方式:云端

App下载地址或H5网址:

[http://www.dincher.cn/apk/dingchi.apk](http://www.dincher.cn/apk/dingchi.apk)

bug描述:

允许"hbuilder"拨打电话和管理通话吗?uniapp打包后启动APP就有这个权限询问,导致APP上架市场不通过。manifest.json里边也加了代码

"permissionPhoneState" : {
"request" : "none",
"prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
},
"permissionExternalStorage" : {
"request" : "none",
"prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
}

15 回复

看看你被厂商驳回的信息


场景7:APP首次打开或运行中,未见使用权限对应的相关功能或服务时,提前向用户弹窗申请开启通讯录、定位、短信、录音、相机、日历等权 限。 检测结果: 存在问题 改进建议: APP业务功能所需的权限最好在对应业务功能执行时动态申请,在用户未触发相关业务功能时,不提前申请与当前业务功能无关的权限。 风险信息: APP首次打开,未见使用权限对应的相关产品或服务时,提前向用户弹窗申请开启相机权限。

这个问题是,让你不能提前弹出权限,你在app.vue中,用到了plus.xxx获取设备信息了吧,oaid啥的? 不能这么用,得在你需要用的时候再调用该api

回复 套马杆的套子: 获取权限的弹窗在使用之前一个都没调用,也没用到plus.xxxx,代码我都查过了。

回复 1***@qq.com: 你这个,像是plus.device.getOAID,你全局搜搜,看哪有

回复 套马杆的套子: 全局搜索了,没有

回复 1***@qq.com: uni.getSystemInfo这个呢

回复 套马杆的套子: 这个有啊,但我全部注释掉了,还是跳权限弹窗

只有在用的时候才调权限访问,只有VIVO手机有这个提示,小米手机我试了没有这个提示

模拟器一启动就出现这个弹窗,也看了权限设置文档,该加的代码都加上了,一直弹

全局搜索了,没有


看起来你没有认真看权限相关的文档。标准基座的弹框和应用市场的报警是两件事,你应用市场的报警是因为你启动就调用相机和相册的api了,应该在需要调用相机的时候再写相关代码,而不是刚启动就申请这个权限。如果你自己并没有写过这样的代码,那你得检查一下你用的三方插件

请问解决了吗

HBuilder标准基座的权限,和你打包的权限不一样啊,各位亲啊。 HBuilder标准基座是全部权限配齐的,不然你掉个api,还得打自定义基座。 但你打包的时候,你自己配自己要用的权限啊,不要的权限删掉

在处理uni-app打包后启动APP询问不必要的权限(如拨打电话和管理通话权限)问题时,这通常是由于代码中某些功能或库错误地请求了这些权限。为了确保APP能够顺利上架市场,我们需要检查并移除不必要的权限请求。以下是一些可能的解决步骤和相关的代码检查与修改示例。

1. 检查manifest.json文件

首先,检查manifest.json文件中是否配置了不必要的权限。在mp-weixinapp-plus等配置项中,确保没有包含拨打电话或管理通话相关的权限。

// manifest.json 示例
{
  "mp-weixin": {
    // 确保没有包含拨打电话或管理通话权限的配置
  },
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          // 检查并移除不必要的权限,如 CALL_PHONE, READ_PHONE_STATE 等
        ]
      }
    }
  }
}

2. 检查代码中的权限请求

如果manifest.json中没有明确配置这些权限,那么可能是代码中的某些库或功能在运行时请求了这些权限。检查代码中是否有以下情况:

  • 拨打电话权限(CALL_PHONE):通常与uni.makePhoneCall方法相关。如果APP中不需要拨打电话功能,确保没有调用此方法。
// 如果不需要拨打电话功能,移除或注释以下代码
// uni.makePhoneCall({
//   phoneNumber: '1234567890',
//   success: function () {
//     console.log('拨打电话成功!');
//   }
// });
  • 管理通话权限(READ_PHONE_STATE):通常与获取设备信息或监听来电状态相关。如果不需要这些功能,确保没有相关代码。
// 如果不需要获取设备信息或监听来电状态,移除或注释相关代码
// 例如,避免使用需要该权限的第三方库或API

3. 使用条件编译

如果某些功能仅在特定环境下使用(如开发环境),可以使用条件编译来避免在生产环境中请求不必要的权限。

// #ifdef DEBUG
// 开发环境下使用的代码,可能包含权限请求
// #endif

4. 重新打包并测试

在做了上述修改后,重新打包APP并测试,确保没有不必要的权限请求。可以使用Android Studio或Xcode的模拟器来检查APP运行时请求的权限列表。

通过上述步骤,你应该能够识别并移除uni-app打包后启动APP时请求的不必要权限,从而提高APP上架市场的成功率。

回到顶部