I suspect I'm doing something wrong with the api structure or with the config builder. I tried to match the location schema to yours.
I noticed in the logs for the params, the 3 out of 4 are not formatted as strings. I understand if we need to pay a consultancy fee.
Your Environment
Plugin version: Downloaded from here in Sept 22. I assume it is 1.4.0, however tslocationmanager bundle version is 3.1.3, and tsBackgroundFetch bundle version is 1.0 in info.plist of frameworks.
Platform: iOS
OS version: IOS Monterrey 12.6
Device manufacturer / model: Mac Mini 2020 M1 chip for development in xCode
Testing on iPhone 7 model MN8G2LL/A, software version 15.7
app's project format: xcode 13.0-compatible
Plugin config - not sure what you mean - I guess defaults. Here's the config in ViewDidLoad:
let bgGeo = TSLocationManager.sharedInstance()
let config = TSConfig.sharedInstance()
bgGeo?.viewController = self
config?.update() { builder in
builder?.debug = true
builder?.logLevel = tsLogLevelVerbose
builder?.desiredAccuracy = kCLLocationAccuracyBest
builder?.distanceFilter = 10;
builder?.stopOnTerminate = false;
builder?.startOnBoot = true;
builder?.showsBackgroundLocationIndicator = true;
builder?.url = "https://www.website.com/api/postloc";
builder?.httpRootProperty = "location";
//dont think timestamp will be correct, but for testing
builder?.params = [
"deviceId": deviceId,
"timestamp":self.currentTimeMillis(),
"currDateTime":CurrentDate,
"regId":regid,
"Key":"xxxxx",
];
} // end config.update
// Listen to events.
bgGeo?.onLocation({ location in
if let toDictionary = location?.toDictionary() {
print("[location]\(toDictionary)")
}
}, failure: { error in
print("[location] error \(NSNumber(value: (error as NSError?)?.code ?? 0))")
})
// Signal #ready to the plugin.
bgGeo?.ready()
if !(config?.enabled ?? false) {
NSLog("Start tracking immediately (if not already)")
bgGeo?.start()
} else {
NSLog("config already enabled: bgGeo not started")
}
in appDelegate:
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("AppDelegate received fetch event")
let fetchManager = TSBackgroundFetch.sharedInstance()
fetchManager?.perform(completionHandler: completionHandler, applicationState: application.applicationState)
}
Expected Behavior
Expecting location to be sent to our web server's api. I'm sure I'm doing something wrong.
Actual Behavior
Data never seems to get to server. Maybe our API is not correct structure.
Steps to Reproduce
Start app on iPhone.
Move 15 feet to simulate a location change.
Context
I would like eventually for the plugin to send one current GPS location every 30 minutes.
Right now I'm just trying to get it to connect to the api. I can do so in postman using the following schema:
{
"location": {
"coords": {
"latitude": 39.3,
"longitude": -72.5,
"accuracy": 0,
"speed": 0,
"heading": 0,
"altitude": 0
},
"geofence": {
"identifier": "string",
"action": "string"
},
"activity": {
"type": "string",
"confidence": 0
},
"battery": {
"level": 0,
"is_charging": true
},
"timestamp": "2022-11-02T15:14:53.144Z",
"uuid": "string",
"event": "string",
"is_moving": true,
"is_heartbeat": true,
"odometer": 0
}
}
The api also accepts 4 string parameters in addition to the location class: deviceid, regid, timestamp, key
Debug logs
ios XCode logs,
2-11-06 16:29:45.761225-0500 PhoneTracker[10165:6881295] [TSBackgroundFetch load]: (
)
2022-11-06 16:29:45.762612-0500 PhoneTracker[10165:6881295] [TSBGAppRefreshSubscriber load]: {
TSLocationManager = "";
}
ℹ️-[TSLocationManager init]
╔═════════════════════════════════════════════
║ TSLocationManager (build 359)
╠══════════════════════════════════════════════
{
activityRecognitionInterval = 10000;
activityType = 1;
authorization = {
};
autoSync = 1;
autoSyncThreshold = 0;
batchSync = 0;
debug = 1;
desiredAccuracy = "-1";
desiredOdometerAccuracy = 100;
didLaunchInBackground = 0;
disableAutoSyncOnCellular = 0;
disableElasticity = 0;
disableLocationAuthorizationAlert = 0;
disableMotionActivityUpdates = 0;
disableStopDetection = 0;
distanceFilter = 10;
elasticityMultiplier = 1;
enableTimestampMeta = 0;
enabled = 1;
encrypt = 0;
extras = {
};
geofenceInitialTriggerEntry = 1;
geofenceProximityRadius = 2000;
geofenceTemplate = "";
headers = {
};
heartbeatInterval = 60;
httpRootProperty = location;
httpTimeout = 60000;
iOSHasWarnedLocationServicesOff = 0;
isFirstBoot = 0;
isMoving = 0;
lastLocationAuthorizationStatus = 3;
locationAuthorizationAlert = {
cancelButton = Cancel;
instructions = "To use background location, you must enable '{locationAuthorizationRequest}' in the Location Services settings";
settingsButton = Settings;
titleWhenNotEnabled = "Background location is not enabled";
titleWhenOff = "Location services are off";
};
locationAuthorizationRequest = Always;
locationTemplate = "";
locationTimeout = 60;
locationsOrderDirection = ASC;
logLevel = 5;
logMaxDays = 3;
maxBatchSize = "-1";
maxDaysToPersist = 1;
maxRecordsToPersist = "-1";
method = POST;
minimumActivityRecognitionConfidence = 70;
odometer = "45.66512733659219";
params = {
Key = xxxxxx;
currDateTime = "11/4/22, 1:12 PM";
deviceId = "3FAE43FF-586C-41F9-B1B5-FB82BE948657";
regId = C9543C4BD23854D43FBE8CEF9190320C3A9075EFD757606CB2569C8B46964226;
timestamp = 1667581956927;
};
pausesLocationUpdatesAutomatically = 1;
persistMode = 2;
preventSuspend = 0;
schedule = (
);
schedulerEnabled = 0;
showsBackgroundLocationIndicator = 1;
startOnBoot = 1;
stationaryRadius = 25;
stopAfterElapsedMinutes = "-1";
stopDetectionDelay = 0;
stopOnStationary = 0;
stopOnTerminate = 0;
stopTimeout = 5;
trackingMode = 1;
url = "https://www.website.com/api/postloc";
useSignificantChangesOnly = 0;
}
2022-11-06 16:29:46.147969-0500 PhoneTracker[10165:6881533] ℹ️-[TSLocationManager init]
╔═════════════════════════════════════════════
║ TSLocationManager (build 359)
╠══════════════════════════════════════════════
{
activityRecognitionInterval = 10000;
activityType = 1;
authorization = {
};
autoSync = 1;
autoSyncThreshold = 0;
batchSync = 0;
debug = 1;
desiredAccuracy = "-1";
desiredOdometerAccuracy = 100;
didLaunchInBackground = 0;
disableAutoSyncOnCellular = 0;
disableElasticity = 0;
disableLocationAuthorizationAlert = 0;
disableMotionActivityUpdates = 0;
disableStopDetection = 0;
distanceFilter = 10;
elasticityMultiplier = 1;
enableTimestampMeta = 0;
enabled = 1;
encrypt = 0;
extras = {
};
geofenceInitialTriggerEntry = 1;
geofenceProximityRadius = 2000;
geofenceTe
ℹ️-[TSDBLogger db_delete] maxAge: 259200
2022-11-06 16:29:46.158397-0500 PhoneTracker[10165:6881533] ℹ️-[TSDBLogger db_delete] maxAge: 259200
2022-11-06 16:29:46.163902-0500 PhoneTracker[10165:6881533] ℹ️-[GeofenceDAO init] CREATE TABLE IF NOT EXISTS geofences (id INTEGER PRIMARY KEY AUTOINCREMENT, identifier TEXT NOT NULL UNIQUE, latitude DOUBLE NOT NULL, sin_latitude DOUBLE NOT NULL, cos_latitude DOUBLE NOT NULL, longitude DOUBLE NOT NULL, sin_longitude DOUBLE NOT NULL, cos_longitude DOUBLE NOT NULL, radius DOUBLE NOT NULL, notifyOnEntry BOOLEAN NOT NULL DEFAULT 0, notifyOnExit BOOLEAN NOT NULL DEFAULT 0, notifyOnDwell BOOLEAN NOT NULL DEFAULT 0, loiteringDelay DOUBLE NOT NULL DEFAULT 0, extras TEXT)
ℹ️-[GeofenceDAO init] CREATE TABLE IF NOT EXISTS geofences (id INTEGER PRIMARY KEY AUTOINCREMENT, identifier TEXT NOT NULL UNIQUE, latitude DOUBLE NOT NULL, sin_latitude DOUBLE NOT NULL, cos_latitude DOUBLE NOT NULL, longitude DOUBLE NOT NULL, sin_longitude DOUBLE NOT NULL, cos_longitude DOUBLE NOT NULL, radius DOUBLE NOT NULL, notifyOnEntry BOOLEAN NOT NULL DEFAULT 0, notifyOnExit BOOLEAN NOT NULL DEFAULT 0, notifyOnDwell BOOLEAN NOT NULL DEFAULT 0, loiteringDelay DOUBLE NOT NULL DEFAULT 0, extras TEXT)
ℹ️-[GeofenceDAO init] CREATE index IF NOT EXISTS identifier ON geofences (identifier);CREATE index IF NOT EXISTS latitude ON geofences (latitude);CREATE index IF NOT EXISTS longitude ON geofences (longitude);CREATE index IF NOT EXISTS sin_latitude ON geofences (sin_latitude);CREATE index IF NOT EXISTS cos_latitude ON geofences (cos_latitude);CREATE index IF NOT EXISTS sin_longitude ON geofences (sin_longitude);CREATE index IF NOT EXISTS cos_longitude ON geofences (cos_longitude);
2022-11-06 16:29:46.166066-0500 PhoneTracker[10165:6881547] ℹ️-[GeofenceDAO init] CREATE index IF NOT EXISTS identifier ON geofences (identifier);CREATE index IF NOT EXISTS latitude ON geofences (latitude);CREATE index IF NOT EXISTS longitude ON geofences (longitude);CREATE index IF NOT EXISTS sin_latitude ON geofences (sin_latitude);CREATE index IF NOT EXISTS cos_latitude ON geofences (cos_latitude);CREATE index IF NOT EXISTS sin_longitude ON geofences (sin_longitude);CREATE index IF NOT EXISTS cos_longitude ON geofences (cos_longitude);
ℹ️-[TSConfig persist]
2022-11-06 16:29:46.172318-0500 PhoneTracker[10165:6881533] ℹ️-[TSConfig persist]
ℹ️-[TSLocationManager on:success:failure:] location
2022-11-06 16:29:46.174904-0500 PhoneTracker[10165:6881533] ℹ️-[TSLocationManager on:success:failure:] location
🔵-[TSLocationManager ready]
2022-11-06 16:29:46.175193-0500 PhoneTracker[10165:6881543] 🔵-[TSLocationManager ready]
ℹ️-[TSLocationManager doStart:] trackingMode: 1
2022-11-06 16:29:46.176152-0500 PhoneTracker[10165:6881547] ℹ️-[TSLocationManager doStart:] trackingMode: 1
ℹ️-[TSLocationManager loadLastOdometerLocation] <+39.14656938,-77.75961444> +/- -1.00m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:46 PM Eastern Standard Time
2022-11-06 16:29:46.177188-0500 PhoneTracker[10165:6881547] ℹ️-[TSLocationManager loadLastOdometerLocation] <+39.14656938,-77.75961444> +/- -1.00m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:46 PM Eastern Standard Time
🎾-[TSGeofenceManager start]
2022-11-06 16:29:46.177917-0500 PhoneTracker[10165:6881542] 🎾-[TSGeofenceManager start]
🎾-[SOMotionDetector startDetection]
2022-11-06 16:29:46.214139-0500 PhoneTracker[10165:6881533] 🎾-[SOMotionDetector startDetection]
2022-11-06 16:29:46.214357-0500 PhoneTracker[10165:6881533] 🔵-[TSLocationManager setPace:] 0
🔵-[TSLocationManager setPace:] 0
2022-11-06 16:29:46.181127-0500 PhoneTracker[10165:6881295] [Client] {"msg":"#NullIsland Received a latitude or longitude from getLocationForBundleID that was exactly zero", "latIsZero":0, "lonIsZero":1, "location":{"floor":2147483647,"lifespan":-1,"rawLat":0,"integrity":0,"referenceFrame":"Unknown","lon":0,"speed":-1,"type":"Unknown","altitude":0,"rawCourse":-1,"confidence":0,"suitability":{"type":"decode failure","raw value":502755688,"expected type":"CLClientLocationSuitability"},"ellipsoidalAltitude":0,"timestamp":-1,"rawReferenceFrame":"Unknown","lat":4.9406564584124654e-324,"verticalAccuracy":-1,"rawLon":0,"horizontalAccuracy":-1,"speedAccuracy":-1,"courseAccuracy":-1,"fromSimulationController":false,"course":-1}}
2022-11-06 16:29:46.215528-0500 PhoneTracker[10165:6881295] [Client] {"msg":"#NullIsland Either the latitude or longitude was exactly 0! That's highly unlikely: refreshing property", "latIsZero":0, "lonIsZero":1}
2022-11-06 16:29:46.216232-0500 PhoneTracker[10165:6881295] [Client] {"msg":"#NullIsland Received a latitude or longitude from getLocationForBundleID that was exactly zero", "latIsZero":0, "lonIsZero":1, "location":{"floor":2147483647,"lifespan":-1,"rawLat":0,"integrity":0,"referenceFrame":"Unknown","lon":0,"speed":-1,"type":"Unknown","altitude":0,"rawCourse":-1,"confidence":0,"suitability":{"type":"decode failure","raw value":502755688,"expected type":"CLClientLocationSuitability"},"ellipsoidalAltitude":0,"timestamp":-1,"rawReferenceFrame":"Unknown","lat":4.9406564584124654e-324,"verticalAccuracy":-1,"rawLon":0,"horizontalAccuracy":-1,"speedAccuracy":-1,"courseAccuracy":-1,"fromSimulationController":false,"course":-1}}
[location][AnyHashable("activity"): {
confidence = 100;
type = unknown;
}, AnyHashable("timestamp"): 2022-11-06T21:29:32.018Z, AnyHashable("is_moving"): 0, AnyHashable("uuid"): 964DC020-2050-4883-B459-4292AC70C2FD, AnyHashable("sample"): 1, AnyHashable("extras"): {
}, AnyHashable("odometer"): 45.7, AnyHashable("battery"): {
"is_charging" = 1;
level = 1;
}, AnyHashable("coords"): {
accuracy = "52.3";
altitude = "177.3";
"altitude_accuracy" = "12.2";
floor = 2146959360;
heading = "-1";
latitude = 0;
longitude = "-77.75961302965879";
speed = "-1";
}]
🎾-[TSLocationManager startUpdatingLocation] Location-services: ON
2022-11-06 16:29:46.219791-0500 PhoneTracker[10165:6881542] 🎾-[TSLocationManager startUpdatingLocation] Location-services: ON
2022-11-06 16:29:46.220634-0500 PhoneTracker[10165:6881295] config already enabled: bgGeo not started
🔵-[LocationManager locationManager:didChangeAuthorizationStatus:] 3
2022-11-06 16:29:46.239879-0500 PhoneTracker[10165:6881541] 🔵-[LocationManager locationManager:didChangeAuthorizationStatus:] 3
🔵-[TSLocationManager locationManager:didChangeAuthorizationStatus:] status 3
2022-11-06 16:29:46.240460-0500 PhoneTracker[10165:6881542] 🔵-[TSLocationManager locationManager:didChangeAuthorizationStatus:] status 3
✅-[SOMotionDetector startDetection]_block_in2022-11-06 2022-11-06 16:29:46.252146-0500 PhoneTracker[10165:6881542] 🔵-[LocationManager locationManager:didChangeAuthorizationStatus:] 3
🔵-[LocationManager locationManager:didChangeAuthorizationStatus:] 3
2022-11-06 16:29:46.326034-0500 PhoneTracker[10165:6881533]
📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:23 PM Eastern Standard Time
📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:23 PM Eastern Standard Time
I suspect I'm doing something wrong with the api structure or with the config builder. I tried to match the location schema to yours.
I noticed in the logs for the params, the 3 out of 4 are not formatted as strings. I understand if we need to pay a consultancy fee.
Your Environment
Plugin version: Downloaded from here in Sept 22. I assume it is 1.4.0, however tslocationmanager bundle version is 3.1.3, and tsBackgroundFetch bundle version is 1.0 in info.plist of frameworks.
Platform: iOS
OS version: IOS Monterrey 12.6
Device manufacturer / model: Mac Mini 2020 M1 chip for development in xCode
Testing on iPhone 7 model MN8G2LL/A, software version 15.7
app's project format: xcode 13.0-compatible
Plugin config - not sure what you mean - I guess defaults. Here's the config in ViewDidLoad: let bgGeo = TSLocationManager.sharedInstance() let config = TSConfig.sharedInstance() bgGeo?.viewController = self
in appDelegate: func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { print("AppDelegate received fetch event") let fetchManager = TSBackgroundFetch.sharedInstance() fetchManager?.perform(completionHandler: completionHandler, applicationState: application.applicationState) }
Expected Behavior
Expecting location to be sent to our web server's api. I'm sure I'm doing something wrong.
Actual Behavior
Data never seems to get to server. Maybe our API is not correct structure.
Steps to Reproduce
Context
I would like eventually for the plugin to send one current GPS location every 30 minutes. Right now I'm just trying to get it to connect to the api. I can do so in postman using the following schema: { "location": { "coords": { "latitude": 39.3, "longitude": -72.5, "accuracy": 0, "speed": 0, "heading": 0, "altitude": 0 }, "geofence": { "identifier": "string", "action": "string" }, "activity": { "type": "string", "confidence": 0 }, "battery": { "level": 0, "is_charging": true }, "timestamp": "2022-11-02T15:14:53.144Z", "uuid": "string", "event": "string", "is_moving": true, "is_heartbeat": true, "odometer": 0 } } The api also accepts 4 string parameters in addition to the location class: deviceid, regid, timestamp, key
Debug logs
📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:23 PM Eastern Standard Time
╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 23.3s ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.402775-0500 PhoneTracker[10165:6881533] ╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 23.3s ╚═══════════════════════════════════════════════════════════ ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying... 2022-11-06 16:29:46.406627-0500 PhoneTracker[10165:6881533] ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying...
📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:32 PM Eastern Standard Time 2022-11-06 16:29:46.407802-0500 PhoneTracker[10165:6881533] 📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:32 PM Eastern Standard Time
╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 14.3s ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.410043-0500 PhoneTracker[10165:6881536] ╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 14.3s ╚═══════════════════════════════════════════════════════════ ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying... 2022-11-06 16:29:46.413710-0500 PhoneTracker[10165:6881536] ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying...
╔══════════════════════════════════════════════════════════════ 2022-11-06 16:29:46.410043-0500 PhoneTracker[10165:6881536] ╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 14.3s ╚═══════════════════════════════════════════════════════════ ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying... 2022-11-06 16:29:46.413710-0500 PhoneTracker[10165:6881536] ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying...
╔════════════════════════════════════════════════\342\225═══════════ ║ -[TSHttpService flush:] ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.414449-0500 PhoneTracker[10165:6881536] ╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService flush:] ╚═══════════════════════════════════════════════════════════ ✅-[LocationDAO unlock]_block_invoke UNLOCKED ALL RECORDS 2022-11-06 16:29:46.420917-0500 PhoneTracker[10165:6881533] ✅-[LocationDAO unlock]_block_invoke UNLOCKED ALL RECORDS
╔═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.410043-0500 PhoneTracker[10165:6881536] ╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 14.3s ╚═══════════════════════════════════════════════════════════ ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying... 2022-11-06 16:29:46.413710-0500 PhoneTracker[10165:6881536] ℹ️-[TSLocationManager locationManager:didUpdateLocations:] Received stale motionchange location. Retrying...
╔════════════════════════════════════════════════\342\225═══════════ ║ -[TSHttpService flush:] ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.414449-0500 PhoneTracker[10165:6881536] ╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService flush:] ╚═══════════════════════════════════════════════════════════ ✅-[LocationDAO unlock]_block_invoke UNLOCKED ALL RECORDS 2022-11-06 16:29:46.420917-0500 PhoneTracker[10165:6881533] ✅-[LocationDAO unlock]_block_invoke UNLOCKED ALL RECORDS
╔═════════════════════════════════════════════\342\225══════════════ ║ -[TSHttpService finish:error:] Success: 1 ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.423425-0500 PhoneTracker[10165:6881530] ╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService finish:error:] Success: 1 ╚═══════════════════════════════════════════════════════════ ℹ️+[LocationAuthorization run:onCancel:] status: 3 2022-11-06 16:29:46.425183-0500 PhoneTracker[10165:6881530] ℹ️+[LocationAuthorization run:onCancel:] status: 3 🎾-[TSLocationManager startMonitoringBackgroundFetch] BackgroundFetch: ON 2022-11-06 16:29:46.425323-0500 PhoneTracker[10165:6881533] 🎾-[TSLocationManager startMonitoringBackgroundFetch] BackgroundFetch: ON ℹ️+[LocationAuthorization run:onCancel:] status: 3 2022-11-06 16:29:46.431364-0500 PhoneTracker[10165:6881534] ℹ️+[LocationAuthorization run:onCancel:] status: 3
╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager createMotionTypeChangedHandler]_block_invoke | still/100 | isMoving: 0 ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.431509-0500 PhoneTracker[10165:6881533] ╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager createMotionTypdeviceToken: C9543C4BD23854D43FBE8CEF9190320C3A9075EFD757606CB2569C8B46964226 eChangedHandler]_block_invoke | still/100 | isMoving: 0 ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.448821-0500 PhoneTracker[10165:6881295] [TSBackgroundFetch scheduleBGAppRefresh] com.transistorsoft.fetch ℹ️-[TSLocationManager startMonitoringBackgroundFetch]_block_invoke Configured BackgroundFetch 2022-11-06 16:29:46.449667-0500 PhoneTracker[10165:6881538] ℹ️-[TSLocationManager startMonitoringBackgroundFetch]_block_invoke Configured BackgroundFetch viewDidAppear Click Send GPS button below to update GPS Location 667.0 Portrait
📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:46 PM Eastern Standard Time 2022-11-06 16:29:46.862274-0500 PhoneTracker[10165:6881542] 📍<+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:46 PM Eastern Standard Time
╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 0.6s ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.862399-0500 PhoneTracker[10165:6881541] ╔═══════════════════════════════════════════════════════════ ║ -[TSLocationManager locationManager:didUpdateLocations:] Enabled: 1 | isMoving: 0 | df: -1.0m | age: 0.6s ╚═══════════════════════════════════════════════════════════ ✅-[TSLocationManager locationManager:didUpdateLocations:] Acquired motionchange position: <+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:46 PM Eastern Standard Time 2022-11-06 16:29:46.862930-0500 PhoneTracker[10165:6881542] ✅-[TSLocationManager locationManager:didUpdateLocations:] Acquired motionchange position: <+39.14658737,-77.75961303> +/- 52.33m (speed -1.00 mps / course -1.00) @ 11/6/22, 4:29:46 PM Eastern Standard Time 🔵-[TSLocationManager startMonitoringStationaryRegion:radius:] Radius: 77 2022-11-06 16:29:46.863177-0500 PhoneTracker[10165:6881542] 🔵-[TSLocationManager startMonitoringStationaryRegion:radius:] Radius: 77 🔴-[TSLocationManager stopUpdatingLocation] 2022-11-06 16:29:46.867098-0500 PhoneTracker[10165:6881534] 🔴-[TSLocationManager stopUpdatingLocation] [location][AnyHashable("uuid"): 160CFF24-D933-4C07-BAF3-0919F38D5B54, AnyHashable("timestamp"): 2022-11-06T21:29:46.288Z, AnyHashable("odometer"): 45.7, AnyHashable("activity"): { confidence = 100; type = still; }, AnyHashable("is_moving"): 0, AnyHashable("battery"): { "is_charging" = 1; level = 1; }, AnyHashable("extras"): { }, AnyHashable("event"): motionchange, AnyHashable("coords"): { accuracy = "52.3"; altitude = "177.3"; "altitude_accuracy" = "23.1"; floor = "";
heading = "-1";
latitude = "39.14658736999998";
longitude = "-77.75961302999997";
speed = "-1";
}]
🔵-[TSLocationManager calculateMedianLocationAccuracy:] Median location accuracy: 52.3
2022-11-06 16:29:46.873489-0500 PhoneTracker[10165:6881534] 🔵-[TSLocationManager calculateMedianLocationAccuracy:] Median location accuracy: 52.3
🎾-[TSLocationManager startMonitoringSignificantLocationChanges]
2022-11-06 16:29:46.953115-0500 PhoneTracker[10165:6881534] 🎾-[TSLocationManager startMonitoringSignificantLocationChanges]
✅-[TSLocationManager persistLocation:]_block_invoke INSERT: 160CFF24-D933-4C07-BAF3-0919F38D5B54
2022-11-06 16:29:46.953717-0500 PhoneTracker[10165:6881584] ✅-[TSLocationManager persistLocation:]_block_invoke INSERT: 160CFF24-D933-4C07-BAF3-0919F38D5B54
╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService flush:] ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:46.954843-0500 PhoneTracker[10165:6881534] ╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService flush:] ╚═══════════════════════════════════════════════════════════ ✅-[BackgroundTaskManager createBackgroundTask] 2 2022-11-06 16:29:46.955675-0500 PhoneTracker[10165:6881585] ✅-[BackgroundTaskManager createBackgroundTask] 2 ✅-[TSHttpService schedulePost] LOCKED: 160CFF24-D933-4C07-BAF3-0919F38D5B54 2022-11-06 16:29:46.955761-0500 PhoneTracker[10165:6881584] ✅-[TSHttpService schedulePost] LOCKED: 160CFF24-D933-4C07-BAF3-0919F38D5B54 🔵-[HttpResponse handleResponse] Response: 200 2022-11-06 16:29:48.372379-0500 PhoneTracker[10165:6881545] 🔵-[HttpResponse handleResponse] Response: 200 ✅-[TSHttpService post:]_block_invoke DESTROY: 160CFF24-D933-4C07-BAF3-0919F38D5B54 2022-11-06 16:29:48.385119-0500 PhoneTracker[10165:6881584] ✅-[TSHttpService post:]_block_invoke DESTROY: 160CFF24-D933-4C07-BAF3-0919F38D5B54
╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService finish:error:] Success: 1 ╚═══════════════════════════════════════════════════════════ 2022-11-06 16:29:48.385604-0500 PhoneTracker[10165:6881543] ╔═══════════════════════════════════════════════════════════ ║ -[TSHttpService finish:error:] Success: 1 ╚═══════════════════════════════════════════════════════════ ✅-[BackgroundTaskManager stopBackgroundTask:]_block_invoke 2 OF ( 2 ) 2022-11-06 16:29:48.385960-0500 PhoneTracker[10165:6881543] ✅-[BackgroundTaskManager stopBackgroundTask:]_block_invoke 2 OF ( 2 )