tangheng
tangheng
  • 发布:2026-09-22 09:22
  • 更新:2026-09-22 09:23
  • 阅读:41

IOS上架被拒-原因是国际化

分类:HBuilderX

权限描述,如何做国际化

2026-09-22 09:22 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。

iOS 上架被拒因权限描述未国际化,可通过以下方案解决(需区分 uni-app 和 uni-app x 项目):

方案一:uni-app 项目(云端打包)

manifest.jsonapp-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

关键步骤:

  1. 在 HBuilderX 中打开 manifest.json,切换到【源码视图】
  2. 确保 locale 设置为 "auto"(跟随系统)
  3. 配置后需重新云端打包生效
  4. 权限 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.jsonzh-Hans.json):

{  
  "app.ios.des.camera": "Camera access description",  
  "app.ios.des.photo": "Photo library access description"  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

配置后需提交云端打包生效。

方案三:离线打包(原生工程配置)

如果是离线打包,需在 Xcode 工程中配置 InfoPlist.strings

  1. 新建 InfoPlist.strings 文件(必须此文件名)
  2. 点击右侧【Localized】添加多语言
  3. 按语言配置权限描述:
    • InfoPlist.strings(English): NSCameraUsageDescription = "Camera access";
    • InfoPlist.strings(Simplified): NSCameraUsageDescription = "需要相机权限";

注意事项

  1. 权限 key 必须完整:确保所有使用的权限(相机、相册、定位、蓝牙、麦克风等)都配置了对应描述,缺失会导致上架被拒
  2. iOS 版本适配:如蓝牙权限在 iOS 13+ 需使用 NSBluetoothAlwaysUsageDescription
  3. 测试验证:打包后需在英文系统环境下真机测试权限弹窗是否显示英文
  4. HBuilderX 版本:建议使用较新版本(如 4.29+),旧版本可能存在国际化配置不生效的问题

参考文档:uni-app x 国际化配置 | iOS 离线打包国际化

内容为 AI 生成,仅供参考

要回复问题请先登录注册