Here are the answers to your questions:
1. There are some APIs in iOS which can be used to find out what types of notifications are enabled for the current app. Here is a blog post that explains how to do this with Cordova(search for 'getRemoteNotificationStatus'): http://devgirl.org/2012/10/19/tutorial-apple-push-notifications-with-phonegap-part-1/
2. You do not need to do anything specific in this case. When the user disables the push notifications, it will invalidate the push token (this token is what Everlive uses to send push notifications to the device). The next time you send a notification for this device, Everlive will try to send it to Apple and they will respond that this is an invalid token. Of course, if you have some specific logic that depends on that, you could resolve to step 1 and check the status.
3. Usually, the app requests push notification permissions when the user opts for such from within the app. You should then invoke the enableNotifications() method from the Everlive SDK. It will give an error if the user rejects so that you will know. You can then store this in your app (internal storage). if necessary.
4. No, you should only register in Everlive devices that allow push notifications. The process is in two steps - you get permissions for push first (invoke the enableNotifications() method). If it succeeds, only then you should register the device in Everlive (invoke the register() method). If you want to store the choice of the user, do it in the local storage.
5. You can test push notifications with APN without having an app in the store. However, it must be on a real device, emulator will not do. Also, Ion will not work, because it does not have the push notifications plugin that is used for sending push notifications. You will have to deploy your app directly to the device. It is worth noting that Apple provides two environments for push notifications - development and production. You can read more about them here
Looking for tips & tricks directly from the Icenium team? Check out our blog!
Share feedback and vote for features on our Feedback Portal.