PostLocationOpen is a useful app for those that need a mobile app to report their location information to a custom back end server. Also, included is a navigation aide and emergency alert features.
PostLocationOpen works by sending your location information to your own server. You can then use this information in your own custom map or other purpose. The app also offers advanced features such as offline data caching that will automatically submit once connected to the internet.
The frequency in which PostLocationOpen will send location information is determined by what mode the app is in. These modes include running in the foreground, background (multitask), and closed.
The app tracks user location with LocationCore while the app is running in the foreground. The app uses Significant Location Change System by Apple to track user location when the app is running in the background or when it is completely closed.
When the app is utilized for the first time, it check if the user has enabled location services on their device. If these services are not enabled, the app will not work. Once the user has location services enabled, the user is asked to always allow the app to track the location of the device. This setting is required for the app to work in the foreground, background (multitask), and when closed. After the user grants permissions they are required to have the Server Address and the ICCID fields filled in the settings page so the data can be sent to their designated backend server. When the user first starts the app the normal location system is started up along with the magnetometer to detect the vertical and horizontal acceleration.
While the app is in the foreground there are 4 events that can cause it to send location reports:
1. Once opened in the foreground, the app begins to send data after three seconds (so the location services can report the data) and then continues to send location updates again every 60 seconds. While the app is in the foreground, the device will stay awake.
2. If the user tabs out, the 60 seconds timer is reset once the app is opened again. When the user tabs out, the normal location system is stopped and the significant location system is started. This is so the device can still send data while in the background or even if the app is killed/closed.
3. If the app detects that your course has changed by more than 30 degrees, it will trigger sending a location report even if it sent one less than 60 seconds ago; however, the app will not send location reports more frequently than 30 seconds if triggered by additional changes in course.
4. If the speed rises above 10 mph and then drops down to 0 mph, the app will send a location report. This will not happen more frequently than 30 seconds.
While the app is closed, killed, or put in the background (multitask mode), the Significant Location Change system from Apple wakes up the app briefly (10 seconds) during which data is sent to the server. The system wakes up the app every 500 meters at minimum, according to Apple's documentation.
Server Address Example:
http://serveraddress?esn=123456&lat=44.328867&lon=23.804228&speed=120.500000&heading=133.000000&altitude=121.278625&battery=0.960000&ts=2019-03-12T19:27:25%2B02:00Z
To be able to send the data all fields must be present:
-esn - The ESN the user has
-lat - The last read lattitude
-lon - The last read longitude
-speed - The last read speed converted to KM/h
-heading - The course of the vehicle which is reported by Apple's API
-vacc - The vertical acceeration of the vehicle (the device not move inside the vehicle for this to be realistic)
-hacc - The horizontal acceleration of the vehicle (the device not move inside the vehicle for this to be realistic)
-alt - The altitude of the device
-battery - The current battery of the device
-ts - The timestamp at which the data was sent to the server.
Show less