直接删除 manifest.json 中 iOS 的 NSContactsUsageDescription 声明并同步移除所有 plus.contacts、uni.getContact 等调用逻辑,才能彻底禁用通讯录权限,否则仍可能触发弹窗或崩溃;真机调试需卸载重装以清除旧授权记录。

直接删掉 manifest.json 里 iOS 的通讯录权限声明即可,但必须同步移除相关调用逻辑,否则运行时仍会触发系统弹窗或崩溃。
删掉 NSContactsUsageDescription 配置项
iOS 不会因为你没写权限描述就“默认不申请”,而是根本无法通过审核——但如果你的目标只是本地调试阶段禁用通讯录访问,删掉它是最干净的做法:
-
manifest.json中找到"ios"节点下的"privacyDescription" - 删除整行
"NSContactsUsageDescription": "我们需要访问您的通讯录以便为您提供联系人相关的服务。" - 如果该字段下只剩这一条,可连同
"privacyDescription": {}整个对象一并删掉
检查并注释掉所有 plus.contacts 或 uni.getContact 相关调用
仅删配置不够。iOS 端一旦代码里还存在读取通讯录的 API 调用,即使没声明权限,App 启动或执行到该处时仍可能触发系统级异常或静默失败:
- 搜索项目中所有
plus.contacts、uni.getContact、uni.chooseContact - 确认这些调用是否被
platform === 'ios'条件包裹;如果没有,必须加判断或直接注释 - 特别注意:某些插件(如原生增强 SDK)可能内部调用了通讯录 API,需查阅其文档确认是否依赖该权限
重新编译后,iOS 设备上不会弹出任何通讯录授权请求
删完配置 + 清理调用后,还需执行完整流程才能验证效果:
- 在 HBuilder X 中清除缓存(菜单栏 → 工程 → 清理缓存)
- 重新编译 App(运行 → 运行到 iOS 设备/模拟器)
- 真机测试时,前往「设置 → 隐私与安全性 → 通讯录」,确认你的 App 已不在列表中(或状态为关闭)
- 若旧版本曾获得过授权,卸载重装 App 才能彻底清除系统记录
最容易被忽略的是:iOS 权限状态不会随配置修改自动刷新,旧安装包残留的授权记录仍会影响行为;真机调试务必卸载重装,否则看到的不是最新配置的实际效果。


















