Reputation: 1427
Guys I'm having some trouble figuring out the key differences between the APNS (push notification) Developer (Sandbox) and Production modes. In particular I have the following questions:
1) Can I launch an app on the app-store with Push Notifications that is only registered for the APNS Developer Certificate? Or do I need to use to use APNS Production for apps I want to launch on the app store?
2) In general, what are the functional reasons other than "development on development APNS" and "production on production APNS" that would inform my decision. In particular why would I choose to implement an APNS Developer certificate for my app at all and why not just run everything on a Production push account?
Here's what Apple says on it's website but it doesn't get to the heart of my question:
Development: Use the development environment for initial development and testing of the provider app. It provides the same set of services as the production environment, although with a smaller number of server units. The development environment also acts as a virtual device, enabling simulated end-to-end testing. You access the development environment at gateway.sandbox.push.apple.com, outbound TCP port 2195.
Production: Use the production environment when building the production version of the provider app. Apps using the production environment must meet Apple’s reliability requirements.
Upvotes: 62
Views: 42108
Reputation: 2619
I think the answer above doesn't really answer the question, there is a way. When you are in the sandbox you get a sandbox tagged receipt
extension UIApplication {
static var isSandboxEnvironment: Bool {
#if DEBUG
return true
#else
if let receiptURL = Bundle.main.appStoreReceiptURL {
return receiptURL.lastPathComponent == "sandboxReceipt"
}
return false
#endif
}
}
Then just call UIApplication.isSandboxEnvironment
and send it to your server along with the token. Your server can pivot based on that bool.
EDIT: Actually though, I just tested on TestFlight and it seems you should treat it like production.. so its just literally if Debug... no need to worry about sandboxReceipt
would love to do a strikethrough but I don't know how
Upvotes: 0
Reputation: 2296
If you want to post your app to the app store you will need to use a Production Provisioning Profile, therefore all notifications sent with APNS Developer Certificate will not arrive to your app signed with a Production Provisioning Profile.
Why not use only a production APNS certificate? Well you can do this but...
Upvotes: 56
Reputation: 441
dminones' answer is very accurate. I want to point out that you can now use production cert in development. The difference is that you will send to 'gateway.sandbox.push.apple.com' for development and 'gateway.push.apple.com' for production. I think the reason for separating sandbox and production is to avoid sending test push notifications to real users. Imagine you do blast notifications, all of your users will have the notification.
Upvotes: 28