H5+APP實現聯網和定位權限提醒並跳轉至設置
H5+APP的項目需要用戶聯網並且定位,沒有開啓相關權限將導致APP無法正常使用。故在程序打開是需要檢測用戶的手機是否開啓相關權限,沒有開啓將提醒用戶開啓。
HTML5 網絡狀態獲取
常量:
CONNECTION_UNKNOW: 網絡狀態常量,表示當前設備網絡狀態未知,固定值爲0。
CONNECTION_NONE: 網絡狀態常量,當前設備網絡未連接網絡,固定值爲1。
CONNECTION_ETHERNET: 網絡狀態常量,當前設備連接到有線網絡,固定值爲2。
CONNECTION_WIFI: 網絡狀態常量,當前設備連接到無線WIFI網絡,固定值爲3。
CONNECTION_CELL2G: 網絡狀態常量,當前設備連接到蜂窩移動2G網絡,固定值爲4。
CONNECTION_CELL3G: 網絡狀態常量,當前設備連接到蜂窩移動3G網絡,固定值爲5。
CONNECTION_CELL4G: 網絡狀態常量,當前設備連接到蜂窩移動4G網絡,固定值爲6。
判斷網絡情況
var connectionStatus = plus.networkinfo.getCurrentType();
if(connectionStatus == 0 || connectionStatus == 1){
mui.toast('無法連接網絡');
}else if(connectionStatus == 3){
mui.toast('使用wifi');
}else{
........
}
HTML5 定位獲取
function getLocation(){
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}else{
alert("瀏覽器不支持地理定位。");
}
}
聯網提醒設置
//獲取當前網絡類型
var nt = plus.networkinfo.getCurrentType();
if (nt == plus.networkinfo.CONNECTION_NONE) {
if(localStorage.getItem('netStatus') == null || localStorage.getItem('netStatus') == 1){
var btnArray = ['取消', '打開網絡'];
localStorage.setItem('netStatus','2');
mui.confirm('您需要打開網絡,纔可以使用【雲師傅】。請到設置->無線局域網(或蜂窩移動網絡)中開啓。','網絡已關閉', btnArray, function(e) {
if (e.index == 1) {
if(mui.os.ios) {
var UIApplication = plus.ios.import("UIApplication");
var NSURL = plus.ios.import("NSURL");
var setting = NSURL.URLWithString("app-settings:");
var application = UIApplication.sharedApplication();
application.openURL(setting);
plus.ios.deleteObject(setting);
plus.ios.deleteObject(application);
localStorage.setItem('netStatus',0);
//判斷手機定位功能是否開啓
app.isOpenPositionin();
}else{
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var mIntent = new Intent('android.settings.WIFI_SETTINGS');
main.startActivity(mIntent);
localStorage.setItem('netStatus',0);
//判斷手機定位功能是否開啓
app.isOpenPositionin();
}
} else {
localStorage.setItem('netStatus','1');
owner.doExitApp();
}
})
}
}else{
localStorage.setItem('netStatus','0');
//判斷手機定位功能是否開啓
app.isOpenPositionin();
}
定位提醒設置
plus.geolocation.getCurrentPosition(function(position){
},function(e){
if(localStorage.getItem('netStatus') == 0){
localStorage.setItem('netStatus','3');
var btnArray = ['取消', '設置'];
mui.confirm('您需要打開定位權限,纔可以使用【雲師傅】。該位置信息用於在管理後臺記錄您的工作軌跡。請到設置->隱私->定位服務中開啓。','定位服務已關閉', btnArray, function(e) {
if (e.index == 1) {
if(mui.os.ios) {
var UIApplication = plus.ios.import("UIApplication");
var NSURL = plus.ios.import("NSURL");
var setting = NSURL.URLWithString("app-settings:");
var application = UIApplication.sharedApplication();
application.openURL(setting);
plus.ios.deleteObject(setting);
plus.ios.deleteObject(application);
}else{
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var mIntent = new Intent('android.settings.LOCATION_SOURCE_SETTINGS');
main.startActivity(mIntent);
}
} else {
localStorage.setItem('netStatus',0);
owner.doExitApp();
}
})
}
},{
provider:'baidu',
geocode:'true'
})