uniapp获取当前位置及检测授权状态——支持App、微信小程序

uniapp获取当前位置检测及定位权限——支持App、微信小程序

首先,祝天下母亲,节日快乐~

文章目录

    • uniapp获取当前位置检测及定位权限——支持App、微信小程序
      • 效果图
      • 新增 兼容小程序方法
      • manifest


Tips:

  • 上一篇介绍 App端 uniapp获取当前位置及检测授权状态
  • 在 基础上 兼容 微信小程序,使用方法是一样的,这里就不再介绍了,需要朋友们直接 copy 即可使用哦~;

效果图

在这里插入图片描述


在这里插入图片描述


新增 兼容小程序方法

  • location.js 新增 兼容小程序方法
  • 新增方法:
    • getSetting
    • showConfirm
    • openSetting
// #ifdef APP-PLUS
import permision from '@/common/js/permission.js'
// #endif
import store from '@/store/index.js'var modalInfo = {content: '为了您更好的体验App蓝牙功能,需要获取位置信息,请点击设置开启定位权限',confirmText: '设置'
}export async function getLocation(cb) {// #ifdef APP-PLUSlet status = await checkPermission();if (status !== 1) {return status;}// #endif// #ifdef MP-WEIXINlet status = await getSetting();if (status === 2) {showConfirm();return;}// #endifif (typeof cb == 'function') cb && typeof cb == 'function' && cb(status)doGetLocation();
}export const doGetLocation = () => {uni.getLocation({success: (res) => {store.commit('SET_LOCATION', {lng: res.longitude,lat: res.latitude});console.log('当前位置:', res.longitude, res.latitude);},fail: (err) => {if (err.errMsg.indexOf("auth deny") >= 0) {uni.showToast({title: '访问位置被拒绝',icon: 'none'})} else {uni.showToast({title: err.errMsg,icon: 'none'})}}})
}async function checkPermission() {let status = permision.isIOS ? await permision.requestIOS('location') :await permision.requestAndroid('android.permission.ACCESS_FINE_LOCATION');if (status === null || status === 1) {status = 1;} else if (status === 2) {uni.showModal({content: '系统定位已关闭',showCancel: false,success: function(res) {}})} else if (status.code) {uni.showModal({content: status.message})} else {uni.showModal({content: modalInfo.content,confirmText: modalInfo.confirmText,success: function(res) {if (res.confirm) {permision.gotoAppSetting();}}})}return status;
}/*** 获取用户的当前设置*/
function getSetting() {return new Promise((resolve, reject) => {uni.getSetting({success: (res) => {if (res.authSetting['scope.userLocation'] === undefined) {resolve(0);return;}if (res.authSetting['scope.userLocation']) {resolve(1);} else {resolve(2);}}});});
}/*** 拒绝授权:弹窗可以和App共用,根据平台调用方法,自行修改下即可;*/
function showConfirm() {uni.showModal({content: modalInfo.content,confirmText: modalInfo.confirmText,showCancel: true,success: (res) => {if (res.confirm) {openSetting();}}})
}/*** 如果拒绝授权,调起微信小程序设置界面*/
function openSetting() {uni.openSetting({success: (res) => {if (res.authSetting && res.authSetting['scope.userLocation']) {doGetLocation();}},fail: (err) => {}})
}const location = {getLocation
}
export default location;

manifest

  • manifest.js 中,添加 "requiredPrivateInfos" : [ "getLocation" ]
"mp-weixin" : {"appid" : "xxxx","setting" : {"urlCheck" : false,"es6" : true,"postcss" : true,"minified" : true},"usingComponents" : true,"lazyCodeLoading" : "requiredComponents","permission" : {"scope.userLocation" : {"desc" : "你的位置信息将用于为了更好体验蓝牙功能"}},"libVersion" : "latest","requiredPrivateInfos" : [ "getLocation" ]
},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704681.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ requires关键字简介

requires 是 C20 中引入的一个新关键字,用于在函数模板或类模板中声明所需的一组语义要求,它可以用来限制模板参数,类似于 typename 和 class 关键字。 requires关键字常与type_traits头文件下类型检查函数匹配使用,当requires后…

