Skip to content
Narvy

Geofencing no longer allowed in a foreground service on Google Play

Google Play removes geofencing (triggering an action when the user enters or leaves an area) from the approved uses of a foreground service. Apps that keep a location foreground service running to watch areas should register geofences with the Geofence API instead, and update their foreground service declaration in Play Console.

What it means

We're removing geofencing as an approved foreground services use case. Developers can instead use the Geofence API for this use case.

Play Console Help, foreground service requirements (preview)

Since Android 10, a foreground service that reads the location declares android:foregroundServiceType="location". The store check lists those services. What each one does (navigation, workout tracking, or geofencing) is not in the binary, so the result is not determined, with the list of services to review.

Deadline

From January 27, 2027, as listed in Google's Play policy deadlines. The store check applies the rule from that date; before it, the finding is titled "Required from" the date. It is never a blocker: what Google requires is not in the binary.

How to fix it

1. Find what the location service is used for

Review each service the store check lists. If it only waits for the user to enter or leave an area, it falls under this change.

2. Register geofences instead

Kotlin (Google Play services location)
val geofence = Geofence.Builder()
    .setRequestId("store-42")
    .setCircularRegion(lat, lng, 150f)
    .setExpirationDuration(Geofence.NEVER_EXPIRE)
    .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER)
    .build()

LocationServices.getGeofencingClient(context).addGeofences(
    GeofencingRequest.Builder().addGeofence(geofence).build(),
    geofencePendingIntent
)

3. Update the Play Console declaration

Remove geofencing from the foreground service declaration, or remove the location type if the service no longer needs it.

Check before you submit

Upload the APK, AAB or split-APK set (XAPK, APKS, APKM) on the store check page. It runs PLAY-FGS-GEOFENCING against the dates on this page, then deletes the file: nothing about the app is kept.

Check a build in the browser

FAQ

My location service is for turn-by-turn navigation. Is it concerned?

No. Only geofencing loses its approval. The store check cannot tell the two apart, which is why it reports not determined rather than a failure.

The location service comes from a library. What should I do?

Check what the library uses it for. If the app never starts it, remove the service from the merged manifest with tools:node="remove"; the foreground service declaration covers every type the uploaded build contains.