Kendi sorumu yanıtlamaya başlayacağım. GPS için
:
mantıklı bir çözüm gibi görünüyor. IOS, coğrafi konum isteğinin olup olmadığını yerel olarak talep ediyor gibi görünüyor. Ağı için
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)
})
: hiçbir yerli destek var ve Android için yani benim eylem yaratıcısı içinde bir sonraki kod eklendi bu doğal desteklenmiyor ama birileri o (https://github.com/webyonet/react-native-android-location-services-dialog-box)
için bir modül yarattı Ne de olsa ben kontrol etmek için kendi eylem yaratıcımı yapıyorum.
Biraz daha
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 i görevin ortasında GPS'i kullanıcı giderse kontrol etmek ve devre dışı bırakmak için bu ekledi.
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)
}
}
"IOS, coğrafi konum isteğinin olup olmadığını yerel olarak talep ediyor" - yalnızca ilk istekte olduğu anlaşılıyor. Daha sonraki taleplerde sadece koddan başarısız olurlar ve herhangi bir iletişim istemi göstermezler. IOS SE ile bir iPhone SE'de test edildi ve "Yer hizmetleri devre dışı bırakıldı" mesajı aldım. – Vee6