What is Notification Error

TiPb's getting a lot of questions about Notification Error "no valid 'aps-environment' entitlement string found for application, what it means, and what can be done about it. Reason being, Google released their new Gmail for iPhone and iPad app today today, and subsequently pulled it due to some launch-time bugs involving Push Notifications.

Short answer: Google messed up Push Notifications and there's nothing you can do about it until Google fixes it and Apple pushes out that fix.

Long answer: We reached out to Paul Haddad of Tapbots and Tweetbot fame to get a better informed idea of what's going on, and this is what he was kind enough to share:

In the iOS Provisioning Portal you need to various different certificates. For all apps you'll normally generate a Development, AdHoc distribution and Store distribution certificates. For push enabled apps you also need to generate Development and Production Push certificates.

What I think happens is that most people start by generating and downloading the 3 standard certificates and at some later point generate the Push certificates. However when you create the Push certificates it modifies the standard certificates in some way that tells the OS that it can be used for push notifications. You'll often re-generate/download the Development and AdHoc certificates as you add new devices for testing, but you only have to re-genrate the Store certificates once a year when renewing with Apple.

So again what Google probably did is create the standard certificates, then create the Push certificates and didn't re-generate/download the Store certificate. It's a really easy mistake to make and there's no indication of a problem anywhere within the submission process to Apple. It's also a pretty trivial thing to fix and I'd expect Google to re-submit and Apple to expedite the release pretty quickly.

It does make me wonder why Apple didn't catch this issue, my guess is something about the way they run apps prevents this error from showing up.

As far as I know the only way to see if this is a problem or not is to run the following command

codesign -dvvvv --entitlements - .app

and look for the following two lines in the output

aps-environment production

Thanks Paul!