The always-on mobile device travels with us everywhere we go, making it closely connected to our personal lives and daily habits. The ability to make use of mobile location data provides advertisers the unprecedented ability to deliver highly relevant messages to consumers wherever they may be — and this data is something for which advertisers are willing to pay a premium. On the Smaato platform, apps that pass location data can have 70% higher eCPMs and 50% higher fill rates than the overall average.
To optimize location data, app developers must learn to enrich their traffic with highly-accurate data. This requires figuring out a balance between opting in users, the data’s accuracy, and the drain that collecting this data will have on the device’s battery life. Read on to find out how to optimize your location data accuracy and maximize the eCPM of your inventory.
What Determines the Quality (and Revenue Potential) of Location Data?
- Accuracy and Precision: Accuracy (the distance between the device’s actual and measured location) and precision (the level of granularity) are the most important pillars for determining the quality of data. GPS data provides the highest-quality data because it is both accurate (can identify user location within 10 to 100 meters) and precise (reporting exact lat/long coordinates).
- Recency: Recency is the time between when the data was collected and when it was passed in the ad request. Data’s recency can change the value of that data, as at some point, a less precise but recent signal may be of higher value than a precise but old signal. This is especially important at the launch of an app session when the last GPS signal could already be several hours old.
- Opt-In: Users need to opt into the use of location data, which is enforced by the device’s OS. Users can choose to block certain mobile location sources, such as GPS and carrier data, from collecting and reporting data via their device settings. They may also disable location services for your specific app. Another thing to consider with this data (and another potential reason for users to deactivate sending this data) is the impact on battery life, which may be substantial if refreshed too frequently.
How to Collect Location Data on iOS and Android
Location Data on iOS
To get a user’s location on iOS, you must link your app to the Core Location framework, which uses all available onboard hardware (i.e., Wi-Fi, GPS, Bluetooth, magnetometer, barometer, and cellular hardware) to gather data on authorized users.
The most important factor to consider when gathering this form of data is proper authorization. Core Location offers you two authorization levels to choose from:
- “When-in-use” authorization only starts location services when your app is running in the foreground.
- “Always” authorization allows your app to use all location services while the app is running in either the foreground or the background.
To assess a user’s location, Apple offers three options:
- Visits location service identifies patterns in the user’s behavior by monitoring where the user visits and for how long. This option has the lowest battery burden but does not provide real-time location reporting.
- Significant-change location service is another power-efficient location tracking option that only delivers updates when there is a significant change to the user’s location.
- Standard location service provides the most accurate and immediate real-time location data but also uses significantly more power than the other options.
App Store Approval of Location Services
Apple encourages apps to use location services only when necessary. As stated in the App Store Review Guidelines, an app should only use location services when “it is directly relevant to the features and services provided by the app.” Once you have connected your app to the Core Location framework, Apple will initiate a pop-up dialog box the first time the user tries to use location services in your app, and their first response will be recorded.
Location Data on Android
Apps can use the Google Location Services APIs, part of Google Play Services, to enable location tracking on Android. After setting up Google Play Services, Android apps can request location permissions from the user. Android offers two location permissions to choose from: ACCESS_COARSE_LOCATION, which reports a location with an accuracy equivalent to one city block, or ACCESS_FINE_LOCATION, which provides the highest possible location accuracy.
You further specify the level of accuracy, frequency, and latency of the location gathering — each of which can have a significant effect on the user’s battery drain. These factors are defined as:
- Accuracy describes how precise and exact the gathered location-based data is. In general, the higher the accuracy, the higher the battery drain. The available options are:
PRIORITY_HIGH_ACCURACY uses as many inputs as necessary (e.g., GPS, WiFi, cell) to provide the most accurate location possible.
PRIORITY_BALANCED_POWER_ACCURACY relies mainly on WiFi and cell information in order to provide accurate data while also optimizing for power efficiency.
PRIORITY_LOW_POWER provides coarse city-level data by solely relying on cell towers.
PRIORITY_NO_POWER checks other apps for which location has already been computed in order to passively receive data.
- Frequency is how often a user’s location is computed. More frequent computations will drain the battery more quickly.
- Latency describes how quickly data is delivered. Less latency typically requires more battery.
Why No Location Data Is Available
Even if your app is set up to gather location data (and the user allowed your app to collect this data), location services may be unavailable. This can occur for any of the following reasons:
- The user disabled location services on their device
- The user blocked your app from receiving location-based data
- The user’s device does not support location services
- The user’s device is in airplane mode or is unable to gather data
Best Practices for Collecting and Passing Location Data
Optimizing location data accuracy is all about finding the balance between getting the most granular and precise data possible and fostering a user-friendly in-app experience that does not drain battery power. The more accurate and recent the data you pass in the ad request, the higher the eCPMs your inventory will receive. Here are some tips for accomplishing this:
- Set a reasonable timeout to prevent battery drain by ensuring that updates don’t continue indefinitely
- Defer location updates when your app is running in the background
- Use passive location updates to opportunistically use the data being requested by an app running in the foreground
- Communicate how your app uses this data to your users in clear language