文章目录
1.cordova插件代码
插件:
cordova-diagnostic-plugin (github)
代码:
//授权都是ok的才会给回调,否则不会有回调,去找用户要授权去了
function locationAvailable(callBack) {
//位置是否授权
cordova.plugins.diagnostic.isLocationAuthorized(function (authorized) {
console.log("Location is " + (authorized ? "authorized" : "unauthorized"));
if (authorized) {
isLocationEnabled(callBack)
} else {
getLocationAuthorizationStatus()
}
}, function (error) {
console.error("The following error occurred: " + error);
});
}
function isLocationEnabled(callBack) {
//gps是否打开,设置里的位置开关是否打开
cordova.plugins.diagnostic.isLocationEnabled(function (enabled) {
console.log("Location setting is " + (enabled ? "enabled" : "disabled"));
if (enabled) {
callBack()
} else {
function onConfirm(buttonIndex) {
if (buttonIndex == 2) {
cordova.plugins.diagnostic.switchToLocationSettings();
}
}
navigator.notification.confirm(
Language.gpsOpenAlert, // message
onConfirm, // callback to invoke with index of button pressed
Language.prompt, // title
[Language.cancel, Language.done] // buttonLabels
);
}
}, function (error) {
console.error("The following error occurred: " + error);
});
}
function getLocationAuthorizationStatus() {
cordova.plugins.diagnostic.getLocationAuthorizationStatus(function (status) {
console.log(status)
switch (status) {
case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
console.log("Permission not requested");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS:
console.log("Permission denied always");
break;
case cordova.plugins.diagnostic.permissionStatus.GRANTED:
console.log("Permission granted always");
break;
case cordova.plugins.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE:
console.log("Permission granted only when in use");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED_ONCE:
console.log("Permission denied once");
break;
}
if (status == cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS) {
//弹框后跳到设置界面
console.log("弹框")
function onConfirm(buttonIndex) {
if (buttonIndex == 2) {
console.log("跳到设置界面")
cordova.plugins.diagnostic.switchToSettings(function(){
console.log("Successfully switched to Settings app");
}, function(error){
console.error("The following error occurred: "+error);
});
}
}
navigator.notification.confirm(
Language.locationAuthoritied, // message
onConfirm, // function(){} callback to invoke with index of button pressed
Language.prompt, // title
[Language.cancel, Language.done] // buttonLabels
);
return
}
//请求位置授权 ios,android都可以呼出,并且有用户选择的回调
cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
console.log(status);//authorized_when_in_use
}, function(error){
console.error(error);
}, cordova.plugins.diagnostic.locationAuthorizationMode.WHEN_IN_USE);//ALWAYS
}, function (error) {
console.error("The following error occurred: " + error);
});
}
2.iOS请求用户授权的系统位置弹框也是可以用代码调出来的
示例:
//请求位置授权 ios,android都可以呼出,并且有用户选择的回调
cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
console.log(status);//authorized_when_in_use
}, function(error){
console.error(error);
}, cordova.plugins.diagnostic.locationAuthorizationMode.WHEN_IN_USE);//ALWAYS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。