#Start And Stop
import {
checkBackgroundPermission,
requestBackgroundPermission,
startBackgroundLocation,
stopBackgroundLocation,
onBackgroundLocation,
} from 'react-native-nitro-geolocation/background';
let subscription;
export async function requestAndMaybeStartTracking() {
const permission = await requestBackgroundPermission();
if (permission.needsSettingsRedirect) {
// Register an AppState "active" handler and call resumeBackgroundTracking()
// after the user returns from settings or the authorization prompt settles.
return;
}
await startIfAllowed(permission);
}
export async function resumeBackgroundTracking() {
const permission = await checkBackgroundPermission();
await startIfAllowed(permission);
}
async function startIfAllowed(permission) {
if (permission.foreground === 'granted' && permission.background === 'granted') {
await startBackgroundLocation({
trackingMode: 'continuous',
interval: 10_000,
fastestInterval: 5_000,
distanceFilter: 25,
persist: true,
android: {
foregroundService: {
notificationTitle: 'Location tracking active',
notificationText: 'Your location is being recorded',
},
},
});
subscription?.remove();
subscription = onBackgroundLocation(console.log);
}
}
export async function stopTracking() {
await stopBackgroundLocation();
subscription?.remove();
subscription = undefined;
}Use Activity Recognition before switching to
trackingMode: 'activityAware'. Use Android Setup
before enabling boot restart or changing foreground-service behavior.
