Huh that’s interesting, do you have any further context on that? I’ve not worked on a product with anywhere near that scale before so monitoring has always been whatever I can get from commercial push platforms

I mean... record the time we first send a push message, when a client connects have it tell you if it's because it got a push or user interactive start, check the time between push and connection, add that to your choice of time series graphing tool. Graph by platform, and you can see when the platforms are delaying pushes.

Some of the delay will be ordinary things like their push service fell over or is unreliable (you also get some feedback when they don't accept push messages), or their push connection runs into silent NAT timeouts on some networks. But some of it will be things like you ran into an undocumented push quota, so Blackberry users don't get timely pushes at peak, etc. On client platforms where you have reliable background execution with network connectivity, you can potentially signal connecting clients if platform push isn't working well and have them switch to persistent connections until the push service comes back. But that was never an option for iOS; it hasn't been a reasonable option for Android since at least Android 6 when Doze was introduced... and app killers before then made it hard before then; and all the other platforms are dead. Now, push really just has to work.

AFAIK, Apple has always been willing to deprioritize pushes when you send "too many", especially when there's no user interaction; or when they added silent (voip) pushes to wake up the app, they only let you have a few silent pushes if you don't post a user visible push.

For ordinary async messaging, push latency doesn't become a big deal until it hits double digit seconds. For voice/video calls, you really want pushes to be as near to real time as possible, or the caller is gone before the callee phone rings.

Hmm, there's just a few big messaging apps and just a few os vendors, weird that you couldn't have established special treatment for pushes about user to user messages

Well... Blackberry wasn't very interested in increasing our push quota (but they eventually did). Apple is Apple ... getting them to make exceptions is very hard. Android push problems were more often on-device, which Google can't really help with; even when it was their software, they're not going to set it up to make exceptions. Nokia and Microsoft did try to be helpful with pushes... but their platforms are gone. Nokia S60 never had push, but those devices were very good at staying connected to our servers.

All that said, it's not like the platform developers are fully in the wrong when they're reducing pushes. It does have an impact on battery life, and if users aren't acting on them quickly, maybe the platform shouldn't either, even if there's risks when delaying communication.