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);
}
}
})
}
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