NDEFReader

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

NDEFReaderウェブ NFC APIのインターフェイスで、互換性のある NFC 機器、たとえば NDEF に対応している NFC タグなどがリーダーの磁気誘導範囲にあるときに、これらの機器からデータを読み取ったり、書き込んだりするために使用されます。

EventTarget NDEFReader

コンストラクター

NDEFReader() Experimental

新しい NDEFReader オブジェクトです。

インスタンスメソッド

NDEFReader インターフェイスは、親インターフェイスである EventTarget からメソッドを継承しています。

NDEFReader.scan() Experimental

読み取り機器をアクティブにして Promise を返します。このプロミスは NFC タグの読み取り操作がスケジュールされたときに解決し、ハードウェアまたは権限のエラーが発生したときは拒否されます。このメソッドは、 "nfc" の権限が事前に許可されていない場合は、許可を問い合わせるプロンプトを起動します。

NDEFReader.write() Experimental

NDEF メッセージをタグに書き込む操作を行い、 Promise を返します。このプロミスは、タグへのメッセージの書き込みが完了した場合は解決し、ハードウェアまたは権限のエラーが発生したときは拒否されます。このメソッドは、 "nfc" の権限が事前に許可されていない場合は、許可を問い合わせるプロンプトを起動します。

イベント

親である EventTarget からプロパティを継承しています。

reading Experimental

互換性のある NFC 機器から読み取りができるようになったときに発行されます。

readingerror Experimental

タグが読み取り装置の近くにあるにもかかわらず、読み取れなかった場合に発行されます。

書き込み前の読み取りを扱う

以下の例では、一般的な読み取りハンドラーと、単一の書き込みに特化したハンドラーの間で調整する方法を示しています。書き込みを行うためには、タグを発見し、読み取る必要があります。これにより、実際に書き込みたいタグであるかどうかをチェックすることができます。そのため、読み取りイベントから write() を呼び出すことが推奨されます。

js
const ndef = new NDEFReader();
let ignoreRead = false;

ndef.onreading = (event) => {
  if (ignoreRead) {
    return; // write pending, ignore read.
  }

  console.log("We read a tag, but not during pending write!");
};

function write(data) {
  ignoreRead = true;
  return new Promise((resolve, reject) => {
    ndef.addEventListener(
      "reading",
      (event) => {
        // Check if we want to write to this tag, or reject.
        ndef
          .write(data)
          .then(resolve, reject)
          .finally(() => (ignoreRead = false));
      },
      { once: true },
    );
  });
}

await ndef.scan();
try {
  await write("Hello World");
  console.log("We wrote to a tag!");
} catch (err) {
  console.error("Something went wrong", err);
}

仕様書

Specification
Web NFC API
# the-ndefreader-object

ブラウザーの互換性

BCD tables only load in the browser