Push is still a little buggy on the phone in my opinion. There are a couple issues that can cause push to stop working for a little while:
#1
If you have a relatively long outage of push AND your phone is connected to a local WiFi router, you may be experiencing the WiFi DNS bug. This affects the phone when it is connected to certain WiFi routers which use a limited DNS server (dnsmasq) and it does not always forward all the information that a *real* DNS server would forward. The solution is to set your WiFi DNS to something other than your router, such as Google's new DNS servers, 8.8.8.8
For detailed instructions, see the last question in my FAQ here : viewtopic.php?f=5&t=2
#2
If you have small amounts of time that you detect that push isn't working (30 minutes max!), then you may have seen the hearbeat interval bug which affects push over cell data. You will generally not experience this bug if you have any push email configured (Exchange, MobileMe), or have Mail set to fetch every 15 or 30 minutes.
What happens is there is a "heartbeat interval" timer that push uses to decide how long to wait before contacting apple to make sure the connection is still up. Well, this interval keeps increasing each time until it reaches one hour OR it gets an error because the cell carrier closed the connection. It usually gets an error before one hour because most cell carriers don't allow you to keep an idle connection open that long. When it gets an error, it drops the heartbeat interval down and starts over again.
However, when it gets that error, basically you have lost instant pushes for a short amount of time.
I am readying a fix within the next week that will force the heartbeat interval to remain around 5 to 15 minutes, which is the most desirable time for all carriers worldwide. Not all users will need the fix and that is an issue for me : determining whether to offer it to everyone.
If you have Erica Utilities installed, you can see your current heartbeat invterval by running
- Code: Select all
plutil /var/mobile/Library/Caches/com.apple.persistentconnection.cache.plist
and you will get output like this :
- Code: Select all
{
"PersConn-apsd-com.apple.apsd-push.apple.com" = {
date = 2009-12-18 03:06:21 -0600;
hbi = 1200;
identifier = "com.apple.apsd-push.apple.com";
};
}
The current interval in this case is 1200 seconds, which is 20 minutes. It can get as high as 3600 seconds and as low as 300. The push daemon (APSD) constantly adjusts it.
