It can be very annoying to get a WhatsApp notification (for example) several minutes after it was sent. The message could be something important, and getting it too late can have disastrous consequences.
Not all hope is lost since there are methods you can try to fix this problem. You’ll finally get the notifications on time and not an hour later. The solutions are beginner friendly, so they will be easy to understand.
Consider Removing Power Saver Apps
You may use these kinds of apps to help keep your phone alive a little longer. You may even see battery life increase, but this app could be the reason to why you’re getting your not getting your notifications on time.
These apps could be preventing your phone from connecting to the servers that send you your notifications when you put your phone to sleep. If you think you can live without these kinds of apps, it’s a good idea to uninstall them.
Keep WiFi On At All Times
If you only get the notifications when you turn on your phone, it could be because you have your phone set up that way. To see if this feature disabled, go to your device’s settings and tap on the WiFi option.
Select the More option at the top right, and the Keep WiFi on during sleep option will be near the bottom. After selecting this option, select the Always option (it will be the first one on the list). In parenthesis, the option will inform you that by choosing this option, your device’s battery consumption will increase.
Disable Power Saving Mode
The power saving mode option will help you save battery power by preventing your phone from doing various things. For example, this feature will avoid processing background, and that could be the reason why you’re not getting your notifications on time.
To turn this feature off, go to your device’s settings, followed by the battery option. You should now see options to disable either power saving mode or ultra power saving mode. If your Android device is running on Android Oreo, the option to disable this option will be under the Battery Management section.
Allow Data Usage for a Specific App
Is it only a specific app your having problems with? For example, let’s say that the only app your getting delayed notifications from is WhatsApp. It could be because the Restrict app background data option is on. To discard this possibility, go to Settings > Data Usage > WhatsApp and make sure that the Restrict background data option is off.
If you have an Android Oreo device, the steps are going to be different. For Oreo users, go to Settings > Network & Internet > App Info > WhatsApp (for example) and at the bottom, under App settings, you’ll see the Background data and Unrestricted data usage. If you never want to miss a notification from a specific app, make sure to have both of these options turned on.
Use a Push Notification Fixer App
Android apps use Google Cloud Notifications, and as a result, your Android device sends a network pack, also known as heartbeats. The time that can pass between your device connecting to the servers can range from 15 to 28 minutes. If you want to reduce this time, you can use a push notification fixer app.
As soon as you finish installing the app, the heartbeat intervals will be set to five minutes by default. If you want to change it when you’re using WiFi or mobile data.
If one method doesn’t work for you, others will hopefully get the job done. You can finally get your notifications on time and get your news as soon as possible. Which method worked for you? Share your experience with us in the comments.
Finally after long searching on the Internet and trying common advices as a disabling battery optimizations, Adaptive Notifications and all those features that didn’t help at all, I found the XDA Developers forum where I finally got to the bottom of this issue.
This problem is caused by functionality called as “DOZE”, which is implemented in the Android core since Android 6.
Basically what is does is that it tries to preserve the phone battery life in a very aggressive way that basically puts all applications and network activity to standby until the maintenance window occurs. The maintenance window is a very short time period where all events from applications waiting in the queue are processed at once and then it puts all apps to standby again until next maintenance window occurs.
Problem is that with every next maintenance window the intervals between those windows are increasing every time up to some long limit. So if you haven’t touched your phone for a longer time, like half an hour and the event happens, you will get the notification in the next maintenance window that may be tens of minutes from that moment.
I don’t know how Google can act as this is OK. It is NOT!! For me it was causing serious problems with my Forex trading app that didn’t display price alerts on time when the event happened but like 5, 15, 30 minutes or even almost 1 hour later !! which is not useful for me because the opportunity for the trade was already gone…
So solution is to disable the “DOZE” in your phone manually using ADB commands. I did it and it works, now I get instant notifications. Unfortunately this has to be done every time after phone reboot as it turns itself the DOZE back on again.
Here is a page with more details:
Basically you just issue this ADB command: dumpsys deviceidle disable
You can also put the application to the Doze whitelist but not sure if it works, when I displayed the list, I found out my trading app was already there, maybe because I removed it from the Battery saving policy but the Doze was probably still suspending everything so it worked only in those maintenance windows. I guess it doesn’t use those “high-priority FCM messages” described in the DOZE description to force the notifications instantly.
If you are not familiar with ADB, here is some info:
I used a paid app that allows local ADB connection from the phone directly, so I can disable DOZE after every restart. More info here:
It is very sad that this basic feature as an instant notifications have to be fixed via the developer debug interface by user instead of Google who could fix it in the OS itself…shame on Google…
More forums on this topic: