Location tracking is an important aspect of Skedulo that is required for many features to function. Location data is used extensively in our Skedulo-X mobile app to enable features like route optimization and proximity events which rely on the current position of the resource to function correctly.
Understandably, location data is sensitive and here at Skedulo, we deal with this data in a secure and reasonable manner. We will never share the location of a resource outside of our application and we will only ever track the location of a resource if they are currently using the mobile application and agreed to the permission request to track their location.
Skedulo-X has policies set in stone as to when it will begin tracking the location of a resource. At some point, we will allow an org to configure how aggressive they want their location tracking.
Conditions determine the policy selection to use for location tracking.
The available policies are:
- Disabled–No location updates are allowed.
- PowerSave–Limit tracking to conserve battery.
- Coarse–We need to just know rough locations rather than specific route information.
- Fine–We need a fine-grained location for route information.
- Superfine–We are aggressively tracking the location.
Policies are selected by evaluating conditions.
The available conditions are:
- LoggedIn–We are logged into an account.
- Available–We are available. This will be false if we've set our availability to unavailable for a time period.
- LowPower–If the device has 10% or less battery power.
- ActiveJobs–If we have any jobs for today that are EnRoute, Checked In or In Progress.
- Charging–If the device is plugged into power and charging.
- EnRoute–If we have any jobs for today that are EnRoute.
Policy Selection Logic
A policy is selected based on the conditions.
Each of the following lines of logic are evaluated one after the other. If a logic check is matched, the resulting policy is selected and no further processing is done. If the logic check fails, the next line is processed.
The logic is as follows:
- If we are not LoggedIn in or we are not Available then Disabled is selected.
- If we have LowPower then PowerSave is selected.
- If we have ActiveJobs and Charging and EnRoute then Superfine is selected.
- If we have ActiveJobs and EnRoute then Fine is selected.
- If we have ActiveJobs then Coarse is selected.
- Coarse is selected.
- We are logged in and we have active jobs and we are en route to a job, but we are not charging, then Fine is selected.
- We are logged in, we have active jobs, we are en route to a job but our battery power is 5%, then PowerSave is selected.
- We are logged in, we are charging our device but we have no active jobs, then Coarse is selected.
- We are logged in, we are charging our device, we have active jobs but we are marked as not available for the current time, then Disabled is selected.
Storage of Location Data
All location history is stored securely on our backend servers, and at no point will this data be stored anywhere else (e.g Salesforce).
Settings and Descriptions
|TrackingEnabled||Determines if location tracking is enabled or not.|
|MinimumTime||The elapsed time between location updates will never be less than minTime, although it can be more depending on the location provider implementation and the update interval requested by other applications.|
|MinimumDistance||The minimum distance (measured in meters) a device must move horizontally before an update event is generated.|
|AllowBackgroundUpdates||Whether background location updates should be allowed (>= iOS 9).|
|PauseLocationUpdatesAutomatically||Whether location updates should be paused automatically when the location is unlikely to change (>= iOS 6).|
|DeferLocationUpdates||Whether the location manager should defer location updates until an energy efficient time arrives, or distance and time criteria are met (>= iOS 6).|
|DeferralTime||If deferring location updates, the minimum time that should elapse before updates are delivered (>= iOS 6).|
|ListenForSignificantChanges||Whether the location manager should only listen for significant changes in location, rather than continuous listening (>= iOS 4).|
Table 1. Settings and their descriptions.
Table 2. Settings and their parameters.