如何使用Expo测试iOS中NSPhotoLibraryUsageDescription的目的字符串?

Kil*_*ise 2 appstore-approval ios react-native expo

我一直在努力验证照片库访问的目的字符串是否确实按预期工作。它开始于应用程序被拒绝,因为它没有设置。

使用 expo-image-picker,它在文档中表示将其添加到 app.json 的插件部分中应该设置 NSPhotoLibraryUsageDescription:

  [
    "expo-image-picker",
    {
      "photosPermission": "This allows you to upload a photo to your Appname profile."
    }
  ]
Run Code Online (Sandbox Code Playgroud)

在添加此内容之前,我基本上将 NSPhotoLibraryUsageDescription 添加到 app.json 中 ios 部分内的 plist 键中。据我所见,两者都做完全相同的事情。

使用构建 ios 后,expo build:ios我能够验证该字符串是否存在于 Info.plist 文件中:

<key>NSPhotoLibraryUsageDescription</key>
<string>This allows you to upload a photo to your Appname profile.</string>
Run Code Online (Sandbox Code Playgroud)

使用 Expo Go 并没有真正的帮助,因为在请求权限时,它会在警报中显示“Expo Go”。

另外,我只有使用 Expo / React Native 的经验,无法访问 mac(或 xcode)。

当苹果对此进行测试时,它看起来像这样(根据他们的屏幕截图):
在此输入图像描述

预期的文本应该是:
这允许您将照片上传到您的 Appname 个人资料。

在向应用程序商店提交应用程序之前,如何验证目的字符串是否确实设置(并且有效)?

Jo *_*mma 5

我的解决方案:

首先,我为 EAS 构建设置了我的应用程序。如果您不熟悉,您应该查看文档:https://docs.expo.dev/build/introduction/

基本上你这样做:

  1. 安装 eas-cli:npm install -g eas-cli
  2. 运行eas build:configure以初始化 eas.config 文件。
  3. 配置您的 eas 构建配置文件。我的看起来像这样:

在此输入图像描述

我折叠了提交块以隐藏我的凭据。抱歉用的是照片而不是代码/文本。格式化程序一直把它弄乱。

无论如何,使用 触发构建eas build -p ios --profile development。请注意模拟器标志设置为 true。这将允许您在模拟器中将其作为独立的二进制文件运行。

构建完成后,请访问 expo.io 并登录您的帐户。单击您的项目并下载 ios 构建的二进制文件(在“构建”选项卡下)。解压缩二进制文件并将其拖到模拟器中。系统可能会提示您一条消息,指出您需要启动开发服务器。只需按照这些简单的说明操作即可。您将能够看到您的NSPhotoLibraryUsageDescription字符串是否已更新。

诚然,这对于 @ss 来说可能是一个痛苦,而且您是在 expo 环境之外执行的,但它解决了在再次发布到商店之前想知道字符串是否已更新的问题。

祝你好运。希望有帮助。