Using our own inbuilt APNS push system (written in PHP), we push to our devices on certain events. Some notifications are received by devices fairly instantaneously, while some devices can take up to 15 minutes to see.
We hold the connection open (as required by Apple) and reset connections on errors as also documented (typically when they close the connection).
All that works fine, I can at any point put into our system queue a message to my ipod touch, and will receive notification within seconds.
Sometimes however, on other devices (3G iPhone devices for example) APNS is more often than not, delivered correctly - but can take up to 15 minutes to arrive.
Watching my application, I can see the notifications are pushed only once, very quickly, and without errors. However, they seem to be unpredictable in terms of delivery speed.
I understand that APNS prefers using 3G, so if connectivity is an issue - this can cause delay up to 15 minutes while APNS connectivity on the device is reinitialized.
Is there something more that can be done in delivering successful (and quick) APNS messages on our end or a fact of life when using APNS?
It appears the devices we're testing on that seem to have the most issues are with Vodafone (Australia).