Background Geolocation
此插件提供在前台和后台以省电“圆形区域监视”和“停止检测”获取地理位置。 有关详细信息,请参阅https://github.com/mauron85/cordova-plugin-background-geolocation
Repo(备用): https://github.com/mauron85/cordova-plugin-background-geolocation
Installation(安装)
1.安装Cordova和Ionic插件:
$ ionic cordova plugin add cordova-plugin-mauron85-background-geolocation
$ npm install --save @ionic-native/background-geolocation
2.添加插件到app's module
Supported platforms(支持平台)
Android
iOS
Usage(用法)
必须在app.ts内或Geolocation之前调用BackgroundGeolocation。 否则,平台不会要求您提供后台跟踪权限。
import { BackgroundGeolocation, BackgroundGeolocationConfig } from '@ionic-native/background-geolocation';
constructor(private backgroundGeolocation: BackgroundGeolocation) { }
...
const config: BackgroundGeolocationConfig = {
desiredAccuracy: 10,
stationaryRadius: 20,
distanceFilter: 30,
debug: true, // enable this hear sounds for background-geolocation life-cycle.
stopOnTerminate: false, // enable this to clear background location settings when the app terminates
};
this.backgroundGeolocation.configure(config)
.subscribe((location: BackgroundGeolocationResponse) => {
console.log(location);
// IMPORTANT: You must execute the finish method here to inform the native plugin that you're finished,
// and the background-task may be completed. You must do this regardless if your HTTP request is successful or not.
// IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.
this.backgroundGeolocation.finish(); // FOR IOS ONLY
});
// start recording location
this.backgroundGeolocation.start();
// If you wish to turn OFF background-tracking, call the #stop method.
this.backgroundGeolocation.stop();
Instance Members(实例成员)
LocationProvider
设置提供地理位置服务 @参照 https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
可能的值: ANDROID_DISTANCE_FILTER_PROVIDER: 0, ANDROID_ACTIVITY_PROVIDER: 1
Accuracy
所需精度以米计。 可能的值[0,10,100,1000]。 数字越小,GeoLocation的功率越多,导致读数越高。 1000导致最低的功耗和最不精确的读数。
可能的值:HIGH:0 MEDIUM:10 LOW:100 PASSIVE:1000
enum {number}
Mode
用于switchMode功能
可能的值: BACKGROUND: 0 FOREGROUND: 1
configure(options)
配置这个插件.
参数 | 类型 | 详情 |
---|---|---|
options | BackgroundGeolocationConfig | Config选项类型的对象 |
****Returns:** Observable
start()
打开后台地理位置系统。 每当挂起应用程序时,用户将被跟踪。
****Returns:** Promise
stop()
停止后台地理位置系统
****Returns:** Promise
finish()
Platforms:****IOS WINDOWS PHONE
通知原生插件已完成,后台任务可能已完成
****Returns:** Promise
changePace(isMoving)
Platforms:****IOS WINDOWS PHONE
强制插件进入“移动”或“静止”状态
参数 | 类型 | 详情 |
---|---|---|
isMoving | boolean |
****Returns:** Promise
setConfig(options)
设置配置
参数 | 类型 | 详情 |
---|---|---|
options | BackgroundGeolocationConfig |
****Returns:** Promise
getStationaryLocation()
Platforms:****IOS WINDOWS PHONE
返回当前的fixedLocation(如果可用)。 如果没有则为null
****Returns:** Promise
onStationary()
Platforms:****IOS WINDOWS PHONE
添加一个静止区域监听器。 每当设备进入“固定模式”时,#success回调将执行#location param,其中包含#radius的区域
****Returns:** Promise
isLocationEnabled()
Platforms:****ANDROID
检查设备上是否启用了位置
****Returns:** Promise
返回一个使用int参数的promise,取值为0,1(true)。
showAppSettings()
显示应用设置来更改权限
showLocationSettings()
显示设备位置设置
watchLocationMode()
Platforms:****ANDROID
方法可用于检测用户位置服务设置的变化。 如果用户启用或禁用位置服务,则将执行成功回调。 如果发生错误(SettingNotFoundException),则将执行回调。
****Returns:** Promise
stopWatchingLocationMode()
Platforms:****ANDROID
停止监测位置模式更改。
****Returns:** Promise
getLocations()
Platforms:****ANDROID
方法将返回所有存储的位置。 当地点存储时:
config.stopOnTerminate is false and main activity was killed by the system or
option.debug is true
****Returns:** Promise
getValidLocations()
方法将返回尚未发布到服务器的位置。 注意:位置确实包含locationId。
****Returns:** Promise
deleteLocation(locationId)
Platforms:****ANDROID
通过给定的locationId删除存储的位置。
参数 | 类型 | 详情 |
---|---|---|
locationId | number |
****Returns:** Promise
deleteAllLocations()
Platforms:****ANDROID
删除所有存储的位置。
****Returns:** Promise
switchMode(modeId)
Platforms:****IOS
通常插件将处理BACKGROUND和FOREGROUND模式之间的切换。 调用switchMode可以覆盖插件行为,并强制插件切换到其他模式。
在FOREGROUND模式下,插件使用iOS本地管理器接收位置和行为受option.desiredAccuracy和option.distanceFilter的影响。
在BACKGROUND 模式中,插件使用重大更改和区域监视来接收位置,并使用option.stationaryRadius。
BackgroundGeolocation.Mode.FOREGROUND BackgroundGeolocation.Mode.BACKGROUND *
参数 | 类型 | 详情 |
---|---|---|
modeId | number |
****Returns:** Promise
getLogEntries()
返回所有记录的事件。 适用于插件调试。 参数限制返回条目数。 @更多信息参见https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging
@param limit {number} 限制条目数量
****Returns:** Promise
BackgroundGeolocationResponse
参数 | 类型 | 详情 |
---|---|---|
locationId | number | 存储在DB中的位置ID(或null) |
serviceProvider | string | 提供服务 |
debug | boolean | 如果为true位置记录为调试的一部分 |
time | number | 这个规定的UTC时间,从1970年1月1日以来的毫秒。 |
latitude | number | 纬度,以度为单位。 |
longitude | number | 经度,度数。 |
accuracy | number | 这个位置的估计精确度,以米为单位。 |
speed | number | 速度,如果有的话,以米/秒为单位。 |
altitude | number | 海拔是否可用,以米为单位的WGS84参考椭球。 |
altitudeAccuracy | number | 海拔高度的准确度。 |
bearing | number | 轴承,以度为单位。 |
coords | Coordinates | 定义当前位置的坐标对象 |
timestamp | number | 表示检索位置的时间的时间戳。 |
BackgroundGeolocationConfig
参数 | 类型 | 详情 |
---|---|---|
desiredAccuracy | number | 所需精度以米计。 可能的值[0,10,100,1000]。 数字越小,GeoLocation的功率越多,导致读数越高。 1000导致最低的功耗和最不精确的读数。@请参阅苹果文档(https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instp/CLLocationManager/desiredAccuracy) |
stationaryRadius | number | 固定半径(米)。 当停止时,设备必须移动超过固定位置的最小距离,以进行有效的后台跟踪。 |
debug | boolean | 启用后,插件会发出背景地理位置的生命周期事件的声音! 参见调试声音表。(可选) |
distanceFilter | number | 在生成更新事件之前,设备的最小距离(以米为单位)必须水平移动。 @请参阅苹果文档. (https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instp/CLLocationManager/distanceFilter) |
stopOnTerminate | boolean | IOS,ANDROID ONLY启用此功能以在应用程序终止时强制停止(例如,在iOS上,双击Home按钮,滑开应用程序).默认为true (可选) |
starOnBoot | boolean | ANDROID ONLY在设备启动时启动后台服务。 默认为false(可选) |
startForeground | boolean | ANDROID ONLY如果为false位置服务不会在前台启动,并且不会显示任何通知。默认为true (可选) |
interval | number | ANDROID,WP8 ONLY当使用BackgroundGeolocation.LocationProvider.ANDROID_DISTANCE_FILTER_PROVIDER:位置更新之间的最小时间间隔(以毫秒为单位)(可选) |
notificationTitle | string | ANDROID ONLY抽屉中的自定义通知标题(可选) |
notificationText | string | ANDROID ONLY抽屉中的自定义通知文本(可选) |
notificationIconColor | string | ANDROID ONLY用于通知的重音颜色。 例如。#4CAF50。(可选) |
notificationIconLarge | string | ANDROID ONLY自定义通知图标的文件名。 看到android quirks。 注意:仅适用于API Level> = 21。(可选) |
notificationIconSmall | string | ANDROID ONLY自定义通知图标的文件名。 看到android quirks。 注意:仅适用于API Level> = 21。(可选) |
locationProvider | number | ANDROID ONLY设置位置服务提供商@参见 wiki (https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers)(optional) |
activityType | string | IOS ONLY [AutomotiveNavigation, OtherNavigation, Fitness, Other]想必只有这些会影响IOS GPS算法 . @参见苹果文(https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instp/CLLocationManager/activityType)(optional) |
pauseLocationUpdates | boolean | IOS ONLY暂停应用程序暂停时的位置更新默认为true (可选) |
url | string | 服务器URL,发送带有记录位置的HTTP POST (可选) |
syncUrl | string | 服务器URL,发送不能获取位置的POST(可选) |
syncThreshold | number | 指定将一次发送到服务器的以前失败的位置数量 默认为100 (可选) |
httpHeaders | any | HTTP请求中发送的可选HTTP标头(可选) |
saveBatteryOnBackground | boolean | IOS ONLY在后台切换到不太准确的显示变化和区域监控,默认为100 (可选) |
maxLocations | number | 限制存储在db中的最大位数默认值为10000 (可选) |
fastestInterval | number | ANDROID ONLY与BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER您的应用可以处理位置更新的最快速度(以毫秒为单位)。(可选的) |
activitiesInterval | number | ANDROID ONLY与BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER以毫秒为单位进行活动识别发生的速率。 更大的值将导致更少的活动检测,同时提高电池寿命(可选) |
stopOnStillActivity | boolean | ANDROID ONLY与BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER stop()被制止,当检测到STILL活动(默认为true)(可选的) |