Ce que cela signifie
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)
Depuis Android 10, un service de premier plan qui lit la position déclare android:foregroundServiceType="location". Le contrôle liste ces services. Ce que fait chacun (navigation, suivi d'activité ou geofencing) ne figure pas dans le binaire : le résultat est donc non déterminé, avec la liste des services à examiner.
Échéance
À partir du 27 janvier 2027, selon le calendrier des règles Google Play. Le contrôle applique la règle à partir de cette date ; avant, le résultat est intitulé « Exigé à partir du » cette date. Il n'est jamais bloquant : ce qu'exige Google ne figure pas dans le binaire.
Corriger
1. Identifier l'usage du service de localisation
Examinez chaque service listé par le contrôle. S'il ne fait qu'attendre l'entrée ou la sortie de l'utilisateur d'une zone, il est concerné par ce changement.
2. Enregistrer des zones à la place
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. Mettre à jour la déclaration dans la Play Console
Retirez le geofencing de la déclaration des services de premier plan, ou retirez le type location si le service n'en a plus besoin.
Vérifier avant de soumettre
Déposez l'APK, AAB ou lot d'APK fractionnés (XAPK, APKS, APKM) sur la page de contrôle des stores. Elle exécute PLAY-FGS-GEOFENCING avec les dates de cette page, puis supprime le fichier : rien de l'application n'est conservé.
Questions fréquentes
Mon service de localisation sert à la navigation guidée. Est-il concerné ?
Non. Seul le geofencing perd son autorisation. Le contrôle ne peut pas distinguer les deux, c'est pourquoi il indique un résultat non déterminé plutôt qu'un échec.
Le service de localisation vient d'une bibliothèque. Que faire ?
Vérifiez à quoi la bibliothèque l'utilise. Si l'application ne le lance jamais, retirez le service du manifeste fusionné avec tools:node="remove" ; la déclaration des services de premier plan couvre tous les types contenus dans le build envoyé.