中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

小程序獲取用戶位置授權的示例分析

發布時間:2021-01-26 09:48:06 來源:億速云 閱讀:146 作者:小新 欄目:移動開發

這篇文章主要介紹小程序獲取用戶位置授權的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

流程圖

有時候項目的很多地方都會用到判斷用戶是否授權的邏輯,所以封裝是非常有必要的。下面我們拿位置授權作為例子說一下一般的流程。

很多應用在一進入就會讓用戶授權地理位置,可以拿到用戶的經緯度通過計算獲取距離用戶的距離。下面是一個簡單的流程圖。

小程序獲取用戶位置授權的示例分析

開發先要通過wx.getSettiing()獲取用戶的當前設置,官方文檔。如果擁有權限進行下一步操作,如果沒有再次請求用戶打開權限,如果點擊用戶點擊否,授權失敗。如果用戶同意,調用wx.openSetting()調起客戶端小程序設置界面,返回用戶設置的操作結果,官方文檔。打開設置頁面后如果用戶沒有打開授權就返回了,會拿到授權失敗的結果。如果打開了授權返回之前的頁面就授權成功了。

這邊要注意一點 獲取地理授權 要在 app.json 添加下面代碼。

"permission": {
    "scope.userLocation": {
      "desc": "您的位置信息將用于展示您所在城市的信息"
    }
  }復制代碼

主要代碼

在utils文件夾下新建 auth.js 用于授權操作,然后在代碼中就可以直接2行搞定拉!

/**
* 微信授權
*/
const authList = {
 userInfo: {
   apiName: ['getUserInfo'],
   authTitle: '需要使用你的用戶信息',
   authContent: '需要使用你的用戶信息,請確認授權'
 },
 userLocation: {
   apiName: ['getLocation', 'chooseLocation'],
   authTitle: '請求授權當前位置',
   authContent: '需要獲取您的地理位置,請確認授權'
 },
 address: {
   apiName: ['chooseAddress'],
   authTitle: '需要使用你的通訊地址',
   authContent: '需要使用你的通訊地址,請確認授權'
 },
 invoiceTitle: {
   apiName: ['chooseInvoiceTitle'],
   authTitle: '需要使用你的發票抬頭',
   authContent: '需要使用你的發票抬頭,請確認授權'
 },
 invoice: {
   apiName: ['chooseInvoice'],
   authTitle: '需要獲取你的發票',
   authContent: '需要獲取你的發票,請確認授權'
 },
 werun: {
   apiName: ['getWeRunData'],
   authTitle: '需要獲取你的微信運動數據',
   authContent: '需要獲取你的微信運動數據,請確認授權'
 },
 writePhotosAlbum: {
   apiName: ['saveImageToPhotosAlbum', 'saveVideoToPhotosAlbum'],
   authTitle: '請求授權相冊',
   authContent: '需要使用你的相冊,請確認授權'
 },
}
/**
* @description: 返回值中只會出現小程序已經向用戶請求過的權限
* @param {String} 權限名稱
* @return {Boolean} 是有擁有權限
*/
const getWxSetting = key => {
 if (typeof key === 'string' && !authList[key]) return false
 return new Promise(function (resolve) {
   wx.getSetting({
     success: async res => {
       var result = res.authSetting
       // 用戶拒絕過
       if (result[`scope.${key}`] === false) {
         // 引導去授權頁
         _showModal(key).then(() => {
           resolve()
         })
       } else {
         //  已授權,或者還未授權
         resolve()
       }
     }
   })
 })
}
/**
* @description: 引導去授權設置頁面
* @param {String} 權限名稱
* @return {Boolean} 是有擁有權限
*/
const _showModal = key => {
 console.log(authList[key].authContent)
 return new Promise(function (resolve) {
   wx.showModal({
     title: authList[key].authTitle,
     content: authList[key].authContent,
     success: function (res) {
       if (res.confirm) {
         wx.openSetting({
           success: async dataAu => {
             // 異步,進入授權頁面授權后返回判斷
             if (dataAu.authSetting[`scope.${key}`] === true) {
               wx.showToast({
                 title: '授權成功',
                 icon: 'success',
                 duration: 1000
               })
               resolve()
             } else {
               wx.showToast({
                 title: '授權失敗',
                 icon: 'none',
                 duration: 1000
               })
             }
           }
         })
         // 用戶點擊取消
       } else if (res.cancel) {
         wx.showToast({
           title: '授權失敗',
           icon: 'none',
           duration: 1000
         })
       }
     }
   })
 })
}

module.exports = {
 getWxSetting
}復制代碼

頁面js引入auth.js 傳入,調用 getWxSetting 方法傳入已經在auth.js中定義authList 對應的屬性名

//index.js
//獲取應用實例
const app = getApp()
const wxApi = require('../../utils/auth.js')
Page({
  data: {
  },
  // 打開地圖
  openMap: function() {
    wxApi.getWxSetting('userLocation').then(()=>{
        // 已經授權或還未授權,下面的代碼也可以根據需求提取到公共文件中
      wx.getLocation({
        type: 'wgs84',
        success: res => {
          wx.openLocation({
            latitude: res.latitude,
            longitude: res.longitude,
          })
        },
        fail: err => {
          wx.showToast({
            title: '檢查手機定位權限',
            icon: 'none',
            duration: 2000
          })
        }
      })
    })
  },
  // 保存到相冊
  writePhotosAlbum: function() {
    wxApi.getWxSetting('writePhotosAlbum').then(()=>{
     // 已經授權或還未授權,下面的代碼也可以根據需求提取到公共文件中
      wx.downloadFile({
        url: 'https://imgs.solui.cn/avatar.png',
        success: function(res) {
            wx.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success: function(res) {
                   wx.showToast({
                     title: '保存成功',
                     icon:'none'
                   })
                },
                fail: function(err) {
                  wx.showToast({
                    title: '保存失敗',
                    icon:'none'
                  })
                }
            })
        }
      })
    })
  },
  onLoad: function () {

  },
})復制代碼

然后就可以進行授權后的操作了,這里的  wx.getLocation 也可以提取公共文件,這里就不再贅述了。

以上是“小程序獲取用戶位置授權的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依兰县| 肃南| 江门市| 常宁市| 安岳县| 西华县| 麻城市| 徐水县| 云龙县| 灯塔市| 宣威市| 侯马市| 雷州市| 嘉义县| 永新县| 德阳市| 康马县| 泾源县| 定襄县| 吉水县| 永定县| 南阳市| 南丹县| 旺苍县| 丹寨县| 勐海县| 渭源县| 云安县| 舞钢市| 顺昌县| 沁水县| 陇南市| 蓬莱市| 军事| 大渡口区| 日照市| 富裕县| 景泰县| 丹寨县| 乌兰察布市| 贡嘎县|