El subprograma vue3 + ts + uniapp encapsula la función de enlace de autorización

El subprograma vue3 + ts + uniapp encapsula la función de enlace de autorización

Al autorizar el mini programa, si hace clic en Denegar autorización, la autorización nunca volverá a aparecer a menos que el usuario vaya manualmente a la esquina superior derecha... Configuración para abrir

Encapsule un mensaje global a través de la API oficial de Uni:
uni.getSettinghttp://uniapp.dcloud.io/api/other/setting?id=getsetting :
uni.authorize http://uniapp.dcloud.io/api/other/authorize?id= Authorize
uni.openSetting : https://uniapp.dcloud.net.cn/api/other/setting.html#opensetting

具体代码
src\composable\index.ts

/**
 * 授权综合逻辑
 * @param {*} scope 权限代表
 */
export const useShowPullAuth = () => {
    
    
  const pullAuth = (scope: keyof UniApp.AuthSetting): void => {
    
    
    const map: Record<string, string> = {
    
    
      'scope.userInfo': '用户信息',
      'scope.userLocation': '地理位置',
      'scope.userLocationBackground': '后台定位',
      'scope.address': '通信地址',
      'scope.record': '录音功能',
      'scope.writePhotosAlbum': '保存到相册',
      'scope.camera': '摄像头',
      'scope.invoice': '获取发票',
      'scope.invoiceTitle': '发票抬头',
      'scope.werun': '微信运动步数',
    }

    uni.getSetting({
    
    
      success() {
    
    
        // scope 存在
        if (map[scope]) {
    
    
          // 提前向用户发起授权请求
          uni.authorize({
    
    
            scope,
            fail() {
    
    
              const word = map[scope]
              uni.showModal({
    
    
                content: `检测到您没打开${
      
      word}权限,是否去设置打开?`,
                confirmText: '确认',
                cancelText: '取消',
                success: (res) => {
    
    
                  if (res.confirm) {
    
    
                    // 打开授权页
                    uni.openSetting({
    
    
                      success: (res) => {
    
    
                        if (res.authSetting[scope]) {
    
    
                          uni.showToast({
    
    
                            title: '授权成功',
                            icon: 'none',
                          })
                        } else {
    
    
                          uni.showToast({
    
    
                            title:
                              '未授权,将会影响使用小程序部分功能,可自行去右上角(...)中-设置手动打开!',
                            icon: 'none',
                          })
                        }
                      },
                    })
                  } else {
    
    
                    uni.showToast({
    
    
                      title:
                        '未授权,将会影响使用小程序部分功能,可自行去右上角(...)中-设置手动打开!',
                      icon: 'none',
                      duration: 2500,
                    })
                  }
                },
              })
            },
          })
        } else {
    
    
          // 不存在授权 scope
          uni.showToast({
    
    
            title: '无此授权功能',
            icon: 'none',
          })
        }
      },
    })
  }
  return {
    
     pullAuth }
}

在需要用的页面使用 onLoad

Se coloca en onLoad para ser llamado tan pronto como entre. Cuando el alcance sea correcto, se iniciará la autorización. Si ya lo ha autorizado antes, no se hará nada. Si se descubre que no está autorizado, se ejecutará un Aparecerá una ventana emergente para guiarlo manualmente ¡En la configuración de autorización del sistema!

<script setup lang="ts">
import {
    
     useShowPullAuth } from '@/composable'
import {
    
     onLoad } from '@dcloudio/uni-app'
onLoad(() => {
    
    
  console.log('onLoad')
  pullAuth('scope.camera')
})
</script>

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/zhgweb/article/details/132835688
Recomendado
Clasificación