判断IOS与Android定位权限
大约 2 分钟
判断IOS与Android定位权限
苹果和安卓的定位权限
runtimeMainActivity() {
const that = this;
let system = uni.getSystemInfoSync(); // 获取系统信息
console.log(system);
if (system.platform === 'android') { // 判断平台
console.log("安卓");
var context = plus.android.importClass("android.content.Context");
var locationManager = plus.android.importClass("android.location.LocationManager");
var main = plus.android.runtimeMainActivity();
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
uni.showModal({
title: '提示',
cancelText: '前往设置', //取消文字
confirmText: '取消', //确认文字
content: '当前APP扫描蓝牙需要打开定位功能',
success(res) {
if(res.confirm){
plus.runtime.quit(); //退出应用
}else{
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
var Intent = plus.android.importClass('android.content.Intent');
var Settings = plus.android.importClass('android.provider.Settings');
var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
main.startActivity(intent); // 打开系统设置GPS服务页面
} else {
console.log('手机系统的定位已经打开');
}
}
}
});
}else{
console.log("手机系统的定位已经打开");
}
} else if (system.platform === 'ios') {
console.log("苹果");
var cllocationManger = plus.ios.import("CLLocationManager");
var enable = cllocationManger.locationServicesEnabled();
var status = cllocationManger.authorizationStatus();
plus.ios.deleteObject(cllocationManger);
if (enable && status != 2) {
console.log("手机系统的定位已经打开");
} else {
console.log("手机系统的定位没有打开");
uni.showModal({
title: '提示',
content: '请前往设置-隐私-定位服务打开定位服务功能',
showCancel: false, // 不显示取消按钮
success() {
var UIApplication = plus.ios.import("UIApplication");
var application2 = UIApplication.sharedApplication();
var NSURL2 = plus.ios.import("NSURL");
var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION");
application2.openURL(setting2);
plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2);
}
});
}
}
},
小程序定位权限
connectBlue() {
const that = this;
console.log('再次提示授权')
// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.bluetooth" 这个 scope
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation'] || !res.authSetting['scope.bluetooth']) {
let content = ''
if (res.authSetting['scope.userLocation'] == false && res.authSetting[
'scope.bluetooth'] == false) {
content = '请求获取定位权限和蓝牙权限'
} else if (res.authSetting['scope.userLocation'] == false) {
content = '请求获取定位权限'
} else {
content = '请求获取蓝牙权限'
}
wx.showModal({
title: '提示',
content: content,
success: function(res) {
if (res.confirm == false) {
console.log('取消')
return false;
}
wx.openSetting({
success(res) {
//如果再次拒绝则返回页面并提示
if (!res.authSetting['scope.userLocation']) {
wx.showToast({
title: '此功能需获取定位权限,请重新设置',
duration: 3000,
icon: 'none'
})
} else if (!res.authSetting['scope.bluetooth']) {
wx.showToast({
title: '此功能需获取蓝牙权限,请重新设置',
duration: 3000,
icon: 'none'
})
} else {
//定位权限和蓝牙权限都获取后,再次判断
that.plaBlue();
console.log('授权成功')
}
}
})
}
})
} else {
//定位权限和蓝牙权限都获取后,再次判断
that.plaBlue();
console.log('授权成功')
}
}
})
},