Skip to content

CoreNFC MacCatalyst xcode26.4 b2

Rolf Bjarne Kvinge edited this page Feb 27, 2026 · 1 revision

#CoreNFC.framework

diff -ruN /Applications/Xcode_26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCISO7816Tag.h /Applications/Xcode_26.4.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCISO7816Tag.h
--- /Applications/Xcode_26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCISO7816Tag.h	2025-11-09 04:11:06
+++ /Applications/Xcode_26.4.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCISO7816Tag.h	2026-02-16 06:04:24
@@ -137,6 +137,7 @@
  */
 @property (nonatomic, readonly) BOOL proprietaryApplicationDataCoding API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos);
 
+@property (nonatomic, readonly) BOOL supportsPACE API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(watchos, macos, tvos, visionos);
 /*!
  * @method sendCommandAPDU:completionHandler:
  *
diff -ruN /Applications/Xcode_26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCTagReaderSession.h /Applications/Xcode_26.4.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCTagReaderSession.h
--- /Applications/Xcode_26.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCTagReaderSession.h	2025-11-09 04:11:06
+++ /Applications/Xcode_26.4.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework/Headers/NFCTagReaderSession.h	2026-02-16 07:42:13
@@ -60,7 +60,52 @@
 
 @end
 
+/*!
+ * @enum NFCPollingOption
+ *
+ * @constant NFCPollingISO14443     Support both Type A & B modulation.  NFCTagTypeISO7816Compatible and NFCTagTypeMiFare tags will be discovered.
+ * @constant NFCPollingISO15693     NFCTagTypeISO15693 tag will be discovered.
+ * @constant NFCPollingISO18092     NFCTagTypeFeliCa tag will be discovered.
+ * @constant NFCPollingPACE         NFCTagTypeISO7816Compatible with Password Authenticated Connection Establishment (PACE) supported will be discovered.
+  *                                  It will also detects applications listed in "com.apple.developer.nfc.readersession.iso7816.select-identifiers" if PACE detection fails.
+  *                                  Tag's PACE support is indicated by the NFCISO7816Tag.paceSupport property.
+  *                                  Prior to iOS 26.4 this is an exclusive value that cannot be combine with NFCPollingISO14443; it supersedes NFCPollingISO14443 and only returns PACE compatible tag.
+  *                                  From iOS 26.4 this can be combine with all polling options; NFCISO7816Tag.paceSupport identifies PACE conformance of a detected ISO7816 compatible tag. */
+typedef NS_OPTIONS(NSInteger, NFCPollingOption) {
+    NFCPollingISO14443 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)     = 0x1,
+    NFCPollingISO15693 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)     = 0x2,
+    NFCPollingISO18092 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)     = 0x4,
+    NFCPollingPACE API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)         = 0x8,
+};
 
+API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(watchos, macos, tvos, visionos) NS_SWIFT_UNAVAILABLE("Use NFCTagReaderSession.Configuration")
+@interface NFCTagReaderSessionConfiguration : NSObject
+
+/// Configures the RF polling of the reader session; multiple options can be OR'ed together.  This option affects the possible NFC tag type discover.
+@property (nonatomic) NFCPollingOption polling;
+
+/// Application identifiers (subset of entries defined in "com.apple.developer.nfc.readersession.iso7816.select-identifiers") used during ISO7816 tag discovery.
+@property (nonatomic, strong) NSArray<NSString *> *iso7816SelectIdentifiers;
+
+/// System codes (subset of entries defined in "com.apple.developer.nfc.readersession.felica.systemcodes") used during FeliCa tag discovery.
+@property (nonatomic, strong) NSArray<NSString *> *felicaSystemCodes;
+
+/*!
+ * @param option   RF polling types to perform tag discovery.
+ *
+ * @param iso7816SelectIdentifiers  List of ISO7816 Application Identifiers to be used in tag detection when NFCTagReaderSession is configured with NFCPollingISO14443 and/or NFCPollingPACE option.
+ *              Entries must be specified in "com.apple.developer.nfc.readersession.iso7816.select-identifiers" in Info.plist; all unknown / not matched entries will be dropped.
+ *              An empty NSArray indicates all applications specified in Info.plist will be used.  Repeated entries will get filter out via NSOrderedSet conversion.
+ *
+ * @param felicaSystemCodes  List of FeliCa System Codes to be used in tag detection when NFCTagReaderSession is configured with NFCPollingISO18092 option.
+ *              Entries must be specified in "com.apple.developer.nfc.readersession.felica.systemcodes" in Info.plist; all unknown / not matched entries will be dropped.
+ *              An empty NSArray indicates all applications specified in Info.plist will be used.
+ */
+- (instancetype)initWithPollingOption:(NFCPollingOption)option iso7816SelectIdentifiers:(NSArray<NSString*> *)iso7816SelectIdentifiers felicaSystemCodes:(NSArray<NSString *> *)felicaSystemCodes API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(watchos, macos, tvos, visionos);
+
+@end
+
+
 #pragma mark - Raw tag reader session
 
 /*!
@@ -86,22 +131,6 @@
  */
 @property (nonatomic, readonly, retain, nullable) id<NFCTag> connectedTag API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos);
 
