L'applet WeChat obtient l'autorisation de localisation et l'utilisateur refuse l'autorisation, puis redirige l'utilisateur pour autoriser

L'applet WeChat obtient l'autorisation de localisation et l'utilisateur refuse l'autorisation, puis redirige l'utilisateur pour autoriser

Résoudre le problème:

​ L'applet WeChat obtient les autorisations de localisation. L'utilisateur clique sur Autoriser puis sélectionne directement un point sur la carte, ou l'utilisateur refuse l'autorisation et le guide vers la page des paramètres pour une nouvelle autorisation. Si le code est requis, glissez directement vers le bas de page.

Méthode d'appel :

1. Utiliser pour uni.getSettingobtenir les paramètres actuels de l'utilisateur

2. Utilisez-le pour uni.authorizelancer des demandes d'autorisation auprès des utilisateurs à l'avance. Une fois l'appel effectué, une fenêtre contextuelle demandera immédiatement à l'utilisateur s'il accepte d'autoriser l'applet à utiliser une certaine fonction ou à obtenir certaines données de l'utilisateur, mais l'interface correspondante ne sera pas réellement appelée. Si l'utilisateur a préalablement accepté l'autorisation, aucune fenêtre pop-up n'apparaîtra et le succès sera renvoyé directement. Si l'utilisateur a précédemment refusé l'autorisation, cette interface entrera directement le rappel d'échec. Elle est généralement utilisée uni.getSettingavecuni.openSetting

3. Utilisez pour uni.openSettingappeler l'interface de configuration de l'applet client et renvoyer les résultats de l'opération définis par l'utilisateur.

4.Utilisez pour uni.chooseLocationouvrir la carte et sélectionner l'emplacement

Solutions:

Utiliser uni.getSettingpour obtenir des informations sur les paramètres et la liste des autorisations des utilisateurs :

Si l'utilisateur est autorisé, appelez directement pour uni.chooseLocationouvrir la carte et sélectionner l'emplacement ;

S'il n'a pas encore été autorisé, utilisez pour uni.authorizelancer l'autorisation

[Échec du transfert d'image par lien externe. Le site source peut avoir un mécanisme anti-sangsue. Il est recommandé de sauvegarder l'image et de la télécharger directement (img-lu4uD0ap-1648964361911) (C:\Users\GIGABYTE\AppData\Roaming\Typora\ typora-user-images\ 1648964049110.png)]

Si l'utilisateur clique sur Autoriser, appelez la fonction de sélection des informations sur l'emplacement pour sélectionner l'emplacement.

Si l'utilisateur clique sur Refuser ou s'il a déjà cliqué sur Refuser l'autorisation, ouvrez la boîte modale des paramètres utilisateur.
Insérer la description de l'image ici

Utiliser pour uni.openSettingappeler l'interface de configuration de l'applet client

[Échec du transfert d'image par lien externe. Le site source peut avoir un mécanisme anti-sangsue. Il est recommandé de sauvegarder l'image et de la télécharger directement (img-KPiAGywB-1648964361912) (C:\Users\GIGABYTE\AppData\Roaming\Typora\ typora-user-images\ 1648963973941.png)]

L'utilisateur clique sur Autoriser dans les paramètres et appelle la fonction de sélection des informations de localisation.

[Échec du transfert de l'image du lien externe. Le site source peut avoir un mécanisme anti-sangsue. Il est recommandé de sauvegarder l'image et de la télécharger directement (img-UU9WQNf1-1648964361913) (C:\Users\GIGABYTE\AppData\Roaming\Typora\ typora-user-images\ 1648964288498.png)]

Lorsque l'utilisateur clique sur Non autorisé dans les paramètres, le message de refus d'autorisation s'affiche.

[Échec du transfert de l'image du lien externe. Le site source peut avoir un mécanisme anti-sangsue. Il est recommandé de sauvegarder l'image et de la télécharger directement (img-GDBdz7pq-1648964361913) (C:\Users\GIGABYTE\AppData\Roaming\Typora\ typora-user-images\ 1648964258438.png)]

Code complet :

Balises de page

<!-- 点击按钮获取地图位置信息 -->
<view @click="getSetting">{
   
   { address }}</view>


<!-- 为保持页面modal弹框UI样式一致,使用第三方uView组件 -->
<u-modal v-model="isShowOpen" :content="content" @confirm="openSetting"  :show-cancel-button="true"></u-modal>

méthode:

export default{
    
    
    data(){
    
    
        address: '点击添加地址(必填)',
        isShowOpen:false,//是否打开设置
		content:'检测到您没打开获取位置功能权限,是否去设置打开?',
    },
    methods:{
    
    
            // 1.获取设置信息-用户权限列表
			getSetting() {
    
    
				const that = this;
				uni.getSetting({
    
    
					success: res => {
    
    
						console.log('用户权限列表:', res.authSetting)
						if (res.authSetting['scope.userLocation']) {
    
    
							console.log('已授权userLocation')
							// 选择位置信息
							that.chooseLocation();
						} else {
    
    
							console.log('用户未授权userLocation')
                            //2.用户第一次进来发起授权
							uni.authorize({
    
    
								scope: 'scope.userLocation', 
								success: (res1) => {
    
    
									console.log("允许授权", res1);
									// 3.如果用户点击了允许,调用选择位置信息函数选择位置
									that.chooseLocation();
								},
								fail: (err1) => {
    
    
									console.log("拒绝授权", err1);
                                    // 3.如果用户点击了拒绝或者用户之前点击过拒绝授权,打开用户设置模态框
									that.isShowOpen = true;
								},
							})
						}
					}
				})
			},
                
            // 4.打开设置
			openSetting(){
    
    
				const that = this;
				uni.openSetting({
    
    
					success: (res) => {
    
    
						console.log("打开设置成功", res);
						if (res.authSetting['scope.userLocation']) {
    
    
							console.log('成功授权userLocation')
							// 5.用户在设置中点击了允许,调用选择位置信息函数
							that.chooseLocation();
						} else {
    
    
							console.log('用户未授权userLocation')
                            // 5.用户在设置中点击了不允许,展示拒绝授权信息
							uni.showToast({
    
    
								title: '你拒绝了授权,无法操作内容',
								icon: 'none',
								duration: 3000,
							})
						}
					},
					fail: (err) => {
    
    
						console.log("打开设置失败", err)
					}
				})
			},


			// 选择位置信息
			chooseLocation() {
    
    
				uni.chooseLocation({
    
    
					success: (res) => {
    
    
						console.log("选择位置信息", res)
						this.address = res.address + res.name
						this.lat = res.latitude
						this.lng = res.longitude
					},
					fail(err) {
    
    
						console.log("选择位置信息失败或者点击了取消按钮", err)
					},
				})
			},
                
            
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/m0_52459016/article/details/123936449
conseillé
Classement