React Native, ITMS-90078: Missing Push Notification Entitlement

Solution 1:

Add the push notification capability in signing&capability -> capability -> push notification. Make sure to add It to both the release and debug tab.

Solution 2:

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. enter image description here

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:

  1. 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 enter image description here

I just realize that the bundle app didn't include any entitlements

  1. 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}

  2. Back to XCode and go to Window->Organizer. And try Distribute the App again.

  3. And finally the summary for all entitlements that I need is included. enter image description here

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