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

Reading NFC Tag types "android.nfc.tech.NfcV" and "android.nfc.tech.NdefFormatable" with React Native

我正在尝试使用 NFC 从血糖仪读取数据,现在是 Android,还没有尝试 iOS(没有带 NFC 的 phone ).

我正在使用 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 消息。因此,您将无法阅读任何此类消息。由于您的 "tag" 是血糖仪,我认为它甚至不会包含 NDEF 消息。

相反,您将不得不找出血糖仪实际支持的命令(可能会支持ISO/IEC 15693 READ SINGLE BLOCK 命令(请参阅). In order to send such low-level commands, you will need to use the Generic NfcTech API 标签技术:

NfcManager.requestTechnology(NfcTech.NfcV)

然后就可以使用收发的方式来交换任意命令了:

NfcManager.transceive(...)