I'm not sure how you're able to re-ask every time the app reboots (do you mean is reinstalled?). Maybe it is more of an issue with older iOS versions and in 7+ it is now OK. I did have one person who is using iPhone 5C initially decline, but then later was able to set them up. I also can uninstall, push the clock forward, reboot, reinstall and then the ask comes through again just fine. Something weird though - if the user says OK to push on the first time then reinstalls later and says NO then I can still obtain the push token without Apple's dialogue... Apple probably wouldn't like this if they knew. So once the YES permission is set, it seems it is always set.
At any rate, Apple recognizes this as a bug/issue. It's not a big deal because we just use our own confirmation prompt before showing Apple's prompt now. So if they say "no" to us then they never say "no" to Apple's dialogue, which allows us to ask again later without issue.
I'm not sure if I need the Obj C code, but I might take you up on your offer later.
Do you use your own PHP scripts or did you install something like EasyAPNS?
We're running into small issues where DNS wasn't resolving quickly enough and the push would be sent, but the response to our app was very slow. So I need to send off my process for push notification to be handled on it's own thread instead of in the same script that sends the response to the game.
If you'd be willing to share your scripts I'd love to see them.
Thanks!