iOS 13 NFC 核心 - 读取 NDEF 标签(例如 ISO 14443 Type A JavaCard)

iOS 13 NFC Core - Reading NDEF Tags (e.g. ISO 14443 Type A JavaCard)

我可以使用像 https://github.com/OpenJavaCard/openjavacard-ndef with an iPhone 7 or above (with Core NFC support)? It seems like NFC was particularly enhanced for iOS 13. The documentation https://developer.apple.com/documentation/corenfc 这样的小程序读取 javacard 上的 NDEF 标签吗表示可以使用 iPhone 读取符合 ISO 7816 或 ISO 15693 标准的卡。谁能证实这一点?

我有两个可用的 javacard:

我已经在两张卡上都安装了该应用程序,但无法从 iPhone 读取它。

我已经用 https://developer.apple.com/documentation/corenfc/building_an_nfc_tag-reader_app 进行了测试 - 它可以检测到我的 Yubikey,但不能检测到 JavaCard 运行 NDEF 小程序。可以从 iPhone?

中读取哪些类型的 NFC 标签

我相信 iOS 可以读取标准 NFC 类型加上 iOS 13 它可以读取类型 4 卡的附加标签 AId(应用程序 ID)(这只是阅读文档) .

还阅读了 NFC 类型 4 卡的规范 http://apps4android.org/nfc-specifications/NFCForum-TS-Type-4-Tag_2.0.pdf,它适用于与标签 AId 一起使用的非制造商特定类型的标签

我注意到小程序可能没有使用正确的 AId?
规范(第 5.4.2 节)说 NDEF 的 AId 是 D2760000850101h

Applet https://github.com/OpenJavaCard/openjavacard-ndef/blob/master/applet-full/build.gradle 似乎正在使用 aid = '0xD2:0x76:0x00:0x01:0x77:0x10:0x02:0x11:0x01:0x00:0x01'

这是一个猜测,但使用 NFC 规范所述的 AId 可能值得一试

进一步阅读 https://github.com/OpenJavaCard/openjavacard-ndef/issues/4 的内容。

他们默认使用的默认小程序 AId 是他们自己分配的一个(参见 https://openjavacard.org/resources/aid-now.html 而不是 NFC 规范)

请注意,使用 iOS 13,您现在可以编写自己的程序来阅读此 Different Aid。使用 https://developer.apple.com/documentation/corenfc/nfciso7816tag 和正确的 AId

还有 https://developer.apple.com/documentation/corenfc/nfctagreadersession(这也说明标准 NDEF 的 AId 是 D2760000850101)