【问题标题】:How to stop overwrite to an NFC tag using ios Swift如何使用 ios Swift 停止覆盖 NFC 标签
【发布时间】:2020-07-03 11:35:35
【问题描述】:

我在 swift 5 中申请了 NFC 写入,写入工作正常,但我只想从 nfc 更新 1 个密钥,而不会覆盖完整的 nfc 卡数据。 NFC 设备是 ISO 14443-3A NXP MIFARE Ultralight (Ultralight C)。请检查下面的代码,任何人都可以提供帮助。

 var payloadData = Data([0x02,0x65,0x6E])
  payloadData.append(self.record_to_write.data(using: .utf8)!)
                                    
                                let customTextPayload = NFCNDEFPayload.init(
                                   format: .nfcWellKnown,
                                   type: "T".data(using: .utf8)!,
                                   identifier: Data(),
                                   payload:payloadData
                                )
                                self.record_new_arr.append(customTextPayload)
let messge = NFCNDEFMessage.init(records: self.record_new_arr )
tag.writeNDEF(messge, completionHandler: { (error: Error?) in
            if nil != error{
                session.alertMessage = "Write NDEF message fail: \(error)"
                print("Write NDEF message fail: \(error)")
            }else{
                print("Write NDEF message successfull.")
                session.alertMessage = "Write NDEF message successfull."
            }

        })

只需要防止使用 swift 将数据覆盖到 nfc 中。 提前致谢

【问题讨论】:

    标签: swift nfc mifare core-nfc


    【解决方案1】:

    NDEF 格式并非真正设计为直接在卡上附加或更新。

    由于使用 TLV 记录的数据结构
    T = 终结符(1 字节)
    L = 长度(1+ 字节)
    V = Value (0+ Bytes)(这是要存储的数据)

    然后是另一个终结者

    然后在相当多的情况下,要追加/更新,您将不得不重写整个卡或卡的大部分,因为长度可能需要更新。
    只有少数情况下,替换现有数据是有意义的。

    因此,大多数实现只会写入完整的 NDEF 消息,覆盖卡上已经存在的内容,因为要进行更新,无论如何您都必须阅读整个消息。

    更新 NDEF 消息的唯一方法是将其读入程序,更新/追加内存中的记录,将整个内容写回卡。

    因此,简而言之,您所要求的内容是不可能的(虽然在非常有限的情况下,您可能可以自己计算更改并在类型 2 卡上进行更改,但这不适用于其他卡类型)

    【讨论】:

    • 谢谢,但我已经获取了所有记录,然后写入了整个记录,但记录不是在卡中使用 tag.writeNDEF 写入的。我的卡详细信息是:标签类型:ISO 14443-3A,技术:A 型,Mifare 超轻。 tag.writeNDEF 适用于其他卡
    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2022-06-11
    • 1970-01-01
    相关资源
    最近更新 更多