-/*!
- * @enum NFCPollingOption
- *
- * @constant NFCPollingISO14443     Support both Type A & B modulation.  NFCTagTypeISO7816Compatible and NFCTagTypeMiFare tags will be discovered.
- * @constant NFCPollingISO15693     NFCTagTypeISO15693 tag will be discovered.
- * @constant NFCPollingISO18092     NFCTagTypeFeliCa tag will be discovered.
- * @constant NFCPollingPACE         NFCTagTypeISO7816Compatible will be discovered; only tags with Password Authenticated Connection Establishment (PACE) supported is returned.
- *                                  This is an exclusive value that cannot be combine with other NFCPollingOption values; this will override all other combinations.
- */
-typedef NS_OPTIONS(NSInteger, NFCPollingOption) {
-    NFCPollingISO14443 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)     = 0x1,
-    NFCPollingISO15693 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)     = 0x2,
-    NFCPollingISO18092 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)     = 0x4,
-    NFCPollingPACE API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos)         = 0x8,
-};
-
 - (instancetype)init NS_UNAVAILABLE;
 
 /*!
@@ -117,6 +146,30 @@
 - (instancetype)initWithPollingOption:(NFCPollingOption)pollingOption
                              delegate:(id<NFCTagReaderSessionDelegate>)delegate
                                 queue:(nullable dispatch_queue_t)queue API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(watchos, macos, tvos, visionos) NS_EXTENSION_UNAVAILABLE("Not available to extensions") ;
+
+/*!
+ * @method initWithConfiguration:delegate:queue:
+ *
+ * @param configuration Reader configuration for the session.  The configuration is applied when `[NFCTagReaderSession beginSession]` or `[NFCTagReaderSession restartPolling]` is called.
+ * @param delegate      The session will hold a weak ARC reference to this `NFCTagReaderSessionDelegate` object.
+ * @param queue         A dispatch queue where NFCTagReaderSessionDelegate delegate callbacks will be dispatched to.  A <i>nil</i> value will
+ *                      cause the creation of a serial dispatch queue internally for the session.  The session object will retain the provided dispatch queue.
+ *
+ * @return              A new NFCTagReaderSession instance.
+ */
+- (instancetype)initWithConfiguration:(NFCTagReaderSessionConfiguration *)configuration delegate:(id<NFCTagReaderSessionDelegate>)delegate queue:(dispatch_queue_t)queue API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(watchos, macos, tvos, visionos) NS_EXTENSION_UNAVAILABLE("Not available to extensions");
+
+/*!
+ * @method restartPollingWithConfiguration:
+ *
+ * @param configuration Reader configuration used for the polling restart.  The configuration does not persist in the current active session, i.e. `[NFCTagReaderSession restartPolling]` would use
+ *                      the original configuration from session instance initialization.
+ *
+ * @discussion Restart the polling sequence in this session to discover new tags using the provided configuration.  New tags discovered from polling will return in the subsequent
+ *             `[NFCTagReaderSessionDelegate tagReaderSession:didDetectTags:]` call. Tags that are returned previously by `[NFCTagReaderSessionDelegate tagReaderSession:didDetectTags:]` will become invalid,
+ *             and all references to these tags shall be removed to properly release the resources.  Calling this method on an invalidated session will have no effect; a new reader session is required to restart the reader.
+ */
+- (void)restartPollingWithConfiguration:(NFCTagReaderSessionConfiguration *)configuration API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(watchos, macos, tvos, visionos);
 
 /*!
  * @method restartPolling

Clone this wiki locally