La lecture et l'écriture sur des tags NFC sont désormais possibles.
Mise à jour
What is Web NFC?
NFC signifie Near Field Communications, une technologie sans fil à courte portée
fonctionnant à 13,56 MHz qui permet la communication entre les appareils à distance
moins de 10 cm et une vitesse de transmission jusqu'à 424 kbit / s.
Web NFC offre aux sites la possibilité de lire et d'écrire sur des tags NFC lorsqu'ils sont
à proximité immédiate de l'appareil de l'utilisateur (généralement 5 à 10 cm, 2 à 4 pouces).
La portée actuelle est limitée au format d'échange de données NFC (NDEF), un
format de message binaire qui fonctionne avec différents formats de balises.

Cas d'utilisation suggérés
Web NFC est limité à NDEF car les propriétés de sécurité de lecture et
l'écriture de données NDEF est plus facilement quantifiable. Opérations d'E / S de bas niveau (par exemple
ISO-DEP, NFC-A / B, NFC-F), mode de communication Peer-to-Peer et carte basée sur l'hôte
L'émulation (HCE) n'est pas prise en charge.
Voici quelques exemples de sites pouvant utiliser Web NFC:
- Les musées et galeries d'art peuvent afficher des informations supplémentaires sur un affichage
lorsque l'utilisateur touche son appareil à une carte NFC à proximité de l'exposition. - Les sites de gestion d'inventaire peuvent lire ou écrire des données sur la balise NFC sur un
conteneur pour mettre à jour les informations sur son contenu. - Les sites de conférence peuvent l'utiliser pour scanner les badges NFC pendant l'événement.
- Les sites peuvent l'utiliser pour partager les secrets initiaux nécessaires pour l'appareil ou le service
provisionnement des scénarios et aussi pour déployer les données de configuration en opération
mode.

Statut actuel
Utilisation du Web NFC
Activation du support pendant la phase d'essai d'origine
Web NFC sera disponible sur Android en tant qu'essai d'origine dans Chrome 81. L'origine
l'essai devrait se terminer dans Chrome 84.
Les essais d'Origin vous permettent d'essayer de nouvelles fonctionnalités et de donner votre avis sur leur
utilisabilité, praticité et efficacité pour la communauté des normes Web. Pour
plus d'informations, voir le Guide des essais d'origine pour les développeurs Web.
Pour vous inscrire à cet essai ou à un autre essai d'origine, visitez le page d'inscription.
Inscrivez-vous à l'essai d'origine
- Demander un jeton pour votre origine.
- Ajoutez le jeton à vos pages. Il y a deux façons de faire cela:
- Ajouter un
origine-procès
tag to the diriger of each page. For example,
cela peut ressembler à quelque chose comme: - Si vous pouvez configurer votre serveur, vous pouvez également ajouter le jeton
en utilisant unEssai d'origine
HTTP entête. The resulting response header should
ressemble à quelque chose comme:Essai d'origine: TOKEN_GOES_HERE
- Ajouter un
Activation via chrome: // flags
Pour expérimenter le Web NFC localement sur Android, sans jeton d'essai d'origine,
activer le #experimental-web-platform-features
drapeau dans chrome://flags
.

Détection des fonctionnalités
Feature detection for Matériel is different from what you’re probably used to.
La présence de NDEFReader
et NDEFWriter
vous dit que le navigateur
prend en charge Web NFC, mais pas si le matériel requis est présent. Dans
notamment, si le matériel est manquant, le promis retourné par certains appels
rejettera. Je fournirai des détails lorsque je décris NDEFReader
et NDEFWriter
.
si ('NDEFReader' dans la fenêtre) { }
si ('NDEFWriter' dans la fenêtre) { }
Terminologie
Une balise NFC est un appareil NFC passif, ce qui signifie qu'il est alimenté par
l'induction lorsqu'un périphérique NFC actif (. par exemple un téléphone) est à proximité. Balises NFC
se présentent sous de nombreuses formes et modes, comme des autocollants, des cartes de crédit, des poignets de bras, etc.

