Background Geolocation
此插件提供在前臺(tái)和后臺(tái)以省電“圓形區(qū)域監(jiān)視”和“停止檢測(cè)”獲取地理位置拗秘。 有關(guān)詳細(xì)信息栗恩,請(qǐng)參閱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
Supported platforms(支持平臺(tái))
Android
iOS
Usage(用法)
必須在app.ts內(nèi)或Geolocation之前調(diào)用BackgroundGeolocation。 否則,平臺(tái)不會(huì)要求您提供后臺(tái)跟蹤權(quán)限。
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(實(shí)例成員)
設(shè)置提供地理位置服務(wù) @參照 https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
可能的值: ANDROID_DISTANCE_FILTER_PROVIDER: 0, ANDROID_ACTIVITY_PROVIDER: 1
所需精度以米計(jì)锌仅。 可能的值[0,10墙贱,100热芹,1000]。 數(shù)字越小惨撇,GeoLocation的功率越多伊脓,導(dǎo)致讀數(shù)越高。 1000導(dǎo)致最低的功耗和最不精確的讀數(shù)魁衙。
可能的值:HIGH:0 MEDIUM:10 LOW:100 PASSIVE:1000
enum {number}
用于switchMode功能
可能的值: BACKGROUND: 0 FOREGROUND: 1
配置這個(gè)插件.
參數(shù) | 類型 | 詳情 |
---|---|---|
options | BackgroundGeolocationConfig | Config選項(xiàng)類型的對(duì)象 |
****Returns:** Observable<BackgroundGeolocationResponse>
打開(kāi)后臺(tái)地理位置系統(tǒng)报腔。 每當(dāng)掛起應(yīng)用程序時(shí),用戶將被跟蹤剖淀。
****Returns:** Promise<any>
停止后臺(tái)地理位置系統(tǒng)
****Returns:** Promise<any>
Platforms:****IOS WINDOWS PHONE
通知原生插件已完成纯蛾,后臺(tái)任務(wù)可能已完成
****Returns:** Promise<any>
Platforms:****IOS WINDOWS PHONE
強(qiáng)制插件進(jìn)入“移動(dòng)”或“靜止”狀態(tài)
參數(shù) | 類型 | 詳情 |
---|---|---|
isMoving | boolean |
****Returns:** Promise<any>
設(shè)置配置
參數(shù) | 類型 | 詳情 |
---|---|---|
options | BackgroundGeolocationConfig |
****Returns:** Promise<any>
Platforms:****IOS WINDOWS PHONE
返回當(dāng)前的fixedLocation(如果可用)纵隔。 如果沒(méi)有則為null
****Returns:** Promise<Location>
Platforms:****IOS WINDOWS PHONE
添加一個(gè)靜止區(qū)域監(jiān)聽(tīng)器翻诉。 每當(dāng)設(shè)備進(jìn)入“固定模式”時(shí),#success回調(diào)將執(zhí)行#location param捌刮,其中包含#radius的區(qū)域
****Returns:** Promise<any>
Platforms:****ANDROID
檢查設(shè)備上是否啟用了位置
****Returns:** Promise<number>
返回一個(gè)使用int參數(shù)的promise碰煌,取值為0,1(true)绅作。
顯示應(yīng)用設(shè)置來(lái)更改權(quán)限
顯示設(shè)備位置設(shè)置
Platforms:****ANDROID
方法可用于檢測(cè)用戶位置服務(wù)設(shè)置的變化芦圾。 如果用戶啟用或禁用位置服務(wù),則將執(zhí)行成功回調(diào)俄认。 如果發(fā)生錯(cuò)誤(SettingNotFoundException)个少,則將執(zhí)行回調(diào)碍脏。
****Returns:** Promise<boolean>
Platforms:****ANDROID
停止監(jiān)測(cè)位置模式更改。
****Returns:** Promise<any>
Platforms:****ANDROID
方法將返回所有存儲(chǔ)的位置稍算。 當(dāng)?shù)攸c(diǎn)存儲(chǔ)時(shí):
config.stopOnTerminate is false and main activity was killed by the system or
option.debug is true
****Returns:** Promise<any>
方法將返回尚未發(fā)布到服務(wù)器的位置。 注意:位置確實(shí)包含locationId役拴。
****Returns:** Promise<any>
Platforms:****ANDROID
通過(guò)給定的locationId刪除存儲(chǔ)的位置糊探。
參數(shù) | 類型 | 詳情 |
---|---|---|
locationId | number |
****Returns:** Promise<any>
Platforms:****ANDROID
刪除所有存儲(chǔ)的位置。
****Returns:** Promise<any>
Platforms:****IOS
通常插件將處理BACKGROUND和FOREGROUND模式之間的切換河闰。 調(diào)用switchMode可以覆蓋插件行為科平,并強(qiáng)制插件切換到其他模式。
在FOREGROUND模式下姜性,插件使用iOS本地管理器接收位置和行為受option.desiredAccuracy和option.distanceFilter的影響瞪慧。
在BACKGROUND 模式中,插件使用重大更改和區(qū)域監(jiān)視來(lái)接收位置部念,并使用option.stationaryRadius弃酌。
BackgroundGeolocation.Mode.FOREGROUND BackgroundGeolocation.Mode.BACKGROUND *
參數(shù) | 類型 | 詳情 |
---|---|---|
modeId | number |
****Returns:** Promise<any>
返回所有記錄的事件。 適用于插件調(diào)試儡炼。 參數(shù)限制返回條目數(shù)妓湘。 @更多信息參見(jiàn)https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging
@param limit {number} 限制條目數(shù)量
****Returns:** Promise<any>
BackgroundGeolocationResponse
參數(shù) | 類型 | 詳情 |
---|---|---|
locationId | number | 存儲(chǔ)在DB中的位置ID(或null) |
serviceProvider | string | 提供服務(wù) |
debug | boolean | 如果為true位置記錄為調(diào)試的一部分 |
time | number | 這個(gè)規(guī)定的UTC時(shí)間,從1970年1月1日以來(lái)的毫秒乌询。 |
latitude | number | 緯度榜贴,以度為單位。 |
longitude | number | 經(jīng)度妹田,度數(shù)唬党。 |
accuracy | number | 這個(gè)位置的估計(jì)精確度,以米為單位鬼佣。 |
speed | number | 速度驶拱,如果有的話,以米/秒為單位沮趣。 |
altitude | number | 海拔是否可用屯烦,以米為單位的WGS84參考橢球。 |
altitudeAccuracy | number | 海拔高度的準(zhǔn)確度房铭。 |
bearing | number | 軸承驻龟,以度為單位。 |
coords | Coordinates | 定義當(dāng)前位置的坐標(biāo)對(duì)象 |
timestamp | number | 表示檢索位置的時(shí)間的時(shí)間戳缸匪。 |
BackgroundGeolocationConfig
參數(shù) | 類型 | 詳情 |
---|---|---|
desiredAccuracy | number | 所需精度以米計(jì)翁狐。 可能的值[0,10凌蔬,100露懒,1000]闯冷。 數(shù)字越小,GeoLocation的功率越多懈词,導(dǎo)致讀數(shù)越高蛇耀。 1000導(dǎo)致最低的功耗和最不精確的讀數(shù)。@請(qǐng)參閱蘋果文檔(https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instp/CLLocationManager/desiredAccuracy) |
stationaryRadius | number | 固定半徑(米)坎弯。 當(dāng)停止時(shí)纺涤,設(shè)備必須移動(dòng)超過(guò)固定位置的最小距離,以進(jìn)行有效的后臺(tái)跟蹤抠忘。 |
debug | boolean | 啟用后撩炊,插件會(huì)發(fā)出背景地理位置的生命周期事件的聲音! 參見(jiàn)調(diào)試聲音表崎脉。(可選) |
distanceFilter | number | 在生成更新事件之前拧咳,設(shè)備的最小距離(以米為單位)必須水平移動(dòng)。 @請(qǐng)參閱蘋果文檔. (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啟用此功能以在應(yīng)用程序終止時(shí)強(qiáng)制停止(例如骆膝,在iOS上,雙擊Home按鈕啦撮,滑開(kāi)應(yīng)用程序).默認(rèn)為true (可選) |
starOnBoot | boolean | ANDROID ONLY在設(shè)備啟動(dòng)時(shí)啟動(dòng)后臺(tái)服務(wù)谭网。 默認(rèn)為false(可選) |
startForeground | boolean | ANDROID ONLY如果為false位置服務(wù)不會(huì)在前臺(tái)啟動(dòng),并且不會(huì)顯示任何通知赃春。默認(rèn)為true (可選) |
interval | number | ANDROID愉择,WP8 ONLY當(dāng)使用BackgroundGeolocation.LocationProvider.ANDROID_DISTANCE_FILTER_PROVIDER:位置更新之間的最小時(shí)間間隔(以毫秒為單位)(可選) |
notificationTitle | string | ANDROID ONLY抽屜中的自定義通知標(biāo)題(可選) |
notificationText | string | ANDROID ONLY抽屜中的自定義通知文本(可選) |
notificationIconColor | string | ANDROID ONLY用于通知的重音顏色。 例如织中。#4CAF50锥涕。(可選) |
notificationIconLarge | string | ANDROID ONLY自定義通知圖標(biāo)的文件名。 看到android quirks狭吼。 注意:僅適用于API Level> = 21层坠。(可選) |
notificationIconSmall | string | ANDROID ONLY自定義通知圖標(biāo)的文件名。 看到android quirks刁笙。 注意:僅適用于API Level> = 21破花。(可選) |
locationProvider | number | ANDROID ONLY設(shè)置位置服務(wù)提供商@參見(jiàn) wiki (https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers)(optional) |
activityType | string | IOS ONLY [AutomotiveNavigation, OtherNavigation, Fitness, Other]想必只有這些會(huì)影響IOS GPS算法 . @參見(jiàn)蘋果文(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暫停應(yīng)用程序暫停時(shí)的位置更新默認(rèn)為true (可選) |
url | string | 服務(wù)器URL,發(fā)送帶有記錄位置的HTTP POST (可選) |
syncUrl | string | 服務(wù)器URL疲吸,發(fā)送不能獲取位置的POST(可選) |
syncThreshold | number | 指定將一次發(fā)送到服務(wù)器的以前失敗的位置數(shù)量 默認(rèn)為100 (可選) |
httpHeaders | any | HTTP請(qǐng)求中發(fā)送的可選HTTP標(biāo)頭(可選) |
saveBatteryOnBackground | boolean | IOS ONLY在后臺(tái)切換到不太準(zhǔn)確的顯示變化和區(qū)域監(jiān)控座每,默認(rèn)為100 (可選) |
maxLocations | number | 限制存儲(chǔ)在db中的最大位數(shù)默認(rèn)值為10000 (可選) |
fastestInterval | number | ANDROID ONLY與BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER您的應(yīng)用可以處理位置更新的最快速度(以毫秒為單位)。(可選的) |
activitiesInterval | number | ANDROID ONLY與BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER以毫秒為單位進(jìn)行活動(dòng)識(shí)別發(fā)生的速率摘悴。 更大的值將導(dǎo)致更少的活動(dòng)檢測(cè)峭梳,同時(shí)提高電池壽命(可選) |
stopOnStillActivity | boolean | ANDROID ONLY與BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER stop()被制止,當(dāng)檢測(cè)到STILL活動(dòng)(默認(rèn)為true)(可選的) |