我正在研究如何在应用程序启动时判断设备上是否启用了网络或GPS.如果它们被禁用,则提示用户启用它.
这在React native中可能吗?,有没有任何类或工具可以帮助处理这种类型的对话框?
我正在研究如何在应用程序启动时判断设备上是否启用了网络或GPS.如果它们被禁用,则提示用户启用它.
这在React native中可能吗?,有没有任何类或工具可以帮助处理这种类型的对话框?
所以我要开始回答我自己的问题.
对于GPS:
似乎有一个合理的解决办法.如果有地理定位请求,IOS似乎会在本地请求.对于Android来说,这不是本机支持的,但有人为此创建了一个模块(https://github.com/webyonet/react-native-android-location-services-dialog-box)
因此,在我的action creator中,我添加了下一个代码:
if(Platform.OS === 'android')
LocationServicesDialogBox.checkLocationServicesIsEnabled({
message: "<h2>Use Location?</h2> \
This app wants to change your device settings:<br/><br/>\
Use GPS for location<br/><br/>",
ok: "YES",
cancel: "NO"
}).then(() => {
locationTracking(dispatch, getState, geolocationSettings)
})
对于网络:
export function networkCheck(){
return (dispatch) => {
const dispatchNetworkState = (isConnected) => dispatch({
type: types.NETWORK_STATE,
state: isConnected
})
const handle = () => NetInfo.isConnected.fetch().done(dispatchNetworkState)
NetInfo.isConnected.addEventListener('change', handle);
}
}
多一点:
对于GPS,我添加了这个来判断用户是否在任务进行到一半时go 禁用GPS.
export function locationCheck(geolocationSettings = {enableHighAccuracy: true, timeout: 20000, maximumAge: 10000, distanceFilter:10}){
return (dispatch) => {
navigator.geolocation.watchPosition(
() => {
dispatch({
type: types.LOCATION_STATE,
state: true
})
},
() => {
dispatch({
type: types.LOCATION_STATE,
state: false
})
},
geolocationSettings)
}
}