Hello everyone
I need to present a password to a ST25DV ISO15693 device. From the ST microelectronics datasheet I use the command 0xB3 With customcommandwithrequestflag method with the FLAGs High data rate and Address mode. I have trouble to get it working I receive error code 2 each time I sent the password. The password is composed with int8 area passwor + 8 int8 password. I'd like to know how the customcommand 0xB3 works.
Core NFC
RSS for tagDetect NFC tags, read messages that contain NDEF data, and save data to writable tags using Core NFC.
Posts under Core NFC tag
80 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello,
I have developed an iOS application called DinecTag (be.dinec.DinecTag) with a developer account named Dinec International which is registered in Belgium, I received the NFC entitlement valid for Europe and my App is on the App store since some months (the App is used to open doors by presenting the iPhone in front of a special reader) The App is published only on countries inside Europe (it don’t work outside anyway)
I would like my App can be used outside Europe, so I need another entitlement called NFC & SE Platform entitlementn to ask for that, I need an account registered in a country covered by that entitlement
Dinec is a company that is member of the Lisam group
Lisam has an apple developer account registered to USA, called Lisam Systems
So I have asked to the owner of that account to add me as a developer in the USA team
So when I connect to my developer account, I can switch between Dinec International SA and Lisam Systems on top right of the screen, I am member of the two teams.
I would like to avoid if possible to create a second application, can you confirm it is possible in my case ?
What are the next steps ?
Best regards
Jean-Paul Deryck
Hi everyone — I’m developing an iOS passkey/password manager where the private key material must be stored on a physical device (NFC card / USB token). I’m hitting a hard limitation: CoreNFC is not available for use from app extensions, which prevents an appex (e.g. password/credential provider or other extension) from talking directly to an NFC card during an authentication flow. 
My questions:
1. Is there any plan to make CoreNFC (or some limited NFC-API) available to app extensions in a future iOS version? If not, could Apple clarify why (security/entitlements/architecture reasons)?
2. Are there any recommended/approved workarounds for a passkey manager extension that needs to access a physical NFC token during authentication? (For example: background tag reading that launches the containing app, or some entitlement for secure NFC card sessions.) I’ve read about background tag reading, but that seems to be about system/OS handling of tags rather than giving extensions direct NFC access. 
3. Is the only supported pattern for my use case to have the containing app perform NFC operations and then share secrets with the extension via App Groups / Keychain Sharing / custom URL flow? (I’m already evaluating App Groups / Keychain access groups for secure sharing, but I’d like official guidance.) 
Implementation details that may help responders:
• Target: iOS (latest SDK), building a Credential Provider / password manager extension (appex).
• Intended physical token: NFC smartcard / ISO7816 contactless (so CoreNFC APIs like NFCISO7816Tag would be ideal).
• Security goals: private key never leaves the physical token; extension should be able to trigger/sign during a browser/app AutoFill flow.
Possible alternatives I’m considering (open to feedback): designing the UX so that the extension opens the main app (only possible for Today widget in a supported way) which runs the NFC flow and stores/returns a short-lived assertion to the extension. Are any of these patterns sanctioned / recommended by Apple for credential providers? 
Thanks — any pointers to docs, entitlement names, or example apps/samples would be extremely helpful.
Hi, I just having an issue with ePassport NFC. When development all requirement setup already included. After build success when trying to scan the passport, it froze there. Nothing happen , look like it not detecting the passport. I check my device and passport no issue. So can help me since its urgent part of the development. It has been blocker since day 1 of the development
Hello I am developing an iOS app and would like to read an EMV card that is issued by me and want my customers to tap to activate simply to validate the possession of the card at the time of activation.
Any suggestions welcome on how can i achieve this using either NFC Framework or secure elements
Foreword: I filed a feedback a week ago and so far no one replied or at least acknowledged my feedback. That's why I'm writing here now to get some more attention (hopefully, thanks).
I recorded a video to show you what exactly is happening. I am not sure where the issue belongs to exactly but it is related to associated domains, the camera (QR codes), the NFC module, App Intents and Control Center controls.
https://youtu.be/sT2bZLs_6rA
FB20418059
(I added some tags that are somehow related to the associated domain issue)
I’m developing an iOS application using CoreNFC and working with ISO7816 tags. My use case involves exchanging APDU commands with a hardware device, but some operations can take more than 20 seconds.
From my testing, I see that:
The NFC reader session itself lasts about 60 seconds.
But once a tag is connected, the connection seems to drop after ~20 seconds, and I receive a “connection lost” / session invalidated error.
My questions are:
Is this ~20-second connection window a hard limit enforced by iOS?
Is there any way to extend this timeout for long-running APDU operations?
If not, what’s the recommended design pattern for handling these scenarios? For example, should I split the process into smaller APDU commands and prompt the user to re-tap when the session times out?
Any guidance or best practices for handling long NFC exchanges on iOS would be greatly appreciated.
Hello,
I have an app that emulates an NFC card using NFC HCE.
Since yesterday I saw an increasing number of crashes on iOS 26 only, which wasn't there before.
From what I can see, it seems the app crashes when the NFC presentment intent is shown and 60 seconds passed and user does nothing. The app just crashes after 60 seconds.
On previous iOS versions, I know that CardSession.Error.maxSessionDurationReached was thrown after 60 seconds.
Is something changed in iOS 26?
I developed an app that uses the Core NFC framework to read tags. The feature works correctly on iOS 18 and earlier versions, but after upgrading to iOS 26, it stopped working.
Details:
Entitlement
Near Field Communication Tag Reader Session Formats
D2760000850101
D2760000850101
Info.Plist
com.apple.developer.nfc.readersession.iso7816.select-identifiers
D2760000850101
com.apple.developer.nfc.readersession.felica.systemcodes
12FC
Privacy - NFC Scan Usage Description
Signing and Capabilities:
Near Field Communicating Tag Reading [Eanbled]
My Sample Code Is:
class NFCManager: NSObject, NFCTagReaderSessionDelegate
{
private var nfcSession: NFCTagReaderSession?
let isConnectionNeeded = false
func startNFCSession() {
guard NFCTagReaderSession.readingAvailable else {
// NFC is not available on this device.
return
}
nfcSession = NFCTagReaderSession(pollingOption: [.iso14443, .iso15693, .iso18092], delegate: self)
nfcSession?.begin()
}
func stopNFCSession() {
nfcSession?.invalidate()
}
// MARK: - NFCTagReaderSessionDelegate Methods
func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
print("tagReaderSessionDidBecomeActive")
}
func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) {
print("didInvalidateWithError --\(error)")
}
func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
print("didDetect: Tag Detected --\(tags)")
}
}
The above code works fine on iOS 18 and earlier versions for detecting tags. Please let me know if I’m missing anything.
Please help me to resolve the issue in iOS 26
I have some logic which requires NFC support on the device. This is what I'm using to make sure that it's available:
isNFCMissing = !NFCNDEFReaderSession.readingAvailable && !NFCTagReaderSession.readingAvailable && !NFCVASReaderSession.readingAvailable
Is it possible for isNFCMissing to be true even if the device has an NFC chip.
The minimum iOS version for the application is 16 which is only supported on devices with an NFC chip to begin with.
I sent this feedback some time ago and still haven't received an answer. Can someone poke someone internally please?
Thank you!
FB18815675
I have no idea what exactly is going on but after 5 days I found the culprit and I have a reproducible sample project. In the project is a package that does some basic NFC NDEF encoding. I put a commented out method in there and when you comment that in then the app starts crashing at runtime when scanning an NFC tag. Please check out the project and see yourself. Thanks
https://github.com/NickAtGit/iOS26-CoreNFC-Crash
Hello,
I’m a developer at an IT service provider in the banking sector. In the context of an HCE-based payment solution on iOS, we use the Apple Card Session API to receive and process APDU commands.
We are currently facing an issue with a specific payment terminal model (CCV):
When using this terminal, the Apple Card Session correctly triggers the readerDetected and readerDeselected events, but does not fire the expected received event, even though APDU commands are clearly being sent at the protocol level.
This behavior only occurs with this particular CCV terminal in our implementation – with other terminals and on Android devices, the received event is triggered reliably. The same CCV terminal also works without issues when using Apple Pay or PayPal (which also uses HCE → Card Session), and APDU data is transmitted as expected in those cases.
Interestingly, in our implementation, roughly every 10th to 20th transaction with this CCV terminal does trigger the received event and APDU commands are delivered — in those rare cases, the payment proceeds successfully.
In the system logs, we sometimes see APDU commands marked as invalid, but this also happens in cases where communication works fine, so we’re not sure whether this is actually related to the missing events.
Our questions:
Has anyone encountered this behavior before – specifically missing received events despite active communication from the terminal?
Are there known limitations or specific requirements for payment terminals so that APDU commands are passed through to the Apple Card Session?
Are there any diagnostic tools or logs we could use to better narrow down the root cause?
At this point, we are unsure whether the issue lies in terminal compatibility, the Apple Card Session itself, or our implementation. Any insights, experiences, or technical hints would be greatly appreciated.
Thanks in advance for your help!
Hi,
I have created an application for NFC tag scanning and read the tag data. For that,
i enabled the capability: NearField Communication Tag reading.
Then I added 2 tag formats in the entitlement
then i added info.plist:
NFCReaderUsageDescription
We need to use NFC
com.apple.developer.nfc.readersession.felica.systemcodes
8005
8008
0003
fe00
90b7
927a
12FC
86a7
com.apple.developer.nfc.readersession.iso7816.select-identifiers
D2760000850100
D2760000850101
but even though when i run the app and tap the nfc card im getting some error:
NFCTag didBecomeActive
2025-08-29 19:08:12.272278+0530 SAFRAN_NFC[894:113090] NFCTag didDetectTags
2025-08-29 19:08:12.282869+0530 SAFRAN_NFC[894:113520] [CoreNFC] -[NFCTagReaderSession _connectTag:error:]:730 Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}
2025-08-29 19:08:12.284044+0530 SAFRAN_NFC[894:113090] NFCTag restarting polling
2025-08-29 19:08:12.372116+0530 SAFRAN_NFC[894:113090] NFCTag didDetectTags
2025-08-29 19:08:12.381535+0530 SAFRAN_NFC[894:113378] [CoreNFC] -[NFCTagReaderSession _connectTag:error:]:730 Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}
2025-08-29 19:08:12.382246+0530 SAFRAN_NFC[894:113090] NFCTag restarting polling
2025-08-29 19:08:12.470667+0530 SAFRAN_NFC[894:113090] NFCTag didDetectTags
2025-08-29 19:08:12.479336+0530 SAFRAN_NFC[894:113378] [CoreNFC] -[NFCTagReaderSession _connectTag:error:]:730 Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}
2025-08-29 19:08:12.480101+0530 SAFRAN_NFC[894:113090] NFCTag restarting polling
Could you please help me wha tis the issue and give solution for that?
Description:
While testing Core NFC functionality on iOS 26 beta, when the NFC switch is turned off, the system automatically displays an alert. The alert contains two buttons: “Cancel” and “Settings”.
Expected Behavior:
When the user taps the “Settings” button, the system should navigate to the system settings page where the NFC switch can be turned on.
Actual Behavior:
The alert appears as expected
Tapping the “Settings” button does not navigate to the system settings page
No callback is triggered in the app’s NFC session
Steps to Reproduce:
Turn off the NFC switch on an iOS 26 beta device
Trigger Core NFC functionality (e.g., NFCNDEFReaderSession or NFCTagReaderSession)
The system alert appears indicating NFC is turned off
Tap the “Settings” button
Impact:
Users cannot directly navigate to enable NFC from the system alert, making NFC features in the app unusable and negatively affecting user experience.
Device Information:
iOS Version: iOS 26 beta
Device Model: iPhone 14pro
App uses Core NFC APIs to trigger NFC sessions
I notice that there are two types of nfc session:
"NFCTagReaderSession" this session in order to get tag's basic info like uid/type which call back function is
tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag])
"NFCNDEFReaderSession" this session in order to get ndef message in tag which call back function is
readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage])
My problem:
How can i get tag's basic info and tag's ndef message(if it exists) simultaneously in one session or in one callback function.
Hi - from the NFCPaymentTagReaderSession documentation on https://developer.apple.com/documentation/corenfc/nfcpaymenttagreadersession , it's not clear how it should be used to communicate with a payment tag, since the initial SELECT command is handled by NFCPaymentTagReaderSession automatically.
Generally in a payment context, the SELECT response from the payment tag would contain necessary data for subsequent exchanges. Could you please help me understand how to receive the SELECT response from NFCPaymentTagReaderSession?
Thank you for your help.
Hello,
I would like to discuss the behavior of the expiration of NFCPresentmentIntentAssertion (test in iOS 18.5).
In the documentation we have :
The intent assertion expires if any of the following occur:
The intent assertion object deinitializes
Your app goes into the background
15 seconds elapse
BUT; in fact ; only the 1st rule is applied.
The expiration seems to be random after the usage of CardSession and that's difficult to give to the user a good experience.
Has someone faced the same kind of issue; or can give an explanation?
Regards,
François
My iOS application has both the “Default Host Card Emulation (HCE) App” and “Host Card Emulation (HCE)” entitlements. I was previously able to choose my app as the default contactless app in Settings, but after upgrading to iOS 18.6, my app no longer appears - Apple Wallet is now the only option.
I’m located in the European Economic Area, and both my Apple ID and developer team are registered in the EU.
Here is my entitlements file:
<?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.hce</key>
<true/>
<key>com.apple.developer.nfc.hce.default-contactless-app</key>
<true/>
<key>com.apple.developer.nfc.hce.iso7816.select-identifier-prefixes</key>
<array>
<string>A000000004</string>
<string>325041592E5359532E4444463031</string>
<string>A000000003</string>
</array>
</dict>
</plist>
Background:
We are developing a cross-platform mobile application that communicates with a custom NFC-enabled hardware device. The hardware expects ISO7816-style APDU commands for data exchange and functions correctly with Android using the IsoDep protocol.
Observed Issue on iOS:
On iOS, the tag is only detectable via NFCNdefReaderSession, which provides access to INFCNdefTag.
Attempting to use NFCTagReaderSession with NFCPollingOption.Iso14443 (which is required for APDU communication) results in no tag detection.
As a result, the tag is inaccessible for APDU-based communication on iOS.
Since NFCNdefReaderSession does not support APDU, we are unable to establish the required command channel.
Constraints:
The hardware firmware cannot be changed to support NDEF-based command interpretation.
The device expects raw ISO-DEP APDU commands (i.e., Class-Instruction-Param1-Param2-Data-Le).
Impact:
The lack of ISO7816 tag detection on iOS prevents the app from sending APDU commands, resulting in a platform-specific feature limitation.
Functionality that relies on secure, structured APDU communication is unavailable to iOS users, even though it works seamlessly on Android.
Tap to Pay capabilities are enable and I can use in development profile but I cannot make build that I can upload on TestFlight using the distribution profile because during create build I am getting "Provisioning profile doesn't support the Tap to Pay on iPhone capability." this should be working because I checked twice that distribution profile and certificate have this capability and added in Xcode. how can I resolve this mismatched profile issue I am using Xcode - 15.0.1
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
Tags:
Entitlements
Xcode
Apple Pay
Core NFC