le NDEFReader
et NDEFWriter
les objets sont les deux points d'entrée dans Web NFC
qui exposent des fonctionnalités pour préparer des actions de lecture et / ou d'écriture
remplie lorsqu'une balise NDEF arrive à proximité. le NDEF
dans NDEFReader
et
NDEFWriter
signifie NFC Data Exchange Format, un message binaire léger
format normalisé par le Forum NFC.
le NDEFReader
L'objet sert à agir sur les messages NDEF entrants à partir de balises NFC
tandis que le NDEFWriter
L'objet sert à écrire des messages NDEF dans des balises NFC dans
intervalle.
Une balise NFC qui prend en charge NDEF est comme un post-it. Tout le monde peut le lire, et
à moins qu'il ne soit en lecture seule, n'importe qui peut y écrire. Il contient un seul NDEF
message qui encapsule un ou plusieurs enregistrements NDEF. Chaque enregistrement NDEF est un
structure binaire qui contient une charge utile de données et des informations de type associées.
Web NFC prend en charge les types d'enregistrements normalisés suivants du forum NFC: vide, texte,
URL, smart poster, Mime type, absolute URL, external type, unknown, and local
taper.

Scanner les tags NFC
Pour analyser les tags NFC, instanciez d'abord un nouveau NDEFReader
objet. Appel analyse ()
renvoie une promesse. L'utilisateur peut être invité si l'accès n'a pas été précédemment
accordé. La promesse se résoudra si les conditions suivantes sont toutes remplies:
- L'utilisateur a autorisé le site Web à interagir avec les appareils NFC lorsqu'il appuie sur son
téléphoner. - Le téléphone de l'utilisateur prend en charge NFC.
- L'utilisateur a activé NFC sur son téléphone.
Une fois la promesse résolue, les messages NDEF entrants sont disponibles par
souscrire à des événements de «lecture» via un écouteur d'événements. Vous devez également vous abonner
aux événements «d'erreur» à notifier lorsque des tags NFC incompatibles sont à proximité
intervalle.
const lecteur = new NDEFReader();
lecteur.scan().then(() => {
console.Journal("Scan started successfully.");
lecteur.onerror = () => {
console.Journal("Cannot read data from the NFC tag. Try another one?");
};
lecteur.onreading = un événement => {
console.Journal("NDEF message read.");
};
}).catch(Erreur => {
console.Journal(`Error! Scan failed to start: ${Erreur}.`);
});
Lorsqu'un tag NFC est à proximité, un NDEFReadingEvent
l'événement est déclenché. Article
contient deux propriétés qui lui sont propres:
numéro de série
représente le numéro de série de l'appareil (.eg
00-11-22-33-44-55-66), ou une chaîne vide si aucune n'est disponible.un message
représente le message NDEF stocké dans la balise NFC.
Pour lire le contenu du message NDEF, parcourez en boucle message.records
et
traiter leur Les données
membres convenablement basé sur leur recordType
.
le Les données
le membre est exposé comme un DataView
car il permet la manipulation
cas où les données sont encodées en UTF-16.
lecteur.onreading = un événement => {
const un message = un événement.un message;
pour (const enregistrer of un message.records) {
console.Journal("Record type: " + enregistrer.recordType);
console.Journal("MIME type: " + enregistrer.type de support);
console.Journal("Record id: " + enregistrer.va);
switch (enregistrer.recordType) {
case "text":
break;
case "url":
break;
défaut:
}
}
};
Le livre de recettes contient de nombreux exemples de lecture des enregistrements NDEF basés sur
leurs types.
Vous pouvez également filtrer les messages NDEF en passant des options à analyse ()
.
va
correspond à l'identifiant d'enregistrement de chaque NDEFRecord.recordType
correspond au type de chaque NDEFRecord.type de support
le motif correspond autype de support
propriété de chaque NDEFRecord.
const lecteur = new NDEFReader();
attendre lecteur.scan({
type de support: "application/*json"
});
const lecteur = new NDEFReader();
attendre lecteur.scan({
va: "my-restaurant-daily-menu",
type de support: "application/octet-stream"
});
const lecteur = new NDEFReader();
attendre lecteur.scan({
recordType: "example.com:shoppingItem"
});
Écrire des tags NFC
Pour écrire des tags NFC, instanciez d'abord un nouveau NDEFWriter
objet. Appel
écrivez ()
renvoie une promesse. L'utilisateur peut être invité si l'accès n'a pas été
accordé précédemment. À ce stade, un message NDEF est «préparé» et promet
résoudra si les conditions suivantes sont toutes remplies:
- L'utilisateur a autorisé le site Web à interagir avec les appareils NFC lorsqu'il appuie sur son
téléphoner. - Le téléphone de l'utilisateur prend en charge NFC.
- L'utilisateur a activé NFC sur son téléphone.
- L'utilisateur a tapé sur une balise NFC et un message NDEF a été écrit avec succès.
Pour écrire du texte dans une balise NFC, transmettez une chaîne au écrivez ()
méthode.
const writer = new NDEFWriter();
writer.write(
"Hello World"
).then(() => {
console.Journal("Message written.");
}).catch(Erreur => {
console.Journal(`Write failed :-( try again: ${Erreur}.`);
});
Pour écrire un enregistrement URL dans une balise NFC, transmettez un dictionnaire qui représente un NDEF
Message à écrivez ()
. Dans l'exemple ci-dessous, le message NDEF est un dictionnaire
avec un records
clé. Sa valeur est un tableau d'enregistrements - dans ce cas, une URL
enregistrement défini comme un objet avec un recordType
clé définie sur "url"
et un Les données
clé définie sur la chaîne d'URL.
const writer = new NDEFWriter();
writer.write({
records: [{ recordType: "url", Les données: "https://w3c.github.io/web-nfc/" }]
}).then(() => {
console.Journal("Message written.");
}).catch(Erreur => {
console.Journal(`Write failed :-( try again: ${Erreur}.`);
});
Il est également possible d'écrire plusieurs enregistrements sur une balise NFC.
const writer = new NDEFWriter();
writer.write({ records: [
{ recordType: "url", Les données: "https://w3c.github.io/web-nfc/" },
{ recordType: "url", Les données: "https://web.dev/nfc/" }
]}).then(() => {
console.Journal("Message written.");
}).catch(Erreur => {
console.Journal(`Write failed :-( try again: ${Erreur}.`);
});
Le livre de cuisine contient de nombreux exemples sur la façon d'écrire d'autres types de
Enregistrements NDEF.
Si une balise NFC doit être lue lors d'une opération d'écriture NFC, réglez le
ignorerLire
propriété à faux
dans les options passées au écrivez ()
méthode.
const lecteur = new NDEFReader();
lecteur.scan().then(() => {lecteur.onreading = un événement => {
};
const writer = new NDEFWriter();
revenir writer.write("Writing data is fun!", { ignorerLire: faux });
}).catch(Erreur => {
console.Journal(`Write failed :-( try again: ${Erreur}.`);
});
Si la balise NFC contient un message NDEF qui n'est pas censé être écrasé, définissez
les écraser
propriété à faux
dans les options passées au écrivez ()
méthode. Dans ce cas, la promesse retournée sera rejetée si un message NDEF est
déjà stocké dans le tag NFC.
const writer = new NDEFWriter();
writer.write("Writing data on an empty NFC tag is fun!", { écraser: faux })
.then(() => {
console.Journal("Message written.");
}).catch(_ => {
console.Journal(`Write failed :-( try again: ${Erreur}.`);
});
Sécurité et autorisations
L'équipe Chrome a conçu et mis en œuvre Web NFC en utilisant les principes de base
défini dans Contrôle de l'accès à une puissante plate-forme Web
Caractéristiques, y compris le contrôle de l'utilisateur, la transparence et l'ergonomie.
Parce que NFC étend le domaine des informations potentiellement accessibles aux malintentionnés
sites Web, la disponibilité de NFC est limitée pour maximiser la sensibilisation des utilisateurs et
contrôle de l’utilisation du NFC.

Web NFC is only available to top-level frames and secure browsing contexts (HTTPS
seul). Les origines doivent d'abord demander le "nfc"
autorisation tout en manipulant un
user gesture (e.g a button Cliquez sur). The NDEFReader analyse ()
et NDEFWriter
écrivez ()
methods trigger a user prompt, if access was not previously granted.
document.querySelector("#scanButton").onclick = asynchrone () => {
const lecteur = new NDEFReader();
attendre lecteur.scan();
lecteur.onreading = un événement => {
};
};
La combinaison d'une invite d'autorisation initiée par l'utilisateur et du monde réel, physique
movement of bringing the device over a cible NFC tag mirrors the chooser
modèle trouvé dans les autres API d'accès aux fichiers et aux appareils.
Pour effectuer une numérisation ou une écriture, la page Web doit être visible lorsque l'utilisateur touche
une balise NFC avec leur appareil. Le navigateur utilise un retour haptique pour indiquer un
robinet. L'accès à la radio NFC est bloqué si l'écran est éteint ou si l'appareil est
fermé à clé. Pour les pages Web non visibles, la réception et l'envoi de contenu NFC sont
suspendu et repris lorsqu'une page Web redevient visible.
Grace à API de visibilité de page, il est possible de suivre le moment où le document
changements de visibilité.
document.onvisibilitychange = un événement => {
si (document.caché) {
} else {
}
};
Livre de recettes
Voici quelques exemples de code pour vous aider à démarrer.
Vérifier l'autorisation
le API des autorisations permet de vérifier si le "nfc"
la permission était
accordé. Cet exemple montre comment analyser les tags NFC sans intervention de l'utilisateur si
l'accès a déjà été accordé, ou affichez un bouton dans le cas contraire. Notez que le même
mécanisme fonctionne pour écrire des balises NFC car il utilise la même autorisation sous le
capuche.
const lecteur = new NDEFReader();asynchrone une fonction startScanning() {
attendre lecteur.scan();
lecteur.onreading = un événement => {
};
}
const nfcPermissionStatus = attendre navigateur.permissions.mettre en doute({ patate douce: "nfc" });
si (permissionStatus.Etat === "granted") {
startScanning();
} else {
document.querySelector("#scanButton").style.affichage = "block";
document.querySelector("#scanButton").onclick = un événement => {
startScanning();
};
}
Abandonner les opérations NFC
En utilisant le AbortController
primitive facilite l'abandon des opérations NFC. le
l'exemple ci-dessous vous montre comment passer le signal
d'un AbortController via
les options de NDEFReader analyse ()
et NDEFWriter écrivez ()
méthodes et abandonner
les deux opérations NFC en même temps.
const abortController = new AbortController();
abortController.signal.onabort = un événement => {
};const lecteur = new NDEFReader();
attendre lecteur.scan({ signal: abortController.signal });
const writer = new NDEFWriter();
attendre writer.write("Hello world", { signal: abortController.signal });
document.querySelector("#abortButton").onclick = un événement => {
abortController.abort();
};
Lire et écrire un enregistrement de texte
L'enregistrement de texte Les données
peut être décodé avec un TextDecoder
instancié avec le
enregistrer codage
propriété. Notez que la langue de l'enregistrement de texte est
disponible via son lang
propriété.
une fonction readTextRecord(enregistrer) {
console.assert(enregistrer.recordType === "text");
const textDecoder = new TextDecoder(enregistrer.codage);
console.Journal(`Text: ${textDecoder.decode(enregistrer.Les données)} (${enregistrer.lang})`);
}
Pour écrire un enregistrement de texte simple, passez une chaîne à NDEFWriter écrivez ()
méthode.
const writer = new NDEFWriter();
attendre writer.write("Hello World");
Les enregistrements de texte sont UTF-8 par défaut et prennent la langue du document actuel mais
les deux propriétés (codage
et lang
) peut être spécifié en utilisant la syntaxe complète
pour créer un enregistrement NDEF personnalisé.
une fonction a2utf16(string) {
laisser result = new Uint16Array(string.longueur);
pour (laisser je = 0; je < string.longueur; je++) {
result[je] = string.codePointAt(je);
}
revenir result;
}const textRecord = {
recordType: "text",
lang: "fr",
codage: "utf-16",
Les données: a2utf16("Bonjour, François !")
};
const writer = new NDEFWriter();
attendre writer.write({ records: [textRecord] });
Lire et écrire un enregistrement d'URL
Utiliser TextDecoder
pour décoder le disque Les données
.
une fonction readUrlRecord(enregistrer) {
console.assert(enregistrer.recordType === "url");
const textDecoder = new TextDecoder();
console.Journal(`URL: ${textDecoder.decode(enregistrer.Les données)}`);
}
Pour écrire un enregistrement d'URL, transmettez un dictionnaire de messages NDEF au NDEFWriter
écrivez ()
méthode. L'enregistrement URL contenu dans le message NDEF est défini comme un
objet avec un recordType
clé définie sur "url"
et un Les données
clé définie sur l'URL
chaîne.
const urlRecord = {
recordType: "url",
Les données:"https://w3c.github.io/web-nfc/"
};const writer = new NDEFWriter();
attendre writer.write({ records: [urlRecord] });
Lire et écrire un enregistrement de type MIME
le type de support
propriété d'un enregistrement de type MIME représente le type MIME du
Charge utile d'enregistrement NDEF de sorte que Les données
peut être correctement décodé. Par exemple, utilisez
JSON.parse
pour décoder du texte JSON et un élément Image pour décoder les données d'image.
une fonction readMimeRecord(enregistrer) {
console.assert(enregistrer.recordType === "mime");
si (enregistrer.type de support === "application/json") {
const textDecoder = new TextDecoder();
console.Journal(`JSON: ${JSON.parse(decoder.decode(enregistrer.Les données))}`);
}
else si (enregistrer.type de support.startsWith('image/')) {
const goutte = new Goutte([enregistrer.Les données], { taper: enregistrer.type de support });
const img = new Image();
img.src = URL.createObjectURL(goutte);
document.corps.appendChild(img);
}
else {
}
}
Pour écrire un enregistrement de type MIME, passez un dictionnaire de messages NDEF au NDEFWriter
écrivez ()
méthode. L'enregistrement de type MIME contenu dans le message NDEF est défini
comme un objet avec un recordType
clé définie sur "mime"
, à type de support
clé définie sur
le type MIME réel du contenu, et un Les données
clé définie sur un objet qui peut
être soit un ArrayBuffer
ou fournit une vue sur un ArrayBuffer
(par exemple
Uint8Array
, DataView
).
const encoder = new TextEncoder();
const Les données = {
firstname: "François",
lastname: "Beaufort"
};
const jsonRecord = {
recordType: "mime",
type de support: "application/json",
Les données: encoder.encode(JSON.stringify(Les données))
};const imageRecord = {
recordType: "mime",
type de support: "image/png",
Les données: attendre (attendre aller chercher("icon1.png")).arrayBuffer()
};
const writer = new NDEFWriter();
attendre writer.write({ records: [jsonRecord, imageRecord] });
Lire et écrire un enregistrement d'URL absolue
L'enregistrement de l'URL absolue Les données
peut être décodé avec un simple TextDecoder
.
une fonction readAbsoluteUrlRecord(enregistrer) {
console.assert(enregistrer.recordType === "URL-absolue");
const textDecoder = new TextDecoder();
console.Journal(`Absolute URL: ${textDecoder.decode(enregistrer.Les données)}`);
}
Pour écrire un enregistrement URL absolu, transmettez un dictionnaire de messages NDEF au
NDEFWriter écrivez ()
méthode. L'enregistrement d'URL absolue contenu dans le NDEF
le message est défini comme un objet avec un recordType
clé définie sur "URL-absolue"
et un Les données
clé définie sur la chaîne d'URL.
const absoluteUrlRecord = {
recordType: "URL-absolue",
Les données:"https://w3c.github.io/web-nfc/"
};const writer = new NDEFWriter();
attendre writer.write({ records: [absoluteUrlRecord] });
Lisez et rédigez un dossier d'affiche intelligent
Un enregistrement d'affiche intelligent (utilisé dans les publicités de magazines, les dépliants, les panneaux d'affichage,
etc.), décrit certains contenus Web comme un enregistrement NDEF contenant un NDEF
message comme charge utile. Appel record.toRecords ()
transformer Les données
à une liste
des enregistrements contenus dans l'enregistrement de l'affiche intelligente. Il doit avoir un enregistrement d'URL, un
enregistrement de texte pour le titre, un enregistrement de type MIME pour l'image, et certains Douane
enregistrements de type local tel que ": t"
, ": agir"
, et ": s"
respectivement pour le
le type, l'action et la taille de l'enregistrement de l'affiche intelligente.
Mise en garde:
Les enregistrements d'affiche intelligents seront pris en charge dans une version ultérieure de Chrome.
Les enregistrements de type local ne sont uniques que dans le contexte local du contenant
Enregistrement NDEF. Utilisez-les lorsque la signification des types n'a pas d'importance à l'extérieur
du contexte local de l'enregistrement contenant et lorsque l'utilisation du stockage est un
contrainte. Les noms d'enregistrement de type local commencent toujours par :
dans Web NFC (par exemple
": t"
, ": s"
, ": agir"
). Il s'agit de différencier un enregistrement de texte d'un enregistrement local
tapez un enregistrement de texte par exemple.
une fonction readSmartPosterRecord(smartPosterRecord) {
console.assert(enregistrer.recordType === "affiche intelligente");
laisser action, texte, URL;pour (const enregistrer of smartPosterRecord.toRecords()) {
si (enregistrer.recordType == "text") {
const decoder = new TextDecoder(enregistrer.codage);
texte = decoder.decode(enregistrer.Les données);
} else si (enregistrer.recordType == "url") {
const decoder = new TextDecoder();
URL = decoder.decode(enregistrer.Les données);
} else si (enregistrer.recordType == ": agir") {
action = enregistrer.Les données.getUint8(0);
} else {
}
}
switch (action) {
case 0:
break;
case 1:
break;
case 2:
break;
}
}
Pour écrire un enregistrement de poster intelligent, transmettez un message NDEF au NDEFWriter écrivez ()
méthode. L'enregistrement d'affiche intelligent contenu dans le message NDEF est défini comme un
objet avec un recordType
clé définie sur "affiche intelligente"
et un Les données
clé définie sur
un objet qui représente (encore une fois) un message NDEF contenu dans le
enregistrement de l'affiche intelligente.
const encoder = new TextEncoder();
const smartPosterRecord = {
recordType: "affiche intelligente",
Les données: {
records: [
{
recordType: "url",
Les données: "https://my.org/content/19911"
},
{
recordType: "text",
Les données: "Funny dance"
},
{
recordType: ": t",
Les données: encoder.encode("image/gif")
},
{
recordType: ": s",
Les données: new Uint32Array([4096])
},
{
recordType: ": agir",
Les données: new Uint8Array([0])
},
{
recordType: "mime",
type de support: "image/png",
Les données: attendre (attendre aller chercher("icon1.png")).arrayBuffer()
},
{
recordType: "mime",
type de support: "image/jpg",
Les données: attendre (attendre aller chercher("icon2.jpg")).arrayBuffer()
}
]
}
};const writer = new NDEFWriter();
attendre writer.write({ records: [smartPosterRecord] });
Lire et écrire un enregistrement de type externe
Pour créer des enregistrements définis par l'application, utilisez des enregistrements de type externe. Ceux-ci peuvent
contiennent un message NDEF en tant que charge utile accessible avec toRecords ()
. Leur
nom contient le nom de domaine de l'organisation émettrice, un deux-points et un type
nom comportant au moins un caractère, par exemple "example.com:foo"
.
une fonction readExternalTypeRecord(externalTypeRecord) {
pour (const enregistrer of externalTypeRecord.toRecords()) {
si (enregistrer.recordType == "text") {
const decoder = new TextDecoder(enregistrer.codage);
console.Journal(`Text: ${textDecoder.decode(enregistrer.Les données)} (${enregistrer.lang})`);
} else si (enregistrer.recordType == "url") {
const decoder = new TextDecoder();
console.Journal(`URL: ${decoder.decode(enregistrer.Les données)}`);
} else {
}
}
}
Pour écrire un enregistrement de type externe, transmettez un dictionnaire de messages NDEF au
NDEFWriter écrivez ()
méthode. L'enregistrement de type externe contenu dans le NDEF
le message est défini comme un objet avec un recordType
clé définie sur le nom du
type externe et un Les données
clé définie sur un objet qui représente un message NDEF
contenu dans l'enregistrement de type externe. Notez que le Les données
la clé peut aussi être
soit un ArrayBuffer
ou fournit une vue sur un ArrayBuffer
(par exemple
Uint8Array
, DataView
).
const externalTypeRecord = {
recordType: "example.game:a",
Les données: {
records: [
{
recordType: "url",
Les données: "https://example.game/42"
},
{
recordType: "text",
Les données: "Game context given here"
},
{
recordType: "mime",
type de support: "image/png",
Les données: attendre (attendre aller chercher("image.png")).arrayBuffer()
}
]
}
};const writer = new NDEFWriter();
writer.write({ records: [externalTypeRecord] });
Lire et écrire un enregistrement vide
Un enregistrement vide n'a pas de charge utile.
Pour écrire un enregistrement vide, transmettez un dictionnaire de messages NDEF au NDEFWriter
écrivez ()
méthode. L'enregistrement vide contenu dans le message NDEF est défini comme
un objet avec un recordType
clé définie sur "vider"
.
const emptyRecord = {
recordType: "vider"
};const writer = new NDEFWriter();
attendre writer.write({ records: [emptyRecord] });
Conseils de développement
Voici une liste de choses que j'aurais aimé savoir quand j'ai commencé à jouer avec Web NFC:
- Android gère nativement les balises NFC avant que Web NFC ne soit opérationnel.
- Vous pouvez trouver une icône NFC sur material.io.
- Utiliser l'enregistrement NDEF
va
pour identifier facilement un enregistrement en cas de besoin. - Une balise NFC non formatée qui prend en charge NDEF contient un seul enregistrement de type vide.
- Ecrire un enregistrement de l'application Android est facile, comme indiqué ci-dessous.
const encoder = new TextEncoder();
const aarRecord = {
recordType: "android.com:pkg",
Les données: encoder.encode("com.example.myapp")
};const writer = new NDEFWriter();
attendre writer.write({ records: [aarRecord] });
Démos
Essayez le échantillon officiel et découvrez quelques démos Web NFC sympas:
Retour
le Groupe communautaire Web NFC et le
L'équipe Chrome aimerait connaître vos opinions et vos expériences avec Web NFC.
Tell us about the API design
Y a-t-il quelque chose dans l'API qui ne fonctionne pas comme prévu? Ou y a-t-il
méthodes ou propriétés manquantes dont vous avez besoin pour mettre en œuvre votre idée?
Déposer un problème de spécification sur le Dépôt Web NFC GitHub ou ajoutez vos pensées à
un problème existant.
Signaler un problème avec la mise en œuvre
Did you find a bug with Chrome’s implementation? Or is the implementation
différent de la spécification?
Déposer un bogue sur https://new.crbug.com. Assurez-vous d'inclure autant
détails que vous pouvez, fournissez des instructions simples pour reproduire le bogue et ayez
Composants mis à Clignoter> NFC
. Problème fonctionne très bien pour
partager des repros rapides et faciles.
Montrez votre soutien
Envisagez-vous d'utiliser Web NFC? Votre assistance publique aide l'équipe Chrome
hiérarchiser les fonctionnalités et montrer aux autres fournisseurs de navigateurs à quel point il est essentiel de
Encouragez-les.
Send a Tweet à @ChromiumDev et dites-nous où et comment
vous l'utilisez.
Liens utiles
Remerciements
Un grand merci au les gens d'Intel for implementing Web NFC. Google Chrome
dépend d'une communauté de committers travaillant ensemble pour déplacer le Chromium
projet en avant. Tous les committer Chromium ne sont pas des Googler, et ces
les contributeurs méritent une reconnaissance spéciale!