react-native 检查并提示用户启用网络/GPS

新手上路,请多包涵

我正在寻找如何在我的应用程序启动时检查设备上是否启用了网络或 GPS。如果它们被禁用,则提示用户启用它。

这在 React-native 中可行吗?是否有任何类或工具可以帮助处理这种类型的对话框?

原文由 Kanekotic 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 788
1 个回答

所以我要开始回答我自己的问题了。

对于 GPS:

似乎有一个明智的解决方案。如果有地理定位请求,IOS 似乎会原生请求。对于Android,这不是本机支持的,但有人为此创建了一个模块( https://github.com/webyonet/react-native-android-location-services-dialog-box

所以在我的动作创建器中,我添加了下一个代码:

 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,我添加了这个来检查用户是否在任务中间关闭并禁用 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)
  }
}

原文由 Kanekotic 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题