cordova - 在 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引起的吗?
谢谢你的时间。
解决方案
再会。当我开始使用 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>
上面的代码将询问用户是否允许应用程序使用相机以及画廊(如果需要)。
我希望这可以帮助你。
推荐阅读
- python - 使用函数修改数据表 UserProfile 中的值
- javascript - 为什么我的转换器在从减少/组合中抽象出来时不再工作?
- scala - Scala Cats:如何将 List[ValidatedNel[E, A]] 转换为 Ior[NonEmptyList[E], List[A]]?
- qt - 在其他页面上操作后更改 url
- node.js - Firebase Cloud Function - 从案例列表中获取数据库值的最佳选择
- java - JavaFx 自定义警报阶段
- java - 如何从 Java 应用程序运行 docker compose?
- c# - 使用资源文件本地化 ASP.NET WebForm 应用程序
- apache - 为什么 Apache HTTP mod_proxy 在 Docker Swarm 中执行不可预测?
- meteor - 我应该如何存储来自第 3 部分 api 的访问令牌