react-native-background-geolocation
Version:
The most sophisticated cross-platform background location-tracking & geofencing module with battery-conscious motion-detection intelligence
52 lines (44 loc) • 1.68 kB
JavaScript
;
import { NativeModules } from "react-native"
const { RNBackgroundGeolocation } = NativeModules;
const IGNORE_BATTERY_OPTIMIZATIONS = "IGNORE_BATTERY_OPTIMIZATIONS";
const POWER_MANAGER = "POWER_MANAGER";
let resolveSettingsRequest = function(resolve, request) {
if (request.lastSeenAt > 0) {
request.lastSeenAt = new Date(request.lastSeenAt);
}
resolve(request);
}
export default class DeviceSettings {
isIgnoringBatteryOptimizations() {
return new Promise((resolve, reject) => {
let success = (isIgnoring) => { resolve(isIgnoring) }
let failure = (error) => { reject(error) }
RNBackgroundGeolocation.isIgnoringBatteryOptimizations(success, failure);
});
}
showIgnoreBatteryOptimizations() {
return new Promise((resolve, reject) => {
let success = (request) => { resolveSettingsRequest(resolve, request) }
let failure = (error) => { reject(error) }
let args = {action: IGNORE_BATTERY_OPTIMIZATIONS};
RNBackgroundGeolocation.requestSettings(args, success, failure);
});
}
showPowerManager() {
return new Promise((resolve, reject) => {
let success = (request) => { resolveSettingsRequest(resolve, request) }
let failure = (error) => { reject(error) }
let args = {action: POWER_MANAGER};
RNBackgroundGeolocation.requestSettings(args, success, failure);
});
}
show(request) {
return new Promise((resolve, reject) => {
let success = (success) => { resolve(success) }
let failure = (error) => { reject(error) }
let args = {action: request.action};
RNBackgroundGeolocation.showSettings(args, success, failure);
});
}
}