我正在研究如何在应用程序启动时判断设备上是否启用了网络或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)
  }
}

React-native相关问答推荐

复活的夹子在Panguesture上崩溃

NativeWind边框 colored颜色 在Reaction Native应用程序中未按预期工作

未执行迁移?

自定义单选按钮在react native 中不起作用

React onPress 立即执行(渲染时间),但是一旦用箭头函数替换它就不起作用

是否有用于react-native 的简单同步存储选项?

在 TouchableOpacity 上创建 Raised凸起或Shadow阴影效果

在react-native 模块库中找不到 ios 框架头文件

如何在react-native 中处理不同的屏幕尺寸?

试图注册两个同名的视图 RNGestureHandlerButton

无法解析模块 react/lib/ReactUpdates

在 Docker 中使用 Fastlane 构建 iOS 应用

如何将 Crashlytics 与 React Native 应用程序集成

React Native require(image) 返回数字

如何在 React Native 中优化图像

React Native 得到这个错误'Unrecognized operator abs'

在 React Native 中使用小数

JSON 解析错误:无法识别的令牌'<'

在 React Native 中检测向左滑动

如何更改后退按钮标签,react-navigation