Missing Push Notification Entitlement for iOS app - ios

I've just uploaded an app to iTunes Connect and got the "Missing Push Notification Entitlement" warning from Apple. My app does not use any API related to push notifications. The warning also included that I do not have the aps-environment entitlement. How do I get rid of this warning? I tried disabling push notifications in the member center and in Xcode (I created a preprocessor macro DISABLE_PUSH_NOTIFICATIONS=1) and still no luck.
EDIT:
I used grep in my project directory to search for couple of strings that could cause this issue. Grep matched the string
"registerForRemoteNotificationTypes"
in
./myProject.xcodeproj/project.xcworkspace/xcuserdata/myUser.xcuserdatad/UserInterfaceState.xcuserstate
I have no idea whether removing the string from this file will change anything because I am unable to upload the app to TestFlight at the moment. I will be thankful if someone has the same issue and tries to fix it by removing the string found by grep (if it's a good idea to edit .xcuserstate files...)

Try re-create distribution provisioning profile and double check that you do NOT include push notification into list of entitlements

Enable push notification in your bundle Id and recreate provisioning profile .This things work for me.

Related

Missing Push Notification Entitlement, even with aps-environment entitlement set. iOS and Testflight

Good morning!
I am working on getting my app to receive push notifications from Firebase cloud messaging. when I add my build to testflight, I get a warning email with the error code: ITMS-90078: Missing Push Notification Entitlement, I am allowing xcode to manage my profile, which has the aps-environment entitlement and the capability for push notifications, and a development signing certificate, as you can see in this screenshot from xcode:
Luckily, this is just a warning, so I can still push this build to my testflight testers, but they do not receive push notifications. I can confirm that firebase cloud messaging is generating the device messaging token, and it is storing in my firebase database just fine, so I assume this is not the issue.
I have also confirmed that I have a Production Apple Push notification SSL cert assigned to this bundle ID, as shown here:
After I took this screenshot, I also tried adding a development SSL cert, but the problem persists.
I have found a number of other posts on apple dev forums and here on Stack exchange, but most are fron over 4 years ago and no longer appear relevant. Example: Missing Push Notification Entitlement warning
What am I missing? Thank you for your time and help in advance!
UPDATE
I have now also attempted the to fix this by using a provisioning profile I set up, rather than allowing xcode to manage it for me. It is an "App Store Distribution" Profile.
Same issue, getting the same email error, and any installed applications do not receive push notifications. Any suggestions? Thanks!
After a multi - hour debug session with a friend of mine that is better versed in Apple processes than I am, we managed to figure out the issue. Everything was set up correctly... all my certs were in line, all of the profiles and Bundle IDs matched, everything looked good. The issue was for some reason, xcode was displaying all of my certs from appstoreconnect and developer.apple.com, but it was not including a local entitlements file with the binary that ultimately got uploaded to app store connect, which drew the error, and ultimately prevented push notifications from working. The fix was simple... just click "+ capability" next to "all" in signing and capabilities, search for and add push notifications, and bingo! This adds the proper entitlements to my binary, which then look for the certs in app store connect. This now uploads without the error message and push notifications on any installs from this new build starting working immediately. I hope this helps someone, someday! Apple, please make this more straightforward, or don't let xcode lie about its certs!

Missing push notification entitlement, false positive for app

Please read this question completely without marking it as duplicate , I am now working on an app not using any API for Apple Push Notification.
And as far as testing goes, it works fine, but Apple keeps emailing me the message below.
I have read on the net, and done as much as I can to avoid this.
All i found on the internet having solution for this kind of problem for those who enables push notification but not a single solution for this false positive case.
My App ID is even not enabled for Push Notification, regenerating my Provisioning Profile (a number of times), with manual signing and …. But it keeps coming whatever I do. Am I missing some point?
I've searched my app code for registerForRemoteNotifications and so far as I can tell I never attempt to register for push notifications.
Mail from Apple :-
We identified one or more issues with a recent delivery for your app, "myAPP". Your delivery was successful, but you may wish to correct the following issues in your next delivery:
Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the "aps-environment" entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the "aps-environment" entitlement. Xcode 8 does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor's Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.
After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to iTunes Connect.
any help is appreciated, this is rally important for me to fix this warning.
I have read on the net, and done as much as I can to avoid this.
All i found on the internet having solution for this kind of problem for those who enables push notification but not a single solution for this false positive case. i will be grateful for those with logical explanation to this issue.
this is a warning by apple that you have enable push notification for particular App in your developer console .
But you have not enabled the push notification in your application
Please go to your app target and enable this in capabilities and then try to upload
Disable Push notfication
Go to your Developer account
Click on the app id for which you want to disable it
then press edit
and deselect the push notification in panel
and save
Then you have to again create new production certificates and upload the application.
Hope it helps
Happened to me as well.
I just cleaned the build Command + Option + Shift + K and tried again, and it worked.
Sometimes you have to unselect and select your provisioning profiles in Xcode to make it work. I don't know why.
It is a pain trying different options out, as the process takes quite a bit of time.

Xcode 8: aps-environment is missing from the archived app

I recently updated to Xcode 8. During development I was failing to obtain a device token. Investigation showed that I needed to enable Push Notification under "Target -> Capabilities". Once I did that I was able to register and receive notifications just fine during development.
I am now ready to push the app to the app store. I created the archive and uploaded it to iTunes connect but got an email stating:
Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the "aps-environment" entitlement.
I went back to the archive and I couldn't find the aps-environment in the list of entitlements. It then makes sense why I received the email. I have been trying now for several hours to get the archive (production) build to include the aps-environment entitlement but I have not been able to.
My AppID has Push Notifications enabled for development and production
Push notifications still remain enabled in Target -> Capabilities. The entitlement file that is generated has the environment as development. I have however read that during the archiving/uploading to iTunes the environment is automatically changed to production. I have stubbornly changed it manually to production but that made no difference.
I decided to use TestFlight to test the build that was uploaded and I confirm that notifications are not working.
My app worked well when built with Xcode 7. It is the upgrade to Xcode that has broken this and I have not been able to get over this hump. Any help will be greatly appreciated.
Below is exactly my issue but I don't have enough reputation points to add comments to revive the discussion so I'm posting a new question. I wouldn't mind if this is marked as a duplicate provided I can get a solution. Xcode 8 Says Provisioning Profile Has aps-environment entitlement but after export Archive aps-environment is missing
Check that the file platforms/ios/APP_NAME/Entitlemens-Release.plist is the same as platforms/ios/APP_NAME/Entitlemens-Debug.plist
the parameter aps-environment have to apear in both:
in your platforms/ios/APP_NAME/Entitlemens-Release.plist
it had to be production
and in platforms/ios/APP_NAME/Entitlemens-Debug.plist - development
Try enabling Push Notifications in the target's capabilities tab.
That solved it for me.

Mismatched Bundle ID (Sandbox) in OneSignal

I'm trying to send PN to my iOS App.
I followed the standard steps, i.e.:
create new app and upload the development and distribution(sandbox) certificates
put the App id in my project: OneSignal.initWithLaunchOptions(launchOptions, appId:"myAppID")
create new template
send a message
When I sent the PN I got "send message successfully" green message, but after a while I got a warning when I clicked on it I directed to App Settings page and the warning is:
and I didn't receive any PN!!
I checked my bundle ID in my project and it's 100% matched to the uploaded certificates.
Anyone faced like this problem when trying to use OneSignal for PN?
Please help.
Thanks.
This problem happens when your application is built with a Provisioning Profile for a Bundle ID that does not match the Bundle ID of the push certificate you uploaded to OneSignal.
It is possible that you have created several builds of your application, some with the correct bundle id and some with an incorrect one. As a result you may have subscribed devices in OneSignal that are linked to different bundle ids.
If you are able to receive notifications with the latest build of your application then you can probably ignore this error. If all of the iOS notifications you send show up as "Invalid", then you must either upload a new push certificate with the correct bundle id, or build your app with a provisioning profile that matches your push certificate's bundle id.
I got this warning on a few of my failed messages that I triggered from Zapier. I verified my Bundle ID and they are exactly the same, and I was getting other notifications just fine. As #gdeglin said I'm going to ignore this warning for now, as it doesn't seem to point an issue at this point of time. If you find any other answer to this please share, I'm sure others are facing similar issues as well.

Xcode 8 "the aps-environment entitlement is missing from the app's signature" on submit

I've got an app that we've submitted dozends of versions to in the last 6 months and we do use APNS. I got the following email from Apple after upgrading to Xcode 8
Dear developer,
We have discovered one or more issues with your recent delivery for
APP_NAME. Your delivery was
successful, but you may wish to correct the following issues in your
next delivery:
Missing Push Notification Entitlement - Your app includes an API for
Apple's Push Notification service, but the aps-environment entitlement
is missing from the app's signature. To resolve this, make sure your
App ID is enabled for push notification in the Provisioning Portal.
Then, sign your app with a distribution provisioning profile that
includes the aps-environment entitlement. This will create the correct
signature, and you can resubmit your app. See "Provisioning and
Development" in the Local and Push Notification Programming Guide for
more information. If your app does not use the Apple Push Notification
service, no action is required. You may remove the API from future
submissions to stop this warning. If you use a third-party framework,
you may need to contact the developer for information on removing the
API.
After you’ve corrected the issues, you can use Xcode or Application
Loader to upload a new binary to iTunes Connect.
Regards,
The App Store team
What is weird is I went to developer.apple.com -> Certificates, Identifiers & Profiles and my AppId does have Push Notifications enabled still. I'm not doing anything different then I've ever done on it so am curious if the Xcode 8 update broke something. Any ideas?
BTW: The link they put for the Push Notification Programming Guide was broken in the email, so that's not a good sign.
Very easy actually. For some reason it got disabled on Xcode 8 but go to Targets -> Capabilities and verify Push Notifications is all correct on that view. For me it had a "Fix Me" I had to click, and voila.
I also have the same problem, and I'm sure Push notification is off by default in Xcode8. I didn't notice it. Be careful about it.
There was a change in Xcode 8, where your entitlements no longer come from the App Identifiers, but from the capabilities selected in your app target. So, like Unome (the OP) said, you have to verify that Push Notifications is switched on.
For me, it wasn't a "Fix Me" button, but I had two entitlement files (one for development and one for distribution). Toggling the Push Notifications capability would add the aps-environment key - with the value development - to the development entitlements file, but it wouldn't add it to the distribution entitlements file. Copying the same key over to distribution worked to get rid of the warning email when uploading to iTunes Connect.
For most projects, it should be sufficient to toggle on Push Notifications, or if it's already on but the key isn't in the entitlements, try toggling it off and on again.
It's also worth noting that entitlements automatically get updated during archive. ie the entitlements generated for release builds can be different from entitlements generated for development builds. See here
During the app distribution process through the Xcode Organizer >
Archives tab, entitlements are set onto the app by way of the
provisioning profile used for code signing. It is important to be
aware that the re-application of entitlements at this phase creates
the opportunity for unintended entitlement differences between any
prior development builds you may have tested. The primary purpose of
this document is to verify that your entitlements are correct for your
distribution builds for beta testing and App Store submission.
From the Xcode release notes:
Xcode 8 does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor’s Capabilities pane, or manually add the entitlement to your entitlements file. (28076333)
This is a great change as it was always quite odd that the aps-environment entitlement didn't require the plist, but many others did.
For those of you that do not want to just blindly press "Fix Me" and do not currently have an entitlements file, it is just a plist file which is referenced in your project's Build Settings under "Code Signing Entitlements"
After a day of struggle with Xcode 8 we could not figure out why the aps-environment development was NOT added to our debug builds. It was missing from the entitlements section in the built app for debug testing... even though we had ENABLED the new Capability and the entitlements file existed. The issue is that the entitlements file needs to be set for ANY SDK in the Xcode Build Settings for Debug Entitlements.
I got the same email from Apple using XCode 7.3.1. What I did to solve the problem was:
Under Capabilities > Set PUSH notification ON as stated in #Bruce Tsai answer.
Under Build-Settings > Code Signing > Code Signing Identity set the developer cert for debug and the distribution cert for release, as is shown in the image:
Automatically manage signing was off for me, i checked and working fine for me.
If you're using Firebase frameworks and aren't using push notifications there are two solutions 1. just put up with the 'issue' message that gets sent to your whole team every time uploading a binary. The app will still be accepted as a submission as long as you're not actually using notifications you can ignore the warning. or 2. do this: https://stackoverflow.com/a/46802075/7529450 . This will remove the annoying email notification and also get accepted as a submission.
Using Xcode 9 push Notifications was enabled.
I tried disabling/re-enabling Push Notification capabilities. (didn't work)
I tried disabling/re-enabling Automatically manage signing. (didn't work)
Turns out I had to delete and re-add my provisioning profiles. (see here how to do it)
You might have to disable/re-enable Automatically manage signing after wards.
For me the problem was because there were two entitlements files: Entitlements-Debug.plist and Entitlements-Release.plist. And only one of them (Debug) has needed settings in it.
Changing multiple value of Build Settings > Signing > Code Signing Entitlements to a single MyAppName/MyAppName.entitlements and then reenabling Capabilities > Push Notifications switcher did the trick for me.
Hope it helps.
One more option that worked: copy-pasting the source of AppName/Entitlements-Debug.plist into AppName/Entitlements-Release.plist.

Resources