-
Notifications
You must be signed in to change notification settings - Fork 570
Open
Description
I am using BackgroundGeolocation , and sending locations to server through my websocket. Everything is working fine when i application is running in foreground mode, but when i killed the app it is not working both in ios and android.
This is only happening in actual iphone in android devices. Everything is working fine on android and ios simulators.
I am using this code ->
useEffect(() => {
requestLocationPermissions();
if (!clientId) return;
// Make connection with WebSocket
let connection: { stop: () => Promise<any> };
const setupSignalR = async () => {
connection = await startConnection();
};
setupSignalR();
const onProviderChange = (provider) => {
console.log("[providerchange] -", provider);
const isOnline = provider.status === 3 || provider.status === 4;
setLocalOfflineState(!isOnline);
};
const geoConfig = {
desiredAccuracy: BackgroundGeolocation.DESIRED_ACCURACY_HIGH,
distanceFilter: 1,
debug: false,
logLevel: BackgroundGeolocation.LOG_LEVEL_VERBOSE,
stopOnTerminate: false,
startOnBoot: true,
batchSync: false,
autoSync: false,
preventSuspend: true,
useSignificantChangesOnly: false,
enableHeadless: true,
};
// Register provider change listener
BackgroundGeolocation.onProviderChange(onProviderChange);
const onLocation = async (location) => {
console.log("location", location);
if (location.sample) {
console.log("Ignored sample location");
return;
}
if (lastLocationUUID.current === location.uuid) {
console.log("Duplicate location ignored");
return;
}
lastLocationUUID.current = location.uuid;
// Sending unique location
sendLocationToServer(location);
};
const onError = (error) => {
console.warn("[location] ERROR -", error);
};
BackgroundGeolocation.onLocation(onLocation, onError);
// Now, configure BackgroundGeolocation
BackgroundGeolocation.ready(geoConfig, (state) => {
if (!state.enabled) {
BackgroundGeolocation.start(() => {
console.log("- Start success");
});
}
});
// Cleanup listeners on unmount
return () => {
BackgroundGeolocation.removeListeners();
};
}, [clientId]);
const requestLocationPermissions = async () => {
// Request Fine Location first
const fineLocation = await request(
PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION
);
if (fineLocation === RESULTS.GRANTED) {
// Then request Background Location
const backgroundLocation = await request(
PERMISSIONS.ANDROID.ACCESS_BACKGROUND_LOCATION
);
}
};
Metadata
Metadata
Assignees
Labels
No labels