Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode Testflight Validate ERROR ITMS-90778 NDEF is disallowed

I am trying to upload my app to TestFlight, which using CoreNFC (NDEF).

Unfortunately, I got the error message on Testflight Validate part in (SDK version 13 and 13.1).

I already tried this: Xcode 11 beta can't upload app to TestFlight

but it will Lose NDEF function this: https://stackoverflow.com/a/58128365/5588637

Error messages: Invalid entitlement for core nfc framework The sdk version 13.0 and min OS version 13.0 are not compatible for the entitlement 'com. Apple developer nfc. Readersession formats because NDEF is disallowed
enter image description here

like image 976
CH Wing Avatar asked Sep 27 '19 09:09

CH Wing


4 Answers

The following worked for me.

  1. Go to your application entitlement file (Which will be mostly .entitlement if you don´t have any environmental setup or changes done to entitlement file name)
  2. Remove all entitlement for NFC other than "NFC tag-specific data protocol" enter image description here

  3. Finally your entitlement file should have something like this

	<key>com.apple.developer.nfc.readersession.formats</key>
	<array>
		<string>TAG</string>
	</array>
enter image description here
  1. Clean your project and then try uploading to app store again.

Hope it helps :)

like image 63
sourav Avatar answered Nov 11 '22 20:11

sourav


Ok after lots of fooling around, this worked for me (my use case is that i'm scanning NDEF tags):

And yes this is counterintuitive, but the sad fact is: If you want to scan NDEF tags, you MUST remove the 'NDEF' from the entitlements (this may be an apple bug that is resolved later, this is accurate as of Xcode 12.5)

  • Remove NDEF from the .entitlements file, so it only contains the following:

      <?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>com.apple.developer.nfc.readersession.formats</key>
          <array>
              <string>TAG</string>
          </array>
      </dict>
      </plist>
    
  • Add the following to the info.plist:

      <key>NFCReaderUsageDescription</key>
      <string>This app would like to use NFC for some reason.</string>
    
  • No need to add "ISO7816 application identifiers for NFC Tag Reader Session" to the info.plist

  • Read the NDEF tag using code like this:

      session = NFCNDEFReaderSession(delegate: self, queue: .main, invalidateAfterFirstRead: true)
      session?.alertMessage = "Please hold your tag up against the the rear side of your iPhone, next to the camera."
      session?.begin()
    
like image 44
Chris Avatar answered Nov 11 '22 20:11

Chris


I have solved the for iOS 13 TAG entitlment and NDEF is disallowed by:

  1. Remove remove "NFC Data Exchange Format" row from the Entitlement. Entitles
  2. Add to the info.plist "ISO7816 application identifiers for NFC Tag Reader Session" and the value for item 0 is should be "com.apple.developer.nfc.readersession.iso7816.select-identifiers"

Attached are a few pictures.

info.plist

like image 13
Josean Maya Avatar answered Nov 11 '22 19:11

Josean Maya


my two cents about.

1) workaround of Josean works

2) my app fails the first time, I can confirm this weird behaviour as CH Wing wrote

3) some hints in "https://forums.developer.apple.com/thread/117329"

4) I added these keys to plist and seems working, not to entitlements. (but at apple dev forum seems it's the way... in PLIST..)

like image 1
ingconti Avatar answered Nov 11 '22 19:11

ingconti