我的问题是关于 NDEF 标签中 TNF_EXTERNAL_TYPE URN 的正确格式:它应该是“com.mydomain.mydivision”还是“mydivision.mydomain.com”?
Android NFC guide 状态,对于 TNF_EXTERNAL_TYPE NDEF 记录:
URI based on the URN in the type field. The URN is encoded into the NDEF type field in a shortened form: (domain_name):(service_name)
据我所知,URN/URI 遵循“mydivision.mydomain.com”约定(我在这里错了吗?)
但他们后来写道,in the examples :
String domain = "com.example"; //usually your app's package name
再进一步,他们写道:
URNs for TNF_EXTERNAL_TYPE have a canonical format of: urn:nfc:ext:example.com:externalType
所以我不知道该怎么想。正确的格式是什么?如果有规范,我将不胜感激。
最佳答案
正确的格式是
urn:nfc:ext:<DOMAIN>:<TYPE_NAME>
哪里<DOMAIN>
定义为
the domain name of the issuing organization
和<TYPE_NAME>
是由该组织管理的不区分大小写的类型名称字符串。
NFC 论坛记录类型定义规范(从 1.0 版开始)没有明确定义域名格式的任何规则。但是,规范中给出的所有示例都使用 RFC 1034 中描述的域名格式。 . (这也是有道理的,因为规范引用了 RFC 3986 的 URI 语法,反过来也引用了 RFC 1034 的域名格式。)
因此,域名中最不具体的部分排在最后,因此您应该使用“mydivision.mydomain.com”格式。
另请注意,Android 的 Intent 过滤器机制区分大小写,而外部类型名称不区分大小写。因此,为避免出现问题,您应该只在类型名称中使用小写字母。
关于android - TNF_EXTERNAL_TYPE NDEF 标签的 URN 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35402895/