Dav*_*ruz 3 nfc ios mifare swift core-nfc
所以我在WWDC,能够使用以下代码检测Apple Labs提供的NFC卡:
nfcSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)
nfcSession.begin()
Run Code Online (Sandbox Code Playgroud)
和委托方法:
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
DispatchQueue.main.async {
print("Error:" + error.localizedDescription)
}
}
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
print("Did detect NDEFs.")
for message in messages {
for record in message.records {
print(record.identifier)
print(record.payload)
print(record.type)
print(record.typeNameFormat)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我想在ISO/IEC 14443协议下检测Mifare Ultralight(或经典)卡.
每当我获得扫描视图时,都没有任何反应.也不会调用错误回调或成功块.有没有办法读这张卡?
非常感谢!
MIFARE Classic 1k或4k芯片早于ISO/IEC 14443标准.在WWDC CoreNFC演示文稿中,CoreNFC未明确提及MIFARE Classic.
支持MIFARE Ultralight或任何其他类型2标签(例如NTAG 203).我认为MIFARE Classic的继任者将是Type 4(DESFire).
话虽如此,如果所有16个扇区密钥A和B都保留为出厂默认值,并且标签包含有效的NDEF消息,我可以成功读取MIFARE Classic 1k标签.如果更改了一个键,则读取器将使用readerSessionInvalidationErrorUserCanceled中止.
根据我的经验,Beta 2在阅读标签时更加可靠.在我的手机上,第一次读取总是失败,我必须停止并重新启动阅读器会话.从那时起,它工作正常.对于beta 1,我经常不得不首先重启手机,甚至还要多次取消/重试.
编辑:恩智浦 - MIFARE标签的供应商 - 发布了一个规范,解释如何在MIFARE经典标签内存储NDEF标签.我的测试表明,使用CoreNFC库可以毫无问题地读取这些标签.Adafruit已经发布了Arduino库,允许根据此规范重新格式化MIFARE经典标签.
之前我使用了另一个使用不同方法的NDEF Arduino库,不符合规范.有时无论如何都可以读取标签,但不可靠.
总之:100%确保使用根据已发布的规范格式化的标记.如果您无法读取在抽屉中找到的标签,则可能不是CoreNFC库的错误.
| 归档时间: |
|
| 查看次数: |
3755 次 |
| 最近记录: |