React渲染流程

在 React 渲染分为两个阶段,Render 和 Commit,Render 是修改 React 组件的状态,把需要更新的组件标记为待更新,在 Commit 阶段将待更新的组件进行渲染并最终更新到浏览器的 Dom 树中。 Render 阶段是可以并执行操作的&#xff0c…

【Image captioning】基于检测模型网格特征提取——以Sydeny为例

【Image captioning】基于检测模型网格特征提取——以Sydeny为例 今天,我们将重点探讨如何利用Faster R-CNN检测模型来提取Sydeny数据集的网格特征。具体而言,这一过程涉及通过Faster R-CNN模型对图像进行分析,进而抽取出关键区域的特征信息,这些特征在网格结构中被系统地…

【考研数学】准备开强化,更「张宇」还是「武忠祥」?

数一125学长前来回答,选择哪位老师的课程,这通常取决于你的个人偏好和学习风格! 张宇老师和武忠祥老师都是非常有经验的数学老师,他们的教学方法各有特点。 张宇老师的教学风格通常被认为是通俗易懂,善于将复杂的概念…

国际化日期(inti)

我们可以使用国际化API自动的格式化数字或者日期,并且格式化日期或数字的时候是按照各个国家的习惯来进行格式化的,非常的简单; const now new Date(); labelDate.textContent new Intl.DateTimeFormat(zh-CN).format(now);比如说这是按照…

使用RN的kitten框架的日历组件的修改

官方网页地址 下面就是我参考官方封装的时间日期组件(主要是功能和使用方法,页面粗略做了下,不好看勿怪) import React, {useState} from react; import {StyleSheet, View, TouchableOpacity, SafeAreaView} from react-native; …

5 个免费使用 GPT-4o 的方法

5 个免费使用 GPT-4o 的方法 虽然距离 OpenAI 发布 GPT-4o 已过去一天,我仍然对 GPT-4o 感到震撼。Demo 中语音助手功能实在是太令人惊叹了——它咯咯的笑声、准确的语气感叹和歌唱方式让 Siri 和 Google Assistant 显得相形见绌。 虽然备受期待的语音助手功能还要…

【计算机毕业设计】springboot分类信息服务平台移动端的设计与实现

分类信息 服务平台设计的目的是为用户提供活动信息、活动记录等方面的平台。 与PC端应用程序相比,分类信息服务平台的设计主要面向于移动端,旨在为管理员和用户、商铺提供一个分类信息服务平台。用户可以通过Android及时查看活动信息等。 分类信息服务平…

【软件测试】需求概念|软件的⽣命周期|开发模型|测试模型

目录 推荐 一、什么是需求 1.1 ⽤⼾需求 1.2 软件需求 二、开发模型 2.1 什么是“模型” 2.2 软件的⽣命周期 2.3 常⻅开发模型 2.3.1 瀑布模型 2.3.2 螺旋模型 2.3.3 增量模型、迭代模型 2.3.4 敏捷模型 2.4 测试模型 2.4.1 V模型 2.4.2 W模型(双V模型&#xff0…

电脑缺失api-ms-win-crt-runtime-l1-1-0.dll文件的几种修复方法

当您在使用电脑过程中遇到程序启动失败,提示缺少“api-ms-win-crt-runtime-l1-1-0.dll”文件时,不必过于焦虑,此问题通常与Windows系统的Visual C Redistributable组件未正确安装或损坏有关。小编将介绍5种修复电脑缺失api-ms-win-crt-runtim…

在做题中学习(59):除自身以为数组的乘积

238. 除自身以外数组的乘积 - 力扣(LeetCode) 解法:前缀积和后缀积 思路:answer中的每一个元素都是除自己以外所有元素的和。那就处理一个前缀积数组和后缀积数组。 而前缀积(f[i])是:[0,i-1]所有元素的乘积 后缀…

代码随想录训练营Day 29|力扣39. 组合总和、40.组合总和II、131.分割回文串

1.组合总和 题目链接/文章讲解: 代码随想录 视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_bilibili 代码:(未剪枝版 &#xf…