Was ist eine NDEF-Nachricht, und wie ist sie aufgebaut?
Eine NDEF-Nachricht ist eine geordnete Folge von Datensätzen. Jeder Datensatz trägt einen kurzen Kopf, der beschreibt, welcher Art seine Nutzlast ist, gefolgt von der Nutzlast selbst. Dieser Kopf ist der ganze Sinn: Er lässt ein Lesegerät, das den Tag nie gesehen hat, entscheiden, was mit dem Gefundenen zu tun ist.
Eine Nachricht ist eine Liste von Datensätzen
Ein Tag hält eine NDEF-Nachricht. Diese Nachricht enthält einen oder mehrere Datensätze in festgelegter Reihenfolge, und Kennzeichen markieren, welcher Datensatz der erste und welcher der letzte ist, damit ein Lesegerät weiß, wo die Nachricht beginnt und endet.
Die meisten Tags im Feld halten genau einen Datensatz. Mehrere sind möglich und kosten sowohl Platz als auch Lesezeit, ein Tausch, den man besser bewusst eingeht als aus Gewohnheit.
Was ein Datensatz enthält
Android beschreibt den Aufbau genau in seiner NdefRecord-Referenz, der klarsten frei zugänglichen Darstellung.
Ein Datensatz trägt immer ein drei Bit langes Typnamensfeld, meist TNF geschrieben, das den Rest des Datensatzes grob typisiert. Danach folgen drei Felder veränderlicher Länge: ein Typ, der die Nutzlast genau typisiert, eine wahlfreie Kennung, die in der Praxis selten benutzt wird, und die Nutzlast selbst.
| Feld | Immer vorhanden | Wozu es dient |
|---|---|---|
| TNF | Ja, drei Bit | Grobe Typisierung, sagt dem Lesegerät, wie das Typfeld zu deuten ist |
| Typ | Veränderliche Länge | Genaue Typisierung, etwa ein URI-Schema oder ein MIME-Typ |
| Id | Wahlfrei | Kennungsdaten, wenig gebräuchlich |
| Nutzlast | Veränderliche Länge | Der eigentliche Inhalt |
Warum der Kopf mehr zählt als die Nutzlast
Zwei Tags können dieselben Nutzlastbytes halten und sich völlig verschieden verhalten, weil der eine sie als Webadresse erklärt und der andere als einfachen Text.
Der erste öffnet einen Browser. Der zweite wird angezeigt oder ganz übergangen, je nach Plattform. An den Bytes hat sich nichts geändert, und am Ergebnis alles.
Das ist das Nützlichste, was es über NDEF zu verstehen gibt, und es erklärt die meisten Fälle eines Tags, der sich richtig liest und nichts tut. Der Inhalt war in Ordnung. Die Erklärung war falsch.
Was Sie in einem Werkzeug sehen
Ein Lesewerkzeug zeigt üblicherweise die Zahl der Datensätze und dann je Datensatz seinen Typ, seine Größe und seinen Inhalt. Zeigt ein Datensatz eine Größe und keinen erkennbaren Inhalt, ist die Nutzlast da und der Typ etwas, das das Werkzeug nicht decodiert.
Eine leere Nachricht ist ein gültiger Zustand und kein Fehler. Ein formatierter Tag, auf den nichts geschrieben wurde, hält eine Nachricht mit einem einzigen leeren Datensatz, weshalb ein frischer Tag sich erfolgreich liest und nichts tut.
Häufige Fragen
Kann ein Tag mehr als eine NDEF-Nachricht tragen?
Eine Nachricht je Tag, mit so vielen Datensätzen, wie hineinpassen. Die Nachricht ist der Behälter und die Datensätze sind ihr Inhalt, die Frage nach mehreren Nachrichten stellt sich in der Praxis also nicht.
Zählt die Reihenfolge der Datensätze?
Ja, und mehr als erwartet, denn die Plattformen handeln in der Regel nach dem ersten Datensatz, den sie erkennen. Einen Rückfall vor den Datensatz zu setzen, den Sie eigentlich auslösen wollen, ist ein häufiger und vermeidbarer Fehler.
Ist ein leerer Tag dasselbe wie ein unformatierter Tag?
Nein. Ein unformatierter Tag hat keine Struktur, die ein allgemeines Lesegerät nutzen kann. Ein leerer formatierter Tag hat die Struktur und keinen Inhalt, und der Unterschied zählt, weil nur der zweite bereit ist, normal beschrieben zu werden.
Muss ich das verstehen, um einen Tag zu beschreiben?
Nicht, um mit einem Werkzeug eine URL zu schreiben, das nimmt es Ihnen ab. Nötig wird es in dem Moment, in dem sich etwas unerwartet verhält, denn fast jede Überraschung führt auf einen Datensatztyp zurück und nicht auf den Inhalt.