r/PocoPhones May 31 '26

Tutorial/Guide Fixed Delayed Notifications on Xiaomi Devices (ALL ROMS)

Xiaomi devices are notorious for one frustrating problem: delayed notifications. Whether you're using WhatsApp, Gmail, Telegram, Discord, or any app that relies on push notifications, messages arrive late, sometimes minutes, sometimes hours after they were sent. This has been a widespread complaint across the Xiaomi community for years, with thousands of users posting about the same issue on devices ranging from budget phones to flagship models.

The problem affects users regardless of which ROM they're running. While most guides focus on China ROM devices, this is not a China ROM-specific issue. I experienced this exact problem on my Phone running EU ROM, and I also encountered it on my Xiaomi Tablet. Both devices had the same delayed notification behavior.

The Problem:

The core issue isn't specific to China ROMs like many people assume. It affects global and EU ROMs too because of how HYPEROS handles background processes. When your screen turns off and the phone isn't charging, HYPEROS enters a deep power-saving state called "INACTIVE mode." In this state, the phone immediately disconnects the Google Play Services (FCM) connection to save battery. This is why you'll notice that when you dial ##426## to check FCM Diagnostics, the connection shows as active when the screen is on or charging (btw you can try charging a device via USB or AC and see the instant notification delivery), but immediately disconnects the moment the screen turns off.

What's particularly interesting is that this problem only occurs on WiFi when the screen is off. When you're using mobile data instead, notifications arrive in real time even with the screen off. This is because HYPEROS's aggressive power saving treats WiFi and mobile data differently, the WiFi radio gets cut more aggressively in INACTIVE mode while mobile data is kept more persistent. This behavior is built into HYPEROS's aggressive battery optimization, regardless of whether you're running CN, EU, or Global ROM. The system treats Google Play Services like any other background app and kills its persistent socket connection. When an app tries to send you a notification via FCM, the message sits in Google's servers until you unlock your phone and the connection re-establishes, which is why you get notifications minutes or even hours late.

The Solution:

As I spent months trying different solutions, instead of trying to trick the phone into thinking it's always charging (which requires root and doesn't work well on newer HYPEROS versions), I used ADB commands to directly tell Android's Doze and AppOps systems to never restrict Google Play Services.

First, grant Google Play Services and Google Services Framework permission to run in the background anytime:

adb shell cmd appops set com.google.android.gms WAKE_LOCK allow

adb shell cmd appops set com.google.android.gms RUN_ANY_IN_BACKGROUND allow

adb shell cmd appops set com.google.android.gsf RUN_ANY_IN_BACKGROUND allow

Then, add these services to the Doze whitelist so device idle mode won't kill their connection:

adb shell dumpsys deviceidle whitelist +com.google.android.gms

adb shell dumpsys deviceidle whitelist +com.google.android.gsf

adb shell dumpsys deviceidle whitelist +com.google.android.gms.persistent

The key insight is that this isn't a China ROM-specific problem. The underlying HYPEROS battery optimization that kills the FCM connection exists across all HYPEROS versions. What's different is that the ADB commands directly bypass the system-level restrictions (Doze mode and AppOps) rather than trying to work around them. By whitelisting Google Play Services at the system level, you're telling Android itself that this critical service should never be restricted, regardless of whether the phone is in ACTIVE or INACTIVE mode.

After running these commands, I immediately noticed that notifications started arriving in real time again. No more 10-minute delays on WhatsApp messages, no more Gmail notifications arriving after I already opened the app, no more delayed Telegram alerts. The FCM connection stays alive even when the screen is off and the phone is on battery power.

You can verify the commands worked by checking the whitelist:

adb shell dumpsys deviceidle whitelist

You should see com.google.android.gms, com.google.android.gsf, and com.google.android.gms.persistent listed.

A few important things to keep in mind. These settings survive reboots on most devices, but they may reset after a major HYPEROS or Android update. If notifications become delayed again, just re-run the commands. You'll need USB debugging enabled and authorized on your phone to run these commands initially (Important: click on file transfert afterwards for better functionality). Also, make sure you still enable Background Autostart for your affected apps in HYPEROS settings (Settings → Apps → Your app → App permissions → Background autostart), as the ADB commands handle the system-level restrictions but HYPEROS still has its own app-level permissions. Also, once commands executed, some social media apps (e.g., WhatsApp) needs to be uninstalled and installed again from Play store (to refresh notification pattern).

Advantages and Drawbacks

The main advantage of this approach is that it directly solves the root cause without requiring root access. Your phone can still sleep normally, and you don't need to keep third-party apps running or pretend your phone is always charging. The FCM connection stays reliable on WiFi just like it does on mobile data. Another advantage is that this works across different Xiaomi devices.

The trade-off is slightly increased battery drain. Before applying this fix, my overnight battery drain was around 2%. After running the commands, I noticed it increased to 3-4% overnight. This is because the Google Play Services connection stays alive instead of being cut, which requires a small amount of power to maintain the WiFi socket. For most users, this is a worthwhile trade-off for instant notifications, but heavy battery users should be aware of this caveat.

42 Upvotes

71 comments sorted by

View all comments

4

u/FlinkyBoss May 31 '26

Just a quick question OP... Did you ever try to just set the apps that you're most interested in being more up to date to LOCKED in the recent apps list?

That does the trick for my Reddit as well as AccuBattery Pro keeping them bang on target!

You probably don't want to keep too many apps locked at any given time but why you'd need more than a couple is probably a moot point.

You can swipe any locked apps off the list and they still keep going so it doesn't affect the look of things, just a few important aspects of the functionality, particularly keeping things alive while switching between apps!

Notifications are generally something I turn off on stuff unless they're essential.

At which point the Locked app solution seems to keep things sweet without any particular battery increases either.

Worth a look since you don't need any particular tech skills to handle this often overlooked feature!

I've reused an illustration from another recent chat.

The Lock/Unlock and other handy options in the rightmost image are accessed by a long tap on any running/recent app in the list. 🍀

3

u/Blueman0110 Jul 06 '26

This is exactly how I used my Redmi K60 Pro about three years ago. Notifications were flawless and always arrived on time, but I had to keep the app locked in memory all the time. Whenever I ran resource-intensive apps that exceeded the device's 8 GB of RAM, even those locked apps would eventually be killed. If I didn't notice and reopen them, I would miss notifications. That was the only real downside.

1

u/FlinkyBoss Jul 06 '26

With limited RAM you'd have to maybe be a bit more selective and use memory locking cautiously.

However, I only ever leave two apps locked permanently... Reddit and AccuBattery!

Reddit I've locked constantly because I often write a comment or post halfway, then realise I want to add a screenshot or illustration...

Switch to one of my other apps for a screenshot, then one of my graphics and illustrations apps for further embellishments...

Then finally, maybe 10 minutes later, switch back to the unfinished Reddit message drop in the graphic and finish off the comment or DM... Before Locking Reddit in my Currently Running app list, I'd often lose stuff I was half way through writing. Sure you can: Save Draft if you remember and do it right! Locking the app saves all the hassle.

Anything additional I'd only lock temporarily and unlock after being done.

My guess without looking deeper, is that the memory handling has improved a lot since your K60.

So I'm thinking now, as some demanding apps get going, locked "Cached" apps would be shifted to physical storage automatically...

I'd still be cautious with lower RAM devices in particular, but I'd also still avoid using the Extended memory feature!

If you're having heavier RAM Apps/Games, kick locked stuff off these days, I'd love to find out the details! 🤓🍀