使用 React Native 读取 NFC 标签类型"android.nfc.tech.NfcV"和"android.nfc.tech.NdefFormatable"



我正在尝试使用NFC从血糖仪读取,现在在Android上,还没有尝试过iOS(没有带NFC的手机)。

我正在使用 react-native-nfc-manager 作为库和它附带的示例:https://github.com/whitedogg13/react-native-nfc-manager

我收到此标签:

{ "techTypes":["android.nfc.tech.NfcV","android.nfc.tech.NdefFormatable"], "id":"87C5280D002602E0"}

我可以看到这个库中涵盖了 NfcV,但我如何将其阅读为该类型?

我正在遵循该示例,因此我没有在我的清单或 build.gradle 中设置任何内容。我已经链接了它并且它正在工作,但我似乎错过了最后一部分。

通过遵循示例,看起来我应该使用这样的方法:

_parseText = (tag) => {
    try {
        if (Ndef.isType(tag.ndefMessage[0], Ndef.TNF_WELL_KNOWN, Ndef.RTD_TEXT)) {
            return Ndef.text.decodePayload(tag.ndefMessage[0].payload);
        }
    } catch (e) {
        console.log(e);
    }
    return null;
}

但是我的标签没有ndefMessage[0].

由于标签的techTypes列表中不包含Ndef,因此它不包含 NDEF 消息。因此,您将无法阅读任何此类消息。由于您的"标签"是血糖计,因此我假设它甚至不希望包含NDEF消息。

相反,您必须找出血糖仪实际支持的命令(可能它将支持 ISO/IEC 15693 读取单块命令(请参阅此处)。为了发送此类低级命令,您需要通过请求标记技术来使用通用 NfcTech API:

NfcManager.requestTechnology(NfcTech.NfcV)

然后,您可以使用收发方法交换任意命令:

NfcManager.transceive(...)

最新更新