The minimum interval for periodic jobs is 15 minutes. When the device is in Doze mode, the jobs are defered to the next maintenance window. The longer the device remains in Doze mode, the greater the distance between two maintenance windows.
Do you want to use a messenger or any other social media app where the worst case scenario is that it takes 15 minutes for the message to reach the recipient?
Certainly not, so the app vendor is forced to use FCM to display notifications immediately even if the recipient's device is in Doze mode.
Yes, this Doze whitelist has existed since Marshmallow, when Doze was introduced. However, adding your app to this list does not affect the limitations of background services implemented with Oreo.
If you want to implement your own push notifications, you need some kind of persistent connection to your server. Before Oreo, this was simply possible with a background service.
But starting from Oreo, your background services are shut down after 2 or 3 minutes, as soon as the corresponding app is no longer in the foreground.
Of course, you could try to use a foreground service (which must display a notification). But even then the user gets a constant warning displayed like "App xyz is running in the background" or "App xyz is using battery".
Many users are not developers. If they get such a warning, they think something is wrong with your app. This is just not a good user experience.
You are virtually forced to use FCM. And that doesn't work without a Google account.
Although it is possible to distribute Android apps through other channels, you should not forget that for some applications you are still bound to Google.
Due to the changes in Android Oreo regarding background services, you need Firebase Cloud Messaging (FCM) for a Messenger or other communication app to get the device out of Doze mode and to deliver push notifications without delay.
If Google closes your account, you can still distribute the app through other stores, but FCM won't work anymore and there's no replacement for it.
Remote: Yes
Willing to relocate: No (but occasional travel/onsite is ok)
Technologies: Java (Android, SWT, Swing, JSF/PrimeFaces), C, C++, SQL (MySQL/MariaDB, PostgreSQL, SQLite), Linux
Résumé/CV: https://t1p.de/c8rx12
Email: in resume