iOS deploy Error: ITMS-90788 Invalid Entitlement for core nfc framework, the SDK version 14.1 and min os Version 11.0 are not compatible for the entitlement

Hey all,
I’m trying to deploy an app that uses NFC capabilities using cordova plugin NFC. Volt.build is building the .zip correctly and is giving me the .ipa, which is later declined by Transporter because of this error:

Error: ITMS-90788 Invalid Entitlement for core nfc framework, the SDK version 14.1 and min os Version 11.0 are not compatible for the entitlement ‘com.apple.developer.nfc.readerSession.formats’ because ‘TAG is missing in the entitlement’.

This is my config.xml for the entitlements part:

  <plugin name="phonegap-nfc" source="npm" spec="1.2.0" />
    <preference name="ios-package" value="nfcplugin" />
       <edit-config target="com.apple.developer.nfc.readersession.formats" platform="ios" file="*-Debug.plist" mode="overwrite">
      <array>
	  <string>TAG</string>
      </array>
    </edit-config>
    <edit-config target="com.apple.developer.nfc.readersession.formats" platform="ios" file="*-Release.plist" mode="overwrite">
      <array>
	  <string>TAG</string>
      </array>
    </edit-config>
    <edit-config target="com.apple.developer.nfc.readersession.formats" platform="ios" file="*-Info.plist" mode="overwrite">
      <array>
	    <string>TAG</string>
      </array>
    </edit-config>
    <edit-config target="NFCReaderUsageDescription" platform="ios" file="*-Info.plist" mode="overwrite">
      <string>Necesita acceder al lector NFC para poder escanear la tarjeta.</string>
    </edit-config>
    <framework src="CoreNFC.framework" />

And this is what I see in volt.build log file:

Entitlements:

{
    "application-identifier" = "FWAVD83.XXXXX.XXXXXXX";
    "beta-reports-active" = 1;
    "com.apple.developer.nfc.readersession.formats" =     (
    );
    "com.apple.developer.team-identifier" = FWAVD83;
    "get-task-allow" = 0;
}


/platforms/ios/VTPortal/Plugins/phonegap-nfc/NfcPlugin.m:155:26: warning: 'NFCNDEFStatusNotSupported' is only available on iOS 13.0 or newer [-Wunguarded-availability-new]
    connectedTagStatus = NFCNDEFStatusNotSupported;
                         ^~~~~~~~~~~~~~~~~~~~~~~~~
In module 'CoreNFC' imported from /platforms/ios/VTPortal/Plugins/phonegap-nfc/NfcPlugin.h:11:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.1.sdk/System/Library/Frameworks/CoreNFC.framework/Headers/NFCNDEFTag.h:26:5: note: 'NFCNDEFStatusNotSupported' has been marked as being introduced in iOS 13.0 here, but the deployment target is iOS 11.0.0

Can anyone help me solving this problem?

Thanks in advance!

I assume you’re targeting iOS13 or newer, so the warning in the log file probably doesn’t matter.

We’re working on a problem with <edit-config and plists. There is a chance this is related to that issue.

1 Like

Good to hear! Yeah, it seems that <edit-config lines are not adding the related entitlements on the plists files.

Please let us know when there is an update for this issue, we are waiting to deploy our application.

Thanks!

Maybe this helps you:

I managed to workaround this problem by removing all the edit-config from the config.xml and just leaving the entries from the cordova-plugin-nfc xml (which is already adding the TAG/NDEF formats in <config-file format phonegap-nfc/plugin.xml at master · chariotsolutions/phonegap-nfc · GitHub).

After doing that, Transporter accepted the ipa and everything seems to be working just fine.

That looks like a good solution. Thank you for posting it!