HCE AID application coupling

Hi,

We have an entitlement for HCE in the European Economic Area (EEA) and registered some AID's to use for the application selection (ISO-7816).

We have an app in development that can emulate a pass. We use an Elatec (Apple compliant) card reader that sends this AID to select the proper application in the phone in HCE, but we cannot select our app to be the (default) application for our AID. We end up having the user to open the app first and either:

  • on app startup have 15 secs of presentmentIntent to present the phone to the reader. And, if not on time, subsequently having to wait for 15 secs cool-down period.
  • Or press a button to start the intent. And if it somehow fails (or timeout) wait 15 secs again for the cool-down.

How can i give the user give a proper experience? I must be misunderstanding something. What are the AIDs used for in iOS, if not to select the proper application to use?
We could of course allow the user to set our app as the default contactless app, but this would be undesirable for the user.

I would expect the functionality in iOS to allow to register an application with our AID. Can this be done?

Are you expecting your app to be launched automatically when near a reader? Then your app will need to become the default payment app.

There is no API to set the default payment app. This can only done by the user through the Settings app.

Once you have successfully built and installed your app, properly configured with the necessary entitlements, the users should be seeing the option to make that app the default app in Settings->General->Contactless & NFC

For this setting option to show up (or for any any of the EEA based features to work)

  • Your app must be correctly configured and built with the correct entitlements and the necessary APIs
  • Your testing device must physically be located in the EEA and is a supported type (iPhone only).
  • The signed-in Apple ID on the device must be registered in an EEA country or region.

You will need to contact the entitlements team and ask for the HCE Default App entitlement.

Keep in mind that this functionality can only be tested within the EEA.

As for the timeout and cooldown periods, these are systemwide limits and cannot be extended. Your UX flow will need to take this into account.

Thank you for your swift answer.

FYI: Our app is for attendance registration, not payment.

I do expect our app to be launched automatically when the phone emulating a card (HCE) has received an AID that is registered to that app. (I need to register it when compiling the app in xcode)

I understand that the choice of the default contactless app is the users. But that directs all nfc transactions to this default app, right? So how can multiple apps (or wallets) for different purposes be installed on a iPhone, and still work together?

If I ask the user to make our app the default one, how can the others still work? It means that doing attendance registration with our app, would make the phone not unusable for other functions, like payments.

Is there a way to coexist?

At this time there isn't a facility to launch specific apps for specific AIDs. It's an all or none situation.

But I am sure the NFC team would love to hear your thoughts in detail about this for a possible future enhancement.

The typical way to make such enhancement requests would be via the Feedback Assistant.

The current iOS implementation of HCE interoperability (EEA only), with regard to ISO 7816-4 protocol communication, presents significant challenges. When using the CardSession functionality to interact with NFC readers, an application can be configured to listen for a SELECT command using an Application Identifier (AID) as specified by ISO 7816-5. However, the SELECT command is not always honored by the system.

Currently, users are required to either switch between default contactless apps to allow the SELECT command to reach the intended application or manually open the app and initiate a presentmentIntent. While the presentmentIntent itself is not a workaround, its use for directing NFC commands in this manner is. This approach prevents the default contactless app from interfering and ensures that the user’s app is selected. However, this is not consistent with the ISO 7816 standard, which specifies that an application must be directly selectable by its AID, if its AID is known. This is a requirement to ensure interoperability across cards and applications The fact that one app (e.g., Apple Wallet) can block or delay another app’s ability to interact with the NFC reader isn't in the spirit of the interoperability clauses of the Digital Markets Act, particularly Article 6.

Additionally, the way iOS attempts to provide 'interoperability' through the presentmentIntent also results in a very poor user experience. The presentmentIntent can only be active for 15 seconds, with a 15-second cool-down period between uses. This severely limits the user's ability to interact with NFC apps and creates an inefficient, frustrating experience. This poor user experience cannot be what Apple intends for its users, as it undermines the seamless, intuitive interaction that Apple typically prioritizes.

Request for Interoperability Improvement:

We request that Apple develop and implement a native iOS feature that acts as a proper "resolver" for NFC-based communication. This resolver should determine and select the correct iOS app based on the ISO 7816 AID and either open the appropriate app or bring it to the front when it receives a relevant command. The resolver should operate independently of any pre-installed apps, such as Apple Wallet, to allow seamless interoperability between multiple NFC-enabled apps.

If more structure is required, may we suggest providing the option for users to select a "default app" for specify use cases as specified by Apple (e.g., payment, employee badge) within the iOS settings. This would allow the selected app to handle NFC requests for those use cases.

The current system, which forces users to rely on methods like presentmentIntent to direct NFC commands and requires apps to block or delay others, is not aligned with ISO 7816 standards and limits interoperability. Additionally, the poor user experience caused by the time constraints and cool-down periods further detracts from the overall effectiveness. By implementing a system-level resolver and giving users the ability to select a default payment app, Apple would facilitate fair access to NFC capabilities for all apps, restore functionality, and ensure compliance with the interoperability principles outlined in the Digital Markets Act (DMA).

HCE AID application coupling
 
 
Q