H5+APP實現聯網和定位權限提醒並跳轉至設置

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'
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章