Location tracking is an important aspect of Skedulo that is required for many features to function. Location data is used extensively in our Skedulo 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.
The Skedulo mobile app 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.
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.
Enable or Disable Location Tracking
Location tracking is used to monitor job travel progress and provide proximity alerts. However, a mobile user can enable or disable location tracking on their mobile at any time, via their mobile device settings.
For example (using an IOS device), locate "Skedulo" in the "Settings" app." This is where the mobile user can change their Skedulo access permissions for "Location." There are three choices for allowing Skedulo access to the mobile's location: "Never," "While using the app," or "Always." Enable location tracking using either "Always," or "When using the app." Disable location tracking by selecting "Never."
If "Never" is selected:
- The resource will appear to be located at their home address (as defined in their user profile) on the Skedulo web app. Note, there may be a time lag in updating a resource's location when they log out of the Skedulo mobile app.
- Live tracking will not be possible (which includes the resources "Actual location").
- Proximity notifications will not be available.
Figure 1. Setting Skedulo access permissions for location on IOS13.
When the app is running in the background, resources are actively notified if location tracking is active —on both Android and iOS mobile devices.
- IOS devices provide location tracking information via a thin blue alert banner at the top of the device (Note: Using IOS10 or older might behave slightly different using the "Always" option).
- Android devices indicate location tracking via a notification on the lock screen and via a small app icon at the top of the device. Android devices also inform users (via a pull-down panel) what level of tracking is active and the reason why it is enabled. Users can pause the tracking by clicking the highlighted text link in the pull-down notification.
Figure 2. An IOS device (left) and Android (right) displaying location tracking notifications.