我正在尝试使用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(...)