499

When I added my latest build for internal testing with TestFlight, I saw that it had a "Missing Compliance" status.

Is this a major problem? Why does this appear? How can I resolve this issue?

Test flight status Missing Compliance

mokagio
  • 16,391
  • 3
  • 51
  • 58
Chandan Jee
  • 5,440
  • 4
  • 16
  • 24

11 Answers11

893

Unless your app is using some special encryption you can simply add Boolean a key to your Info.plist with name ITSAppUsesNonExemptEncryption and value false.

In code:

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

If you want to use the Xcode UI instead, head over to the Project > Target > Info panel, add a new "App Uses Non-Exempt Encryption" Boolean key with value NO:

Screenshot of the Xcode view where to add the value.

If your app is using custom encryption then you will need to provide extra legal documents and go through a review of your encryption before being able to select builds.

If you continue with selecting that version for testing, it will ask for the compliance information manually. Choosing "No" presents you with the plist recommendation above.

iTunes Connect encryption export compliance alert for testing

This is change has been announced in the 2015 WWDC, but I guess it has been enforced only very recently. See this and this for a transcript of the WWDC session related to the export compliance, just to a text search for "export".

There are other similar questions on SO, see:

mokagio
  • 16,391
  • 3
  • 51
  • 58
  • 7
    What is special encryption meant to be? Does using iOS keychain to store user's info count? – bluenowhere May 09 '16 at 10:27
  • 1
    Under new iTunesConnect: Top menu > Features > Encryption – bauerMusic May 10 '17 at 09:08
  • 11
    @mokagio I am using Https connection to consume data for the Application so Do I have to choose yes and submit any documents? – vignesh kumar Mar 12 '18 at 14:04
  • I use https fetch query to my api, should I answer yes or no? This sounds like a form for prism compliance. – Dimitri Kopriwa Aug 26 '20 at 17:12
  • 2
    I have this warning on my macOS app, even though I have the ITSAppUsesNonExemptEncryption set to NO in my plist file. – Bram Nov 12 '20 at 23:41
  • @vigneshkumar, according to Apple's docs, these appear to be exempt: "Typically, the use of encryption that’s built into the operating system—for example, when your app makes HTTPS connections using URLSession—is exempt from export documentation upload requirements, whereas the use of proprietary encryption is not" (https://developer.apple.com/documentation/security/complying_with_encryption_export_regulations) – James Dec 03 '20 at 16:44
175

There's no longer any need to submit a new build or modify Info.plist; instead, follow these steps:

  1. Make sure you are an Admin or App Manager role in App Store Connect.

  2. Go to the iOS tab at the top left of TestFlight and click the yellow triangle next to the warning to provide this information within iTunes Connect:

enter image description here

  1. Click the "Provide Export Compliance Information" link in the popup:

Export Compliance Information

Though, if you do choose to modify Info.plist, you'll never need to deal with this popup again.

pkamb
  • 33,281
  • 23
  • 160
  • 191
Kevin Cooper
  • 5,018
  • 4
  • 37
  • 51
  • 5
    @am_ I just tried it and it still works. You just need to click the "Provide Export Compliance Information" link in the popup. Post has been edited with the new screenshot. – Kevin Cooper Jun 10 '17 at 20:17
  • 3
    There is no "Provide Export Compliance Information" link when I click triangle, I just get the informational text. – SafeFastExpressive Jun 26 '17 at 22:39
  • @RandyHill hmm, I still see the option with my app. It must depend on some other factors as well. Did modifying `Info.plist` work for you? – Kevin Cooper Jun 26 '17 at 23:46
  • 14
    Turned out to be an access issue. I'm not an Admin (Developer+some other), and our Admin was who submitted the app. I had our Admin look at it in his account, and he was able to see/click the "Provide Export Compliance Information" link to resolve the problem. – SafeFastExpressive Jun 27 '17 at 00:49
  • 4
    @RandyHill thanks for the info -- I've updated my answer to explain that you need to be an Admin. – Kevin Cooper Jun 27 '17 at 17:30
  • 3
    @am_ only users with admin roles can see the link – Alexis.J Aug 18 '17 at 16:39
  • 1
    @Alexis.J - thanks for headsup! works as described when you are logged in as a user with admin rights. – am_ Aug 25 '17 at 17:42
  • Please edit that option can be seen only by the admins, I wasted 30 mins searching that option. – Reyansh Mishra Jan 24 '18 at 14:18
  • Hi @ReyanshMishra, sorry to hear that! The answer already does specify that you need to be an admin to do this. – Kevin Cooper Jan 24 '18 at 23:15
  • "this is only available to admin accounts" - Incorrect. An App Manager can do it as well. – Dror Bar Mar 10 '20 at 12:37
  • Thanks @DrorBar, I've updated the answer to specify this. – Kevin Cooper Mar 10 '20 at 22:14
82

Add following at the bottom of your Info.plist

<key>ITSAppUsesNonExemptEncryption</key>
<false/>
atulmy
  • 1,364
  • 15
  • 23
81

In your Info.plist, Right click in the properties table, click Add Row, add key name App Uses Non-Exempt Encryption with Type Boolean and set value NO.

enter image description here

Another approach to handle this

Righ Click on info.plist and select open as and then click on Source Code Add this line in last of file before </dict> tag

<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Himanshu padia
  • 7,428
  • 1
  • 47
  • 45
17

If your info.plist is shown as a property list (and not xml), the text you need to enter for the key is:
App Uses Non-Exempt Encryption

Shaked Sayag
  • 5,712
  • 2
  • 31
  • 38
11

Righ Click on info.plist and select open as and then click on Source Code Add this line in last of file before </dict> tag

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

and save file.

pkamb
  • 33,281
  • 23
  • 160
  • 191
Muhammad
  • 137
  • 1
  • 6
9

If you are not using https in api calls, Please add this key "App Uses Non-Exempt Encryption" in your info.plist and set it to "NO"

  • 3
    HTTPS connections using URLSession—is exempt from export documentation upload requirements. – Parag Bafna Dec 11 '19 at 09:50
  • 1
    What is a URLSession? how do I know if I use it? I'm using React Native app with Fetch request and I have no idea - tried searching for it. – Dror Bar Mar 10 '20 at 12:55
  • @DrorBar What did you end up doing here? I'm also using React Native (with Expo) and I'm not sure what I should be doing here. I'm making calls to my back-end over HTTPS. – Darryl Young May 26 '20 at 16:01
  • 2
    @DarrylYoung I haven't found a specific answer but I'm pretty sure these kind of HTTPS calls are exempt from encryption requirements. You should be good adding the key. – Dror Bar May 26 '20 at 16:38
8

For SwiftUI

Normally there is no info.plist file. So use this way to add Non-exempt encryption key and value. Click on the + button as follows and type ITSAppUsesNonExemptEncryption as the key and NO as the value

enter image description here

Pramodya Abeysinghe
  • 1,098
  • 17
  • 13
7

Additionally, if you can't see the "Provide Export Compliance Information" button make sure you have the right role in your App Store Connect or talk to the right person (Account Holder, Admin, or App Manager).

Maciek Czarnik
  • 5,950
  • 2
  • 37
  • 50
3

I just fund another way to do the same workaround. Because of I hadn' t the possibility to click on the yellow triangle (even if I have admin role), when you go inside testflight, then iOS (under "Build") instead of yellow triangle click the version number, another page will open and you will find on top right something like add compliance information (sorry if I am not totally accurate but I have the italian version but it would be really easy to find). Then you can do the same even if you, like me, are not able to click on yellow triangle.

Dharman
  • 30,962
  • 25
  • 85
  • 135
MrHim
  • 401
  • 4
  • 16
0

it simply indicates that you do not use encryption, it can be intimidating when you are a newbie but it is not a problem if you are sure that you do not use encryption

Salvador
  • 61
  • 1
  • 8