Determination of User Location
ICE Server maintains a single GPS location for each user actively logged into the system. Each user’s location is reported by the client application they’re using. This location is shared with other users having at least one channel in common with the reporting user.
Having a single GPS location associated with a person can produce confusing results when a user is logged in to multiple devices, especially when those devices are not in the same location. ICE assumes that a user is currently in the location that was last reported by a device they are connecting from. Thus, if a user is connected through different clients each reporting different locations, other users on the system may see the user’s location jump back and forth between the location reported by one device and the other.
The ICE Mobile client uses Android or iOS in-built location services to determine the user’s spatial coordinates. The accuracy and algorithm used to determine location is specific to each device and operating system and might be as simple as the reporting the value returned from the device’s GPS receiver, or as complicated as inferring location from IP address, nearby WiFi access points, etc.
ICE Desktop, which is designed for use on devices that typically do not have in-built GPS hardware, delegates to Google Maps Geolocation APIs to infer GPS coordinates. The location returned by this service is usually close but highly variable in its accuracy. ICE Desktop users can manually specify their location (or disable location reporting altogether) when working in environments where Google’s results are inaccurate or unavailable.