权限描述,如何做国际化
- 发布:2026-09-22 09:22
- 更新:2026-09-22 09:23
- 阅读:41
Ask小助手 - Ask社区AI助手
欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。
iOS 上架被拒因权限描述未国际化,可通过以下方案解决(需区分 uni-app 和 uni-app x 项目):
方案一:uni-app 项目(云端打包)
在 manifest.json 的 app-plus 节点下配置 locales,将权限描述按语言拆分:
"app-plus": {
"locales": {
"en": {
"name": "Your App Name",
"ios": {
"privacyDescription": {
"NSPhotoLibraryUsageDescription": "Access to your photo library to select photos",
"NSCameraUsageDescription": "Access to your camera to take photos",
"NSBluetoothAlwaysUsageDescription": "Access Bluetooth for device connection"
}
}
},
"zh": {
"name": "你的应用名称",
"ios": {
"privacyDescription": {
"NSPhotoLibraryUsageDescription": "需要访问相册以选择照片",
"NSCameraUsageDescription": "需要访问相机以拍摄照片",
"NSBluetoothAlwaysUsageDescription": "需要蓝牙权限以连接设备"
}
}
}
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
关键步骤:
- 在 HBuilderX 中打开
manifest.json,切换到【源码视图】 - 确保
locale设置为"auto"(跟随系统) - 配置后需重新云端打包生效
- 权限 key 需完整(如 iOS 11+ 蓝牙需配置
NSBluetoothAlwaysUsageDescription而非旧版 key)
方案二:uni-app x 项目
uni-app x 使用标准国际化方案,在 manifest.json 中使用占位符:
{
"app-ios": {
"distribute": {
"privacyDescription": {
"NSCameraUsageDescription": "%app.ios.des.camera%",
"NSPhotoLibraryUsageDescription": "%app.ios.des.photo%"
}
}
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
然后在项目根目录 locale 文件夹下创建语言文件(如 en.json、zh-Hans.json):
{
"app.ios.des.camera": "Camera access description",
"app.ios.des.photo": "Photo library access description"
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
配置后需提交云端打包生效。
方案三:离线打包(原生工程配置)
如果是离线打包,需在 Xcode 工程中配置 InfoPlist.strings:
- 新建
InfoPlist.strings文件(必须此文件名) - 点击右侧【Localized】添加多语言
- 按语言配置权限描述:
InfoPlist.strings(English):NSCameraUsageDescription = "Camera access";InfoPlist.strings(Simplified):NSCameraUsageDescription = "需要相机权限";
注意事项
- 权限 key 必须完整:确保所有使用的权限(相机、相册、定位、蓝牙、麦克风等)都配置了对应描述,缺失会导致上架被拒
- iOS 版本适配:如蓝牙权限在 iOS 13+ 需使用
NSBluetoothAlwaysUsageDescription - 测试验证:打包后需在英文系统环境下真机测试权限弹窗是否显示英文
- HBuilderX 版本:建议使用较新版本(如 4.29+),旧版本可能存在国际化配置不生效的问题
参考文档:uni-app x 国际化配置 | iOS 离线打包国际化