小程式許可權設定(位置)

ChenSan發表於2018-06-12

小程式的許可權問題

小程式開發中不免要獲取使用者的許多資訊,而這些資訊又必須獲得使用者的同意,但是這些資訊一般只會請求一次(開啟小程式-小程式銷燬),之後會預設授權或預設拒絕授權,所以務必妥善處理。解決方案是可以通過使用者手動設定重新改寫許可權。以下將以獲取使用者位置許可權為例,其他許可權也可作為參考


目錄結構

|-----util

|---------util.js

|-----page

|---------location.js

|---------location.json

|---------location.wxml

|---------location.wxss


util.js程式碼

//獲取位置設定資訊
const GetSetting = (init,refused)=>{  
    init = typeof (init) === 'function' ? init : function (res) { };
    refused = typeof (refused) === 'function' ? refused : function (res) { };    
    wx.getSetting({      
        success: (res) => {        
            console.log(res);        
            console.log(res.authSetting['scope.userLocation']);        
            if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {          
                //非初始化進入該頁面,且未授權         
                wx.showModal({            
                    title: '是否授權當前位置',            
                    content: '需要獲取您的地理位置,請確認授權,否則無法獲取地址',            
                    success: function (res) {              
                        if (res.cancel) {                
                            console.info("1授權失敗返回資料");
                            refused();                          
                        } else if (res.confirm) {                                          
                            wx.openSetting({                  
                                success: function (data) {                    
                                    console.log(data);                    
                                    if (data.authSetting["scope.userLocation"] == true) {                      
                                        wx.showToast({                        
                                            title: '授權成功',                        
                                            icon: 'success',                        
                                            duration: 2000                      
                                        })           
                                    } else {                      
                                        wx.showToast({                        
                                            title: '授權失敗',                        
                                            icon: 'none',                        
                                            duration: 2000                      
                                        });                     
                                    }                  
                                }                
                            })              
                        }            
                    }          
                })        
            } else if (res.authSetting['scope.userLocation'] == true){          
                init();        
            } else if (res.authSetting['scope.userLocation'] == undefined) {          
                //初始化進入          
                init();           
            }     
        }   
    })
}
const GetLocation = (success,fail)=>{  
    success = typeof (success) === 'function' ? success : function (res) { };  
    fail = typeof (fail) === 'function' ? fail : function (res) { };  
    wx.getLocation({    
        type: 'wgs84',    
        success:success,    
        fail:fail  
    })
}
module.exports = {  GetSetting,  GetLocation}
複製程式碼

location.js

// pages/Quality/index.js
const util = require('../../utils/util');
Page({  
    /**   * 頁面的初始資料   */  
    data: {      },    
    setLocation(lat,lon){     },   
    /**   * 生命週期函式--監聽頁面顯示   */  
    onShow: function () {    
        util.GetSetting(      
            () => {        
                console.log("進入獲取位置");        
                util.GetLocation((res) => {
                    //獲取使用者位置資訊成功          
                    console.log('GetLocationSuccess:', res);         
                    //此處獲取具體位置資訊this.setLocation(res.latitude, res.longitude)        
                }, 
                (err) => {
                    //使用者拒絕提供位置許可權操作           
                    console.log('GetLocationFial:', err);          
                    //wx.switchTab({ url: '../newindex/index'})       
                })      
            } ,
            ()=>{
                //使用者拒絕提供位置許可權操作
                 console.log('GetLocationFial:', err);
                // wx.switchTab({url: '../newindex/index'})

            }
        ) 
    }
})複製程式碼

小程式許可權設定(位置)

可以設定許可權的列表

都是一些個人開發總結,不喜勿噴,謝謝



相關文章