Zum Inhalt springen
Sprache: DE

Wie liest und schreibt man NFC aus eigenem Code?

Über die Schnittstelle der Plattform, auf der der Code läuft: das NFC-Framework unter Android, Core NFC auf dem iPhone, Web NFC in Chrome für Android und PC/SC für ein Lesegerät am Rechner. Jede entscheidet, was ein Programm an einen Tag senden darf, wann es auf einen warten darf, und was es vorher deklarieren muss.

Vier Zugänge, vier Regelwerke

Unter Android übergibt das NFC-Framework einen gefundenen Tag an eine Aktivität, die NDEF lesen und schreiben, rohe Befehle an den Tag senden oder über Host Card Emulation einem Lesegerät antworten kann.

Auf dem iPhone lässt Core NFC eine Anwendung innerhalb einer Sitzung lesen, die das System anzeigt und beendet, das Modell, das diese Seite auf der Seite zum Lesefenster beschreibt.

Im Browser liest und schreibt Web NFC NDEF aus einer Webseite heraus. Chrome dokumentiert es unter Android ab Chrome 89 und beschränkt es absichtlich auf NDEF: keine rohen Befehle, keine Kartenemulation.

Am Rechner wird ein USB-Lesegerät über PC/SC erreicht, die Spezifikation, mit der Rechner mit Chipkartenlesegeräten sprechen, und das Programm spricht über das Lesegerät mit dem Tag statt über ein Telefon.

Sie unterscheiden sich darin, was sie an einen Tag senden können, und noch stärker darin, wann sie lauschen dürfen. Dieser zweite Unterschied ist der, den eine Portierung von einer Plattform auf die andere falsch macht.

Was Code deklarieren muss

Keine von ihnen erreicht die Funkschnittstelle unangemeldet. Eine Android-Anwendung fordert android.permission.NFC an, die die Referenz der Berechtigungen als normal einstuft, sodass sie bei der Installation ohne Nachfrage erteilt wird.

Ab Android 17 muss eine Anwendung, die ein neueres SDK anvisiert, außerdem jede Aktivität, die Tags empfängt, mit android.permission.DISPATCH_NFC_MESSAGE schützen, so der Leitfaden zu den NFC-Grundlagen, damit nur der NFC-Dienst sie starten kann.

Eine iPhone-Anwendung deklariert die Fähigkeit zum Lesen von Tags und eine Nutzungsbeschreibung, bevor Core NFC eine Sitzung öffnet, und eine Tag-Sitzung, die ISO-7816-Tags liest, führt außerdem die Anwendungskennungen auf, die sie auswählen wird. Die Seite zu den Deklarationen behandelt alle drei.

Eine Webseite braucht einen sicheren Ursprung, einen Rahmen der obersten Ebene und eine Geste der Besucherin oder des Besuchers, etwa einen Druck auf eine Schaltfläche, bevor Chrome nach der Berechtigung nfc fragt.

Was das Feld mit dem Code macht

Ein Tag ist so lange da, wie eine Hand ihn ruhig hält, und der Code läuft in diesem Fenster. Die Referenz zu TagTechnology kennzeichnet jeden Austausch als blockierend und verbietet ihn im Hauptthread, und ein Tag, der mitten im Austausch verschwindet, löst TagLostException aus.

Tests am Schreibtisch verbergen das. Das Telefon liegt flach, der Tag bewegt sich nicht, und das Fenster schließt sich nie. Derselbe Code in der Hand eines Besuchers trifft auf ein Fenster, das auf halbem Weg zugeht, und Code, der diesen Fall nie erlebt hat, behandelt ihn als Absturz.

Der Tag ist auch nicht mehr das, was er vor einer Sekunde war. Android hält fest, was es beim Erkennen gelesen hat, und aktualisiert diese Werte nie, sodass ein Programm, das schreibt und dann der gemerkten Kopie vertraut, seine eigene Annahme zurückliest.

Prüfen, was der Code geschrieben hat

Lesen Sie das Ergebnis mit einem Werkzeug zurück, das nicht der Code ist, der geprüft wird. Ein Fehler, der den falschen Datensatztyp schreibt, kann ihn als den richtigen zurücklesen, weil derselbe Fehler ihn dekodiert.

NFC Tools, herausgegeben von demselben Unternehmen wie diese Seite, zeigt die Datensätze, die ein Tag trägt, und die Technologien, die er meldet, was die meisten Meinungsverschiedenheiten zwischen einem Programm und seinem Autor klärt.

Lesen Sie den Tag dann auf der anderen Plattform. Eine Nachricht, die ein Android-Parser annimmt, kann auf einem iPhone trotzdem nichts bewirken, eine Plattformentscheidung, die die Seite zu den iOS-Datensätzen behandelt.

Alle Leitfäden dieser Rubrik

Android

iOS und Core NFC

Web NFC und plattformübergreifend

Unterhalb von NDEF

Kartenemulation im Code

Lesegeräte und Geräte

Testen und Fehlersuche

Häufige Fragen

Welche Plattform sollte ein erstes NFC-Projekt anvisieren?

Android, wenn das Projekt mit dem Tag selbst sprechen muss. Sein Framework erreicht NDEF, rohe Befehle und Kartenemulation, und es lässt sich ohne Sitzung testen, die das System anzeigt.

Braucht das Lesen von Tags eine Berechtigungsabfrage?

Unter Android nicht, wo die NFC-Berechtigung eine normale ist und bei der Installation erteilt wird. Web NFC fragt die Besucherin oder den Besucher, und iOS zeigt bei jeder Sitzung ein Fenster.

Lässt sich NFC-Code ohne Telefon testen?

Das Zerlegen und Bauen von NDEF-Nachrichten schon. Alles, was vom Feld abhängt, etwa Zeitverhalten oder ein Tag, der verschwindet, braucht echte Hardware.

Woher kommen Befehle, die nur einen Chip betreffen?

Aus dem Datenblatt dieses Chips. Diese Rubrik behandelt die Befehle, die die Tag-Typen des NFC Forum definieren, und überlässt den Rest dem Hersteller.