在 iOS11 上首次使用 cordova-plugin-camera(Image Picker)时没有请求许可



我们使用Phonegap和vanilla javascript开发了一个照片编辑器应用程序,并使用phonegap构建构建。此应用程序通常使用cordova插件相机来捕获静态照片并从相机胶卷中挑选照片。在测试环境中,我们使用适用于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" />

我们在iPhone 7,iPhone 8和iphone X上进行了最新的iOS11.4更新测试,所有这些都复制了相同的结果,没有要求许可。

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

那么,最近有人注意到这一点吗?有什么线索如何处理吗?这是由音差构建引起的吗?

谢谢你的时间。

美好的一天。当我开始使用 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>

上面的代码将要求用户允许应用程序使用相机和图库,如果你需要它。

我希望这对你有所帮助。

最新更新