Maybe there is a problem with registering and unregistering the app at login/logout respectively, from Apple's documentation:
An application should register every time it launches and give its provider the current token.
And not sure about unregistering, they don't mention unregistering in their programming guide, maybe the app should never unregister and the server should handle that, by sending or not sending push notifications depending if the user is logged in or not. This is how I've done it in the past, and never experienced this issue, so maybe this approach works for you too.