3***@qq.com
3***@qq.com
  • 发布:2025-04-11 16:57
  • 更新:2025-08-12 17:51
  • 阅读:437

IOS在app申请权限时,请问如何直接通过授权弹窗询问的方式打开授权?

分类:uni-app

iOS在app申请权限时,需要app申请过一次后,才可以在设置中找到相应的权限去打开或关闭。请问iOS如何直接通过授权弹窗询问的方式打开授权?

iOS需要获取相机权限,来提供远程视频问题的服务。这个是原生实现的,需要弹出这个授权弹窗。请问uniapp怎么实现呢?还是说需要原生iOS写个插件给uniapp调用?

以下是uniapp调用相机授权的代码


functIon requestCamera() {  
        return new Promise(async (rel, rej) => {  
            var platform = uni.getSystemInfoSync().platform;  
            const appAuthorizeSetting = uni.getAppAuthorizeSetting()  
            console.log("appAuthorizeSetting", appAuthorizeSetting.cameraAuthorized)  
            console.info("platform", platform)  
            if (platform == 'ios') {  
                if (appAuthorizeSetting.cameraAuthorized == 'not determined') { // 从未授权过  
                    return rel(true)  
                }  
                plus.camera.getCamera()  
                let camera = permision.judgeIosPermission("camera"); //判断ios是否给予摄像头权限  
                console.log("camera", camera)  
                if (camera) {  
                    return rel(true);  
                }  
                let cmr = plus.camera.getCamera();  
                plus.nativeUI.confirm(  
                    '请在"设置-应用-隐私"选项中,允许应用访问您的相机', // 消息内容  
                    function(e) {  
                        // 用户点击按钮后的回调函数  
                        // e.index 表示用户点击的按钮索引,从1开始  
                        if (e.index === 1) {  
                            console.log('用户点击了确定按钮');  
                            permision.gotoAppPermissionSetting()  
                            return rel(false);  
                        } else if (e.index === 2) {  
                            // 用户点击了“取消”按钮(假设“取消”按钮是第二个按钮)  
                            console.log('用户点击了取消按钮');  
                            return rel(false);  
                            // 在这里执行取消操作,例如关闭对话框、不清除表单等  
                        }  
                    },  
                    '提示', // 标题  
                    ['暂不开启', '马上设置'] // 按钮数组,数组中的字符串表示按钮上的文字  
                );  
            }  
            if (platform == "android") {  
                let camera = await permision.requestAndroidPermission(  
                    "android.permission.CAMERA"); //判断安卓是否给予摄像头权限  
                if (camera == 0) {  
                    console.log('请开启摄像头使用权限');  
                    rel(false)  
                } else if (camera == -1) {  
                    //永久拒绝  
                    rel(false)  
                } else {  
                    rel(true);  
                }  
            }  
        })  
    }
2025-04-11 16:57 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com

同求,chooseMedia方法从系统相册获取图片视频不会调用授权弹窗,但是需求要给他弹出来

  • 3***@qq.com

    解决了,我是第一次未选择的时候直接用这个方法PHPhotoLibrary.requestAuthorization(),调起弹窗,然后其他步骤就按原本的走

    let system = uni.getSystemInfoSync();

    if (system.platform === 'ios') {

    // iOS相册权限检查

    let result = false;

    let PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");

    let status = PHPhotoLibrary.authorizationStatus();

    console.log("相册权限状态:" + status);

    if (status === 3) { // 0=未选择, 3=已授权

    result = true;

    return result;

    } else if (status === 0) {

    const status = PHPhotoLibrary.requestAuthorization()

    console.log('status', status)

    }

    2025-08-12 18:13

  • 3***@qq.com

    有个问题,chooseMedia调起的相册是全部,权限只配置了部分照片权限但还是获取的全部,有没有知道怎么解决的

    2025-08-12 18:28

蔡cai

蔡cai - 开发的插件:https://ask.dcloud.net.cn/article/41539

mainfest.json这个配置了嘛

要回复问题请先登录注册