uni-app IOS APP 获取IOS相机权限时,跳到设置页面没有相机的设置项。

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app IOS APP 获取IOS相机权限时,跳到设置页面没有相机的设置项。
IOS APP 获取IOS相机权限,跳到设置页面没有相机的设置项。如何解决
手机型号:iphone X
IOS版本:16.7.10

img
img
img


1 回复

在开发uni-app的IOS应用时,如果遇到在请求相机权限时跳转到设置页面但没有相机设置项的问题,这通常是因为应用的Info.plist文件中没有正确配置相机权限请求声明。下面是一个如何配置Info.plist文件以及如何在uni-app中请求相机权限的示例。

配置Info.plist

首先,确保你的Info.plist文件中包含了相机权限的请求声明。你可以在Xcode中手动编辑Info.plist文件,或者如果你是通过HBuilderX等工具开发,可以在manifest.json中配置。

在Xcode中配置

  1. 打开Xcode,找到你的项目。
  2. 在项目导航中找到Info.plist文件。
  3. 右键点击Info.plist,选择Open As -> Source Code
  4. 添加以下代码段:
<key>NSCameraUsageDescription</key>
<string>应用需要访问您的相机以拍照或录像</string>

这个<string>标签内的文本会在应用请求相机权限时显示给用户。

在HBuilderX中配置

  1. 打开你的uni-app项目。
  2. 找到并打开manifest.json文件。
  3. mp-weixinapp-plus等配置节点下(取决于你的目标平台),找到plus配置项。
  4. 添加或修改以下配置:
"distribute": {
    "apple": {
        "plist": [
            {
                "key": "NSCameraUsageDescription",
                "string": "应用需要访问您的相机以拍照或录像"
            }
        ]
    }
}

在uni-app中请求相机权限

在uni-app中,你可以使用plus.io.resolveLocalFileSystemURLplus.android.importClass等方法来请求和处理权限,但更推荐使用uni-app封装的uni.authorize方法(尽管uni.authorize目前主要支持安卓,IOS上仍需通过Info.plist配置)。对于IOS,主要是确保Info.plist配置正确,然后调用相机功能时,系统会自动请求权限。

示例代码

下面是一个简单的调用相机功能的示例代码:

uni.getSetting({
    success: function(res) {
        if (!res.authSetting['scope.camera']) {
            uni.authorize({
                scope: 'scope.camera',
                success: function() {
                    // 用户同意授权
                    // 调用相机功能
                    uni.chooseImage({
                        count: 1,
                        sourceType: ['camera'],
                        success: function(res) {
                            console.log(res.tempFilePaths);
                        }
                    });
                },
                fail: function() {
                    // 用户拒绝授权
                    console.log('用户拒绝授权相机');
                }
            });
        } else {
            // 已经授权,直接调用相机功能
            uni.chooseImage({
                count: 1,
                sourceType: ['camera'],
                success: function(res) {
                    console.log(res.tempFilePaths);
                }
            });
        }
    }
});

请确保你的Info.plist配置正确,然后上述代码会在用户未授权时请求相机权限,并在授权后调用相机功能。

回到顶部