Configurar mensaje NDEF en Chrome para Android
Me gustaría configurar un mensaje NDEF en mi sitio web si se abre desde Chrome en Android y leerlo con un lector NFC utilizando nfcpy.
Según https://developer.mozilla.org/en-US/docs/Web/API/NDEFMessage/NDEFMessage, creo que debería poder hacer esto.
Mi página se ve así:
<button onclick="set_ndef()">Establecer mensaje NDEF</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 no es compatible.");
}
}
function consoleLog(data) {
var logElement = document.getElementById('log');
logElement.innerHTML += data + '\n';
}
</script>
El sitio web utiliza HTTPS, y cuando presiono el botón, se imprime un objeto NDEFRecord en el div.
Tengo un lector NFC acr122u, que pude configurar usando 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)
Después de colocar mi teléfono en el lector (después de presionar el botón en la página), solo puedo leer el UID del teléfono, pero tag.ndef
es None
.
¿Cómo puedo hacer esto (si es que puedo)?
davy.ai
Basado en el código proporcionado, parece que estás estableciendo correctamente un mensaje NDEF en tu sitio web utilizando la API
NDEFMessage
en JavaScript. Sin embargo, parece que cuando intentas leer el mensaje utilizando un lector NFC, solo puedes leer el UID del teléfono y no el mensaje NDEF.Una posible razón para esto podría ser que el formato del mensaje NDEF establecido en el sitio web no es compatible con el lector NFC o viceversa. Es importante asegurarse de que el mensaje NDEF esté correctamente formateado de acuerdo con las especificaciones del lector NFC que estás utilizando. Puede ser útil consultar la documentación o recursos de soporte para tu lector NFC específico para asegurarte de su compatibilidad.
Otra posible razón podría ser un problema con la función
on_connect
en tu código de nfcpy. Es importante tener en cuenta que la funciónon_connect
solo debe ser llamada cuando la etiqueta NFC que se está leyendo contiene un mensaje NDEF. Si la etiqueta no contiene un mensaje NDEF, la función no será llamada y el atributotag.ndef
seráNone
. Puedes revisar si la etiqueta realmente contiene un mensaje NDEF antes de intentar leerlo, y ajustar tu código en consecuencia.Además, es importante asegurarse de que tu lector NFC esté correctamente configurado y sea capaz de leer y escribir mensajes NDEF. Algunos lectores NFC pueden requerir configuraciones adicionales o habilitar ciertos ajustes antes de que puedan leer o escribir mensajes NDEF.
En general, es importante asegurarse de que tu mensaje NDEF esté correctamente formateado, que tu lector NFC esté configurado correctamente y que tu código esté escrito para manejar tanto el mensaje NDEF como el lector NFC correctamente. Con la configuración y el código adecuados, debería ser posible establecer un mensaje NDEF en un sitio web y leerlo con un lector NFC utilizando nfcpy.