NDEF 文件仅适用于某些应用程序(URL)

问题描述 投票:0回答:2

我正在尝试使用 libnfc 和 PN532 模块模拟 url 标签。

ndef 文件适用于 IOS 的“GoToTags”,但不适用于“NFC Tools”或“NFC”。

如果我尝试在 Android 中后台读取它,即使可以使用 Chrome 打开任何 URL 标签,它也会说没有可用的应用程序。

对于 Android,我使用的是 Redmi 9C NFC

这个定义有什么问题吗?会不会是其他因素影响了阅读?

这是我目前正在使用的 NDEF 文件。我评论了我认为每个字节的含义,但如果有任何错误,请纠正。

uint8_t ndef_file[0xfffe] = {
     0x00, //(Start Position) -> 0
     32, //(End Position) -> 32 Positions after this one.
     0xd1, //HEADER
     0x02, //Payload Count
     0x1b, //SIZE FROM 0x91 to END
     0x53, 0x70,//SP
     0x91, //UKNOWN
     0x01, //UKNOWN
     0x08, //Title Size (FROM 0x65 to 0x51)
     0x54, //T
     0x02, //2 bytes UTF-8
     0x65, 0x6e, // Language (EN)
     0x74, 0x63, 0x6b, 0x6e, 0x66, 0x63, //RcpNFC
     0x01, //TNF Record Type 0x01 "NFC Forum Well-Known Type" 
     0x0b, //PAYLOAD SIZE FROM "URI IDENTIFIER" to END
     0x55, //URI Records (0x55/'U')
     0x04, // URI IDENTIFIER 0x03 http:// 0x04 https://
     0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d //PAYLOAD (google.com)
};

提前谢谢您。

编辑1: 这是我用来模拟标签的代码,即使对于默认代码也不起作用: https://github.com/nfc-tools/libnfc/blob/master/utils/nfc-emulate-forum-tag4.c

我调试了 Android 设备,出现以下消息:

NativeNfcTag: Check NDEF Failed - status = 3

以下是日志的相关部分: https://pastebin.com/zy884AMq

android ios nfc ndef lib-nfc
2个回答
0
投票

来自文档

为此,系统读取 NdefMessage 内的第一个 NdefRecord 以确定如何解释整个 NDEF 消息

如果你查看源代码

ndefUri = message.getRecords()[0].toUri();

它只查看 NDEF 记录 0

并且看起来(我没有完全匹配描述 NDEF 数据的方法),您的第一条记录(记录 0)在

Text
记录中,通常没有安装默认应用程序(而且绝对不会是一个网络浏览器)

默认情况下,Android 上的

Text

 记录通常会导致系统 NFC 应用程序仅弹出一个对话框,显示 
Text
 记录中的文本。

这可能与 iOS 的行为不同,iOS 可能会忽略任何非

URI's

 的记录
    


0
投票
TL;DR 使用普通 URI 记录,而不是智能海报。

原生 iOS 不支持智能海报记录,智能海报记录是 NDEF 文本记录(网站标题)+ URI 记录(网站 url)。 GoToTags 应用程序正常工作的原因是它显式处理智能海报。我们已直接向 NFC 论坛报告了此错误,并与 Apple 进行了沟通以解决该问题,但毫无进展。智能海报记录真的毫无意义。

© www.soinside.com 2019 - 2024. All rights reserved.