react-native-location, 在提供 GPS 位置信息的情况下,响应本机插头

分享于 

11分钟阅读

GitHub

  繁體 雙語
React Native plug-in that provides beacon and GPS location information
  • 源代码名称:react-native-location
  • 源代码网址:http://www.github.com/timfpark/react-native-location
  • react-native-location源代码文档
  • react-native-location源代码下载
  • Git URL:
    git://www.github.com/timfpark/react-native-location.git
    Git Clone代码到本地:
    git clone http://www.github.com/timfpark/react-native-location
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/timfpark/react-native-location
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    react-native-location

    本机 GPS 位置支持对本机的支持。

    安装

    为兼容性和易用性提供了三种安装方法。 所有这些都需要使用NPM安装软件包。 但是,你可以使用以下三种方法之一来安装特定的位: RNPM,响应本机链接( 只有 v0.28 ),或者在XCode中手动链接。

    所有三个步骤的第一步是将NPM安装到你的项目中:

    
    npm install --save react-native-location
    
    
    
    
    RNPM安装

    对于 RNPM,首先全局安装 RNPM,然后在项目的root的中使用'链接'命令运行它:

    
    npm install rnpm -g
    
    
    rnpm link
    
    
    
    
    本地链接安装

    自版本 0.28的React Native,rnpm已经合并到代码库中。 所以只要使用最新版本的CLI,就可以简单地运行链接:

    
    react-native link
    
    
    
    
    手动安装

    最后,你可以使用XCode进行手动安装。 将 ios/RNLocation.xcodeprojnode_modules/react-native-location 文件夹拖到XCode项目中。 点击XCode中的项目,进入构建阶段,然后将二进制链接到库并添加 libRNLocation.aCoreLocation.framework

    注意:确保你在XCode中没有单独打开 RNLocation 项目,否则它将无法工作。

    示例应用程序

    示例文件夹是一个响应本地示例应用程序,它只允许你测试库是否为你工作。 你还可以将它作为一个示例实现,从。 应用请求总是在权限上,每 5秒读取一次,立即启动。 要使用模拟器,可以查看 Debug -> Location 菜单中的可选样例旅行,这样可以更新城市Bicicle飞行和高速公路。

    Example App

    权限

    为了使用权限,封闭应用程序需要在 info.plist 文件中授予权限。 自动设置本机设置的PList配置键为 NSLocationWhenInUseUsageDescription 但是,要使用 NSLocationAlwaysUsageDescription,你需要在PList文件中添加它。 密钥中的字符串消息将在你的应用程序请求权限时显示在警告框中。 首先,你可以简单地将这些添加到文件中,然后将它的编辑为( 或者删除它们)。 记住只在应用程序中请求你需要的权限。 稍后查看背景模式的详细信息。

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>This is the plist item for NSLocationWhenInUseUsageDescription</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>This is the plist item for NSLocationAlwaysUsageDescription</string>

    电子邮件地址用法

    var React =require('react-native');var { DeviceEventEmitter } = React;var { RNLocation:Location } =require('NativeModules');Location.requestAlwaysAuthorization();Location.startUpdatingLocation();Location.setDistanceFilter(5.0);var subscription =DeviceEventEmitter.addListener(
     'locationUpdated',
     (location) => {
     /* Example location returned { coords: { speed: -1, longitude: -0.1337, latitude: 51.50998, accuracy: 5, heading: -1, altitude: 0, altitudeAccuracy: -1 }, timestamp: 1446007304457.029 }*/ }
    );

    标题用法

    
    var React = require('react-native');
    
    
    var { DeviceEventEmitter } = React;
    
    
    
    var { RNLocation: Location } = require('NativeModules');
    
    
    Location.requestAlwaysAuthorization();
    
    
    Location.startUpdatingHeading();
    
    
    
    DeviceEventEmitter.addListener(
    
    
     'headingUpdated',
    
    
     (data) => {
    
    
    /* Example data returned
    
    
     {
    
    
     heading: 57.2839832
    
    
     }
    
    
     */
    
    
     }
    
    
    );
    
    
    
    

    建议在 info.plist 文件中设置 NSWhenInUseUsageDescription

    背景模式

    为了使后台模式正常工作,需要配置以下几个方面:

    在Xcode项目中,转到功能,switch 上的"背景模式"并检查"位置更新"。

    使用 requestAlwaysAuthorization 代替 requestWhenInUseAuthorization,如下所示:

    Location.requestAlwaysAuthorization();

    info.plist 文件中设置 NSLocationAlwaysUsageDescription

    对于 iOS9,将 allowsBackgroundLocationUpdates 设置为 true,如下所示:

    Location.setAllowsBackgroundLocationUpdates(true);

    方法

    要访问这些方法,你需要导入 react-native-location MODULE。 这是通过 var Location = require('react-native-location')

    Location.requestWhenInUseAuthorization

    Location.requestWhenInUseAuthorization();

    这里方法应在任何其他方法之前调用。 当应用程序打开时,它请求位置更新。 如果应用程序处于后台,则无法获取位置更新。 这里方法或者 Location.requestAlwaysAuthorization ( 但并非两者都需要调用以接收更新)。

    Location.requestAlwaysAuthorization

    Location.requestAlwaysAuthorization();

    在调用任何其他方法之前,应调用这里方法。 它在应用程序打开或者后台时请求位置更新。 这里方法或者 Location.requestWhenInUseAuthorization ( 但并非两者都需要调用以接收更新)。

    Location.getAuthorizationStatus

    Location.getAuthorizationStatus(function(authorization) {
     // authorization is a string which is either"authorizedAlways",//"authorizedWhenInUse","denied","notDetermined" or"restricted"});

    这里方法获取当前授权状态。 虽然这里方法提供回调,但不异步执行。 值 authorizedAlwaysauthorizedWhenInUse 分别对应于 requestWhenInUseAuthorizationrequestAlwaysAuthorization

    Location.setDesiredAccuracy

    Location.setDesiredAccuracy(distanceInMeters);

    设置所需位置更新的精确度( 以米计)。 确定用于获取位置更新的方法。 使用 GPS 将触发较低的值。

    Location.setDistanceFilter

    Location.setDistanceFilter(distanceInMeters);

    设置位置更新的期望最小距离以米计。

    Location.startMonitoringSignificantLocationChanges

    Location.startMonitoringSignificantLocationChanges();

    Location.startUpdatingLocation

    Location.startUpdatingLocation();var subscription =DeviceEventEmitter.addListener(
     'locationUpdated',
     (location) => {
     // do something with the location }
    );

    开始位置更新。你的应用程序将通过满足你通过DeviceEventEmitter事件'locationUpdated'指定的最小最小距离要求的位置更新来调用。

    Location.startUpdatingHeading

    Location.startUpdatingHeading();var subscription =DeviceEventEmitter.addListener(
     'headingUpdated',
     (data) => {
     // do something with the heading }
    );

    启动标题更新你的应用程序将被heading更新 called。

    Location.stopUpdatingLocation

    Location.stopUpdatingLocation();

    停止接收位置事件。

    Location.stopUpdatingHeading

    Location.stopUpdatingHeading();

    停止接收标题事件。

    Location.stopMonitoringSignificantLocationChanges

    Location.stopMonitoringSignificantLocationChanges();

    停止接收sigificant位置更改事件。

    事件

    要监听事件,我们需要调用 DeviceEventEmitter.addListener ( var {DeviceEventEmitter} = require('react-native') 如果第一个参数是我们要监听的事件,第二个参数是一个回调函数,该函数将在触发事件后被调用。

    locationUpdated

    当系统感知到位置更新时收到。 事件提供一个参数,位置,它是具有位置。高程和精度数据的对象。

    headingUpdated

    当标题更改时收到。 事件传递一个参数: 具有当前标题的对象,以度为单位。

    许可证

    MIT,有关更多信息,请参见 LICENSE


    react  LOC  NAT  INF  Native  info  
    相关文章