美文网首页
uniapp 安卓和ios权限获取

uniapp 安卓和ios权限获取

作者: 南土酱 | 来源:发表于2023-07-04 10:04 被阅读0次

项目用uniapp 的时候,有个功能是 拍照和相册。本来没啥问题,客户非要在提示使用权限的时候点击禁止,然后在点拍照就没提示了👍🙄
思路: 其实就是每次拍照和相册判断是否开启对应的权限
搜索到一位老哥的文章。ios 确实有这个权限列表的问题。
(68条消息) uniapp 安卓和ios权限获取uniapp ios 网络权限前端菜鸟丶Ndie的博客-CSDN博客
用它的方法解决完美了。不过本人自己优化了一下

使用该功能前一定要下载 官方的权限js文件permission.js
我是放到 utils 两个文件同级,放到哪个文件夹不是固定的
另外要注意自己用 vuex 或者 uni storage 存储一个 变量 用来判断 ios 是否第一次打开拍照或者相册

工具包

import permission from "./permission";

//手机权限,摄像头和图册
export function permissionCheck(){
    return new Promise(async (resolve,reject)=>{
        if(uni.getSystemInfoSync().platform === 'ios'){
            const camera = permission.judgeIosPermission("camera");//判断ios是否给予摄像头权限
            //ios相册没权限,系统会自动弹出授权框
            //let photoLibrary = permission.judgeIosPermission("photoLibrary");//判断ios是否给予相册权限
            if(camera){
                resolve();
            }else{
                reject('需要开启相机使用权限');
            }
        }else{
            let camera = await permission.requestAndroidPermission("android.permission.CAMERA");//判断安卓是否给予摄像头权限
            let photoLibrary = await permission.requestAndroidPermission("android.permission.READ_EXTERNAL_STORAGE");//判断安卓是否给予相册权限
            if(camera == -1 || photoLibrary == -1){
                reject('请同时开启相机和相册的使用权限');
            }else{
                resolve();
            }
        }
    })
}
//跳转到手机开启权限的界面
export function phonePermissionSetting(){
    permission.gotoAppPermissionSetting();
}

具体应用场景

import {permissionCheck,phonePermissionSetting} from '@/utils/phonePermissionCheck'

//选择照片
    chooseImage(){
      const callback = ()=>{
        uni.chooseImage({
          count: 1,
          sourceType: ["camera"],
          success: (res) => {
           //选择成功
          },
        });
      }
      // #ifdef H5
      callback()
      // #endif

      //由于ios的机制问题,只有用过该功能它的权限列表才会出现该权限的设置,ios调用第一次就可直接打开相机
      // #ifndef H5
      const iosFirstOpenCamera = //这里是获取vuex 或者 storage 存储的变量
      if(uni.getSystemInfoSync().platform === 'ios' && iosFirstOpenCamera){
  //把判断ios这个变量置为false        
this.$vuex.commit('SET_IOS_FIRST_OPEN_CAMERA', false)
  or  uni.getStorage('xxx')

        callback()
      }else{
        permissionCheck().then(res=>{
          callback()
        }).catch(err =>{
          uni.showModal({
            title: '手机权限',
            content: err,
            success: function (res) {
              if (res.confirm) {
                phonePermissionSetting()
              } else if (res.cancel) {
              }
            }
          });
        })
      }
      // #endif
    },

\color{#228B22}{前端学习小总结,不对之处,欢迎大神们喷我。可以的话顺手点个赞吧~~!}
\color{red}{警: 禁止抄袭,转载说明出处 }

相关文章

网友评论

      本文标题:uniapp 安卓和ios权限获取

      本文链接:https://www.haomeiwen.com/subject/ggncudtx.html