首页 > 解决方案 > 在 iOS11 上首次使用 cordova-plugin-camera (Image Picker) 时未请求许可

问题描述

我们使用 phonegap 和 vanilla javascript 开发了一个照片编辑器应用程序,并使用 phonegap 构建。这个应用程序通常使用cordova-plugin-camera 来捕捉静态照片并从相机胶卷中挑选照片。在测试环境中,我们在 Android 和 iOS 两个平台上都使用了真实设备。这在 Android 中完美运行,但在 iOS11 中,该插件在使用图片选择器时不要求首次使用权限,用户可以直接访问他们的相机胶卷。我们在测试阶段没有注意到这个问题,应用审查团队已经向我们提出了这个问题,即应用在访问敏感信息之前没有请求用户许可。

当应用程序基于 phonegap 构建 (xcode9) 构建时,此代码不要求 iOS11 上的首次使用权限

navigator.camera.getPicture(onSuccess, onFail, {
  destinationType: Camera.DestinationType.FILE_URI,
  sourceType: Camera.PictureSourceType.PHOTOLIBRARY
  });

使用 Camera.PictureSourceType.CAMERA 没有问题,因为该插件能够正确处理权限问题。值得一提的是,我们已经在 *-Info.plist 以及插件安装过程中实现了 iOS10+ 所需的所有权限描述。更重要的是,我们注意到如果从配置文件中省略这些描述,应用程序不会在 iOS11.4 上崩溃。

<engine name="ios" spec="latest" />
<preference name="phonegap-version" value="cli-8.0.0" />
<preference name="target-device" value="handset" />
<preference name="TARGETED_DEVICE_FAMILY" value="1" />
<preference name="IPHONEOS_DEPLOYMENT_TARGET" value="10.0" />

我们在最新的 iOS11.4 更新的 iphone 7、iphone 8 和 iphone X 上对此进行了测试,所有这些都重现了相同的结果,没有请求许可。

我们测试了 Telerik Team 的插件 cordova-imagePicker ,它在首次使用权限下运行良好,但是我们注意到如果用户拒绝请求,他们没有实现回退,应用程序将崩溃。

那么,最近有人注意到了吗?任何线索如何处理这个?这是由phonegap build引起的吗?

谢谢你的时间。

标签: cordovaphonegapcamera-rollcordova-plugin-camera

解决方案


再会。当我开始使用 Cordova 插件的相机时,我遇到了类似的问题。我能够使用 XCode 并编译它们,并且能够找到缺少的内容。权限,下面是 XCode 提供的代码。

 <plugin name="cordova-plugin-camera" spec="^4.0.2">
   <variable name="CAMERA_USAGE_DESCRIPTION" value="Use Camera" />
   <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="Select Photo" />
 </plugin>

上面的代码将询问用户是否允许应用程序使用相机以及画廊(如果需要)。

我希望这可以帮助你。


推荐阅读