23
votes

When I upload a build to the new Apple owned and iTunes Connect-integrated TestFlight, I see the following log:

WARNING ITMS-90191: "Missing beta entitlement. Your app does not include the beta-reports-active entitlement. If you intend to distribute this build via TestFlight for beta testing, please re-build this app with a newly generated provisioning profile."

When I look at the build on iTunes Connect, I also see the following warning:

To use TestFlight Beta Testing, build X.Y.Z must contain the correct beta entitlement. For more information, see the FAQ.

To use TestFlight Beta Testing, build X.Y.Z must contain the correct beta entitlement. For more information, see the FAQ.

The linked FAQ states:

What should I do if my prerelease build does not contain the correct beta entitlement?

To use the TestFlight app to test your prerelease build, it must be signed with an App Store Distribution Provisioning profile that includes the beta entitlement. New Distribution Provisioning profiles generated in the iOS Developer Center will automatically contain the beta entitlement.

If you have an existing Distribution Provisioning Profile that was generated before the launch of TestFlight Beta Testing, you must regenerate the profile.

The problem is that I am using a newly created App Store Distribution Provisioning Profile. I created it like so:

App Store Distribution Provisioning Profile

When I inspect the source of the downloaded Provisioning Profile, I see:

<key>Entitlements</key>
<dict>
    // ...
    <key>aps-environment</key>
    <string>production</string>
    <key>beta-reports-active</key>
    <true/>
    // ...

So the Provisioning Profile is set for production and does contain the beta-reports-active entitlement.

However, iTunes Connect continues to complain when this build is uploaded to TestFlight.

Any ideas on how to fix this issue? Is this an Apple bug?

rdar://20128048

8

8 Answers

23
votes

First, be sure that you are using an App Store Distribution Provisioning Profile. This is likely a different provisioning profile from the Ad Hoc Distribution Provisioning Profile you were using to sign pre-Apple TestFlight builds.

I continued to hit Error ITMS-90191 after I switched to an App Store Distribution Provisioning Profile. I fixed the issue by additionally adding the beta-reports-active key to my Target's Entitlements.plist file in the Xcode project.

The beta-reports-active key must be included in the Provisioning Profile AND the Target's entitlements.

TargetName.entitlements:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    // ...

    <key>beta-reports-active</key>
    <true/>

    // ...

</dict>
</plist>

After adding the entitlement to my Target, I'm able to successfully upload the build to iTunes Connect TestFlight without the ITMS-90191 warning:

enter image description here

2
votes

Manually editing the plist file didn't do it for me.
Editing an existing profile and generating the file also did NOT work this time.
But, just like for joehl, creating a brand NEW provision profile actually fixed it for me. So, create an all new Provision Profile and and you will be back in business. This looks like a glitch in TestFlight.

2
votes

I was able to fix this by adding this to my xcodebuild script.

xcodebuild ... PROVISIONING_PROFILE=<Provisioning Profile Id>

Looks like setting Code Sign Identities in Build Settings manually could fix this problem too.

2
votes

Using an AppStore provisioning profile solved this for me. I managed to successfully distribute and install on devices. I was using an AdHoc provisioning profile as usual and suddenly I started to get this error. Frustrating stuff indeed.

2
votes

I edited my entitlements.plist with the following command: /usr/libexec/PlistBuddy -c "Add :beta-reports-active bool true" entitlements.plist

1
votes

A simple solution: Delete your previous provisioning profile, and create a new one. solves my problem. :)

1
votes

If you're using Fastlane, make sure you set ad-hoc to false for the sigh step, otherwise it will generate an ad-hoc profile which is not suitable for TestFlight distribution. i.e.:

sigh(
  adhoc: false,
  team_id: "XXXXXXXXX"
)
0
votes

I just successfully submitted a new app version to TestFlight and realized after Apple accepted my submission that I did not have beta-reports-active in my Entitlements.plist.

In my previous version submissions for TestFlight, my submission would have been rejected for the "Missing beta entitlement"

Has anyone else noticed that the beta-reports-active is no longer required for TestFlight?