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

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.

Related

React Native, ITMS-90078: Missing Push Notification Entitlement

I have got this mail each time I publish my app to app store:
Dear Developer,
We identified one or more issues with a recent delivery for your app,
"{appName}" {version} ({build}). Your delivery was successful, but you
may wish to correct the following issues in your next delivery:
ITMS-90078: 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 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 upload a new binary to App
Store Connect.
Best regards,
The App Store Team
Add the push notification capability in signing&capability -> capability -> push notification. Make sure to add It to both the release and debug tab.
For people that still have this issue or maybe another issue that happens with entitlements like com.apple.developer.associated-domain or com.apple.developer.applesignin I have a few tricks for this.
And I've already did some suggestions around the forum that I search about it like re-create the provisioning profile, keychain, certificates, etc and re-enable capability in XCode, automatic signing and manual signing provisioning profile in XCode even I did upgrade my XCode to 13 and my macOS but the issue still happens.
After I archived my code, I get this summary before I upload it to AppStore.
Actually I have another entitlements like aps-environment, com.apple.developer.applesignin and com.apple.developer.associated-domain. But the summary didn't include those entitlements.
Push Notif, Sign in with Apple and Universal Links work like charm in development mode, but when the I install from TestFlight those feature didn't work anymore. And I didn't get any error messages while archiving until finish upload it to AppStore just email warning about missing push notifications entitlements.
So, here's what I do:
Check the codesign of archive build for the app via terminal. codesign -d --entitlements :- ${path_to_your_bundle_app}. For me, the bundle app is in /Users/${user}/Library/Developer/Xcode/Archives/${date}/${app_name}/Products/Application/${app_name}.app/${app_name}.app.
And what I got is
I just realize that the bundle app didn't include any entitlements
And then I signing it manually from my entitlements file to the bundle app. codesign --sign - --entitlements ${path_entitlements_file}/${filename}.entitlements --timestamp=none ${path_to_your_bundle_app}
Back to XCode and go to Window->Organizer. And try Distribute the App again.
And finally the summary for all entitlements that I need is included.
I don't know why this happen to me. Maybe there are something wrong in my config in XCode or my project code. However, now it's work in TestFlight even though I should still signing it manually after I archived my app.
Maybe anyone can help me about this. My stack is
React Native 0.63.3
XCode 12.5 and I update to XCode 13
MacOS 11.6

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!

Error in Xcode 12.2: Provisioning profile doesn't include the push notifications entitlement

I am new to Xcode and I'm trying to build an archive to upload to the App Store Connect, but I am getting the following error:
Provisioning profile <my_profile_name> doesn't include the Push Notifications entitlement.
My app has the push notification feature and I'm using Firebase Cloud Messaging to deliver those notifications.
What I have tried so far:
Check the "Automatically manage signing", but Xcode fails to
provision the target.
Delete the provisioning profiles in ~/Library/MobileDevice/Provisioning\ Profiles and let Xcode regenerate them, but the error persists.
Create my own Provisioning Profile on
https://developer.apple.com/. It has the push Notifications enabled
capability, but the downloaded version of it doesn't have the
entitlement.
Add, delete and add again the push notifications
capability in the "Signing and Capabilities" tab on XCode.
Edit the entitlements file, and have created new Provisioning Profiles without any success.
Finnally, I have solved this error!
The problem was in the entitlements files on my project: they were generated with two entries:
Push Notifications with the boolean value 1;
aps-environment with the string value 'production'.
The right entry for the Apple Push Notifications service is only the aps-environment, so I just deleted the Push Notifications entry and now I am able to build the archive!
Thank you all for helping me!
Try doing the following:
Select your app target in project targets.
Click on the signing & Capabilities tab.
Click + Capability and add the push notifications capability.
I'm having a similar problem as well. Spoke with someone at apple and they said a few other people had complained as well.
If I validate the app, it fails Mac App Store validation, saying application- name entitlement error. If I validate for external distribution and notarization, it works fine.
In the same week I've updated 3 other mac app store apps with all the same signing certificates, and everything works.
The app I'm having a persistant problem with was open when I upgraded to 12.1.lastX, and then to 12.2. My bad... that was where things got mucked up.
I've tried every suggestion I can find, to no avail. Will probably rebuild from the ground up, or just wait for an update to Xcode.
It's Apple that created the problem, not me. Sometimes they ruin things.

ITMS-90078: Missing Push Notification Entitlement

I created and submitted my iOS app to App Store Connect. But after submitting the build I got this email
We identified one or more issues with a recent delivery for your app, "HIITimer Interval Workout" 1.0.1 (1). Your delivery was successful, but you may wish to correct the following issues in your next delivery:
ITMS-90078: 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 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/con ... 94-CH6-SW1.
After you’ve corrected the issues, you can upload a new binary to App Store Connect.
When I tried to research this problem on forums etc. I see some people have said it's just a warning that can be ignored but on the App Store Connect website it says "Invalid Binary" in red. I tried to click "Submit for Review" again but I got the same email. Is there any chance it's going to get sent through if I don't do anything?
On the developer.apple.com end in the Identifier for my app's Capabilities I unticked Push notifications and created a new distribution provisioning profile and resubmitted but this did not fix it.
In the Standalone App Settings for LC, I do not see any options for Push Notifications. And I don't think I've created any in my app.
Mac Catalina Version 10.15.3.
iPhone X IOS 13.3.1
LiveCode 9.6.0 (dp3)
Xcode 10.1 & 11.3 placed in the iOS SDKs
We just released a version that contains the fix. Please upgrade and re-link the RN sdk
react-native unlink react-native-flurry-sdk && react-native link react-native-flurry-sdk
and type n while being asked if you need to integrate Flurry Push. This will guarantee that push related code won't be linked to your project. Please let me know if the problem still occurs. Thank you very much for your feedback!

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