uni-app 苹果隐私弹框语言与系统语言不一致,导致 app 上架审核失败。
uni-app 苹果隐私弹框语言与系统语言不一致,导致 app 上架审核失败。
操作步骤:
- 将系统语音设置为英文或其他语言。
- 打开 app 点击位置、相机、蓝牙等权限请求。
- 弹出系统隐私权限申请弹框
预期结果:
隐私弹框中显示的文字跟随系统语言或显示为设置的默认语言(英语),或者为我自定义的隐私描述。
实际结果:
隐私弹框中显示的隐私描述文字为中文
bug描述:
苹果隐私弹框语言与系统语言不一致(见附件 2),导致 app 上架审核失败(见附件1)。 我的配置是默认配置,既默认语言为 英文、默认回退语音 英文,具体见附件 4. 你们可以用你们官方提供的 hello uni-app、Hello uni-app x 进行测试,必现。 或者可看 附件3 视频中,我测试的结果
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC开发环境版本 | 13.3.1 (22E261) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.26 |
手机系统 | iOS |
手机系统版本 | iOS 17 |
手机厂商 | 苹果 |
手机机型 | 14 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
针对您提到的uni-app在苹果设备上隐私弹框语言与系统语言不一致的问题,这通常涉及到应用的本地化配置以及iOS系统对隐私权限请求的处理。以下是一个可能的解决方案,通过修改uni-app的配置和代码来确保隐私弹框的语言与系统语言一致。请注意,实际操作可能需要根据您的项目具体情况进行调整。
解决方案
-
确保项目支持多语言
首先,确保您的uni-app项目已经配置了多语言支持。在
pages.json
中配置支持的语言列表,例如:"globalStyle": { "language": ["zh-CN", "en-US"] // 根据需要添加更多语言 }
-
使用iOS原生插件处理隐私请求
uni-app在iOS上处理隐私权限请求时,可能会遇到语言不一致的问题。为了解决这个问题,可以考虑使用iOS原生插件来直接处理隐私权限请求,这样可以确保弹框语言与系统语言一致。
以下是一个使用Swift编写的iOS原生插件示例,用于请求相机权限:
import UIKit import AVFoundation [@objc](/user/objc)(CameraPermissionHandler) class CameraPermissionHandler: NSObject { [@objc](/user/objc) func requestCameraPermission(callback: @escaping (Bool) -> Void) { AVCaptureDevice.requestAccess(for: .video) { granted in callback(granted) } } }
然后,在uni-app中使用该插件:
#ifdef APP-PLUS plus.bridge.exec('CameraPermissionHandler', 'requestCameraPermission', [], function(granted) { if (granted) { console.log('Camera permission granted'); } else { console.error('Camera permission denied'); } }); #endif
-
确保应用正确读取系统语言
在iOS中,应用通常会根据系统的语言设置自动调整界面语言。如果您的应用没有正确读取系统语言,可能需要检查应用的本地化配置文件(如
InfoPlist.strings
)是否正确设置。 -
测试与验证
在完成上述修改后,务必在多种语言环境下测试应用,确保隐私弹框的语言与系统语言一致。可以使用Xcode的模拟器或真机进行测试。
注意事项
- 使用原生插件可能需要一定的iOS开发经验。
- 确保在提交应用审核前,已经全面测试了所有相关功能。
- 如果问题依旧存在,建议查阅Apple的官方文档或联系Apple开发者支持获取更具体的帮助。