在 Android Chrome 上设置 NDEF 消息
Set NDEF message on Android Chrome
如果我的网站是从 android chrome 打开的,我想在我的网站上设置一个 NDEF 消息,并使用 nfcpy 通过 NFC Reader 读取它。
根据https://developer.mozilla.org/en-US/docs/Web/API/NDEFMessage/NDEFMessage,我认为我应该可以做到这一点。
我的页面是这样的:
<button onclick="set_ndef()">Set NDEF msg</button>
<pre id="log"></pre>
<script>
async function set_ndef() {
if ("NDEFReader" in window) {
try {
const ndefmsg = new NDEFMessage({'records': [{'recordType': 'text', 'data': 'asd'}]});
consoleLog(ndefmsg)
} catch(error) {
consoleLog(error);
}
} else {
consoleLog("Web NFC is not supported.");
}
}
function consoleLog(data) {
var logElement = document.getElementById('log');
logElement.innerHTML += data + '\n';
}
</script>
该网站使用 HTTPS,当我按下按钮时,一个 NDEFRecord 对象被打印到 div。
我有一个 acr122u NFC reader,我可以使用 nfcpy 进行设置:
import nfc
import time
def on_connect(tag):
print(tag.identifier.hex())
tag_ident = tag.identifier.hex()[:8]
print(tag.ndef)
if tag.ndef:
for record in tag.ndef:
print(record)
return True
while True:
with nfc.ContactlessFrontend('usb') as clf:
tag = clf.connect(rdwr={'on-connect': on_connect, 'beep-on-connect': True})
time.sleep(1)
将我的 phone 放在 reader 之后(按下页面上的按钮后)我只能读取 phone 的 UID,但是 tag.ndef
是 None
我该怎么做(如果我能做到的话)?
应该给你一些背景知识,说明为什么这不起作用,Android Chrome NFC 是一个 NFC reader 和 2 readers不行。
虽然使用 acr122u NFC reader 通常可以配置为充当 NFC 标签,然后 Android Chrome 应该能够读取和写入 NDEF 消息(https://nfcpy.readthedocs.io/en/latest/topics/get-started.html#emulate-a-card)
如果我的网站是从 android chrome 打开的,我想在我的网站上设置一个 NDEF 消息,并使用 nfcpy 通过 NFC Reader 读取它。
根据https://developer.mozilla.org/en-US/docs/Web/API/NDEFMessage/NDEFMessage,我认为我应该可以做到这一点。
我的页面是这样的:
<button onclick="set_ndef()">Set NDEF msg</button>
<pre id="log"></pre>
<script>
async function set_ndef() {
if ("NDEFReader" in window) {
try {
const ndefmsg = new NDEFMessage({'records': [{'recordType': 'text', 'data': 'asd'}]});
consoleLog(ndefmsg)
} catch(error) {
consoleLog(error);
}
} else {
consoleLog("Web NFC is not supported.");
}
}
function consoleLog(data) {
var logElement = document.getElementById('log');
logElement.innerHTML += data + '\n';
}
</script>
该网站使用 HTTPS,当我按下按钮时,一个 NDEFRecord 对象被打印到 div。
我有一个 acr122u NFC reader,我可以使用 nfcpy 进行设置:
import nfc
import time
def on_connect(tag):
print(tag.identifier.hex())
tag_ident = tag.identifier.hex()[:8]
print(tag.ndef)
if tag.ndef:
for record in tag.ndef:
print(record)
return True
while True:
with nfc.ContactlessFrontend('usb') as clf:
tag = clf.connect(rdwr={'on-connect': on_connect, 'beep-on-connect': True})
time.sleep(1)
将我的 phone 放在 reader 之后(按下页面上的按钮后)我只能读取 phone 的 UID,但是 tag.ndef
是 None
我该怎么做(如果我能做到的话)?
虽然使用 acr122u NFC reader 通常可以配置为充当 NFC 标签,然后 Android Chrome 应该能够读取和写入 NDEF 消息(https://nfcpy.readthedocs.io/en/latest/topics/get-started.html#emulate-a-card)