uni-app 打包bug导致ios app无法上架 ios权限弹框提示在英文环境下显示中文 uni-app的示例app有相同问题

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

uni-app 打包bug导致ios app无法上架 ios权限弹框提示在英文环境下显示中文 uni-app的示例app有相同问题

产品分类

  • uniapp/App

PC开发环境

操作系统 版本号
Mac 13.3.1 (22E261)

HBuilderX

类型 版本号
正式 4.26

手机系统

系统 版本号 厂商 机型
iOS iOS 17 苹果 iphone se

页面类型

  • vue
  • vue2

打包方式

  • 云端

项目创建方式

  • HBuilderX

App下载地址

示例代码

没什么代码示例,就一项根据官方文档的默认设置, “locale” : “en”,其他全是官方默认配置。 你们可以用你们官方提供的 ios App hello uni-app、Hello uni-app x 进行测试,必现。


### 操作步骤

- 将系统语音设置为英文或其他语言。
- 打开 app 点击位置、相机、蓝牙等权限请求。
- 弹出系统隐私权限申请弹框

预期结果

隐私弹框中显示的文字跟随系统语言或显示为设置的默认语言(英语),或者为我自定义的隐私描述。


### 实际结果

隐私弹框中显示的隐私描述文字为中文

bug描述

苹果隐私弹框语言与系统语言不一致(见附件 2),导致 app 上架审核失败(见附件1)。 我的配置是默认配置,既默认语言为 英文、默认回退语音 英文,具体见附件 4. 你们可以用你们官方提供的 hello uni-app、Hello uni-app x 进行测试,必现。 或者可看 附件3 视频中,我测试的结果


### 附件
- [![image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240909/b7c2fccf3f24c963475ea3cf417e9c66.jpg)](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240909/b7c2fccf3f24c963475ea3cf417e9c66.jpg)
- [![image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240909/78729f5f98335df56657a5efe64577c1.jpg)](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240909/78729f5f98335df56657a5efe64577c1.jpg)
- [未命名.mp4__.zip](//ask.dcloud.net.cn/file/download/file_name-5pyq5ZG95ZCNLm1wNF9fLnppcA==__url-Ly9pbWctY2RuLXRjLmRjbG91ZC5uZXQuY24vdXBsb2Fkcy9xdWVzdGlvbnMvMjAyNDA5MDkvYWRmOTFiZjcwMGY0N2RjMDQ5ZjI3NjZlNWNiYWQ3NzE=)

4 回复

uni-app项目ios系统权限信息国际化配置参考这里:https://ask.dcloud.net.cn/article/35860


用的就是这个的默认配置,然后出的问题,你可以用 uniapp 官方的示例 app,一样是这个问题。你可以按照我提供的测试步骤或者直接观看我测试的视频,都是必现的,而且这个问题在于,如果苹果审核不严的话是可以通过的,如果严的话,是通过不了的。

老哥,如果 uniapp 官方示例也是这个问题都证明不了是 bug 的话,我可以重新开一个 uniapp 的项目,供你们问题定位使用。

针对您提到的uni-app打包后iOS应用无法上架以及iOS权限弹框在英文环境下显示中文的问题,这里提供可能的解决方案及代码示例,以帮助您定位并解决问题。

1. iOS应用无法上架问题

首先,确保您的uni-app项目符合Apple Store的提交要求。常见的问题包括:

  • 证书配置:确保使用的证书和配置文件(.mobileprovision或.p12)是有效的,并且与您的Apple Developer账户匹配。
  • 代码签名:检查Xcode中的代码签名设置,确保Bundle Identifier与App Store中的一致。
  • 依赖库:如果使用了第三方库,确保它们没有使用被Apple禁止的API。

2. iOS权限弹框语言问题

对于权限弹框在英文环境下显示中文的问题,这通常是由于国际化(i18n)配置不当造成的。uni-app支持国际化,可以通过配置不同语言的文件来控制应用在不同语言环境下的显示内容。

步骤:

  1. 创建国际化文件: 在项目的staticsrc目录下创建locales文件夹,并在其中创建en.jsonzh.json文件,用于存储英文和中文的国际化内容。

    // en.json
    {
      "permission_message": "This app needs access to your camera."
    }
    
    // zh.json
    {
      "permission_message": "该应用需要访问您的相机。"
    }
    
  2. 在代码中引用国际化内容: 使用uni-app提供的$t函数来引用国际化内容。

    // 在请求权限时
    if (uni.getSystemInfoSync().language.includes('en')) {
      uni.authorize({
        scope: 'scope.camera',
        success() {
          console.log('Camera permission granted');
        },
        fail() {
          uni.showModal({
            title: 'Permission Denied',
            content: $t('permission_message'), // 使用国际化内容
            showCancel: false
          });
        }
      });
    } else {
      // 默认中文或其他处理
    }
    
  3. 设置默认语言: 在manifest.jsonpages.json中配置默认语言。

    // manifest.json
    {
      "mp-weixin": {
        "appid": "YOUR_APPID",
        "setting": {
          "es6": true,
          "defaultLanguage": "en" // 设置默认语言为英文
        }
      }
    }
    

确保您的项目在编译时正确引入了国际化文件,并且根据用户的设备语言动态加载相应的语言内容。

通过以上步骤,您应该能够解决uni-app打包后iOS应用无法上架以及权限弹框语言显示不正确的问题。如果问题仍然存在,建议详细检查Xcode的日志输出,以获取更具体的错误信息。

回到顶部