The platform limits what an app can do; Google Play 1 limits what it may ask for:
| Declaration | Play accepts it when |
|---|---|
| A foreground service type | Declared in Play Console 1 per type, with a demo video |
| REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | Doze breaks the core function |
| USE_EXACT_ALARM | The app is an alarm clock, timer or calendar |
| ACCESS_BACKGROUND_LOCATION | A core feature, declared (Location Permission) |
The foreground-service form asks what the feature does, what the user loses if the system defers or interrupts it, and for a video of the user starting it. A chat app asking to skip battery optimization is refused, since high-priority Firebase Cloud Messaging 1 already wakes it. And since 1 March 2026, Android vitals counts excessive partial wake locks: more than two cumulative hours of non-exempt wake locks in 24 hours makes a session excessive, and an app over that in 5% of sessions across 28 days can lose recommendations and get a battery-drain warning on its listing. Audio, location and user-initiated jobs are exempt.
BookNest asks for none of the restricted items: WorkManager 234 for the catalog, a user-started dataSync job for the offline pack, and no exact alarms. Aim for the same in the React Native 36,878 app of React Native, whose expo-background-task hands its work to the same WorkManager.