Zum Inhalt springen
Sprache: DE

Was ist TNF, und warum ändert es, was bei einer Berührung geschieht?

TNF, das Typnamensfeld, sind drei Bit, die in jedem NDEF-Datensatz vorkommen. Es sagt einem Lesegerät, wie das folgende Typfeld zu deuten ist, und damit, welcher Art die Nutzlast ist. Setzen Sie es falsch, ist der Tag vollkommen gültig, vollkommen lesbar, und tut überhaupt nichts.

Drei Bit mit einer großen Aufgabe

Android sagt es klar: Ein logischer NDEF-Datensatz enthält immer ein drei Bit langes TNF, das den Rest des Datensatzes grob typisiert. Es beschreibt nicht die Nutzlast unmittelbar, es beschreibt, wie das Typfeld zu lesen ist, das die Nutzlast beschreibt.

Eine Ebene der Umleitung, drei Bit breit, und sie entscheidet, ob eine Berührung Ihres Tags einen Browser öffnet oder nichts tut.

Die Werte und was sie bedeuten

Die Android-Referenz führt sieben Konstanten auf, was die vollständige Menge ist.

TNF-Werte und was jeder erklärt, nach den Android-NdefRecord-Konstanten
WertDas Typfeld enthältTypischer Einsatz
Well knownEinen vom NFC Forum festgelegten TypURLs, Text, die meisten Alltagstags
MIME mediaEinen MIME-TypKontaktkarten, strukturierte Nutzlasten
Absolute URIEinen absoluten URI nach RFC 3986Selten, leicht mit dem Well-known-URI-Typ zu verwechseln
External typeEinen externen TypnamenAnwendungseigene Datensätze, auch zum Starten von Apps
EmptyNichts, der Datensatz ist leerEin formatierter Tag ohne Inhalt
UnknownNichts BrauchbaresNutzlast ohne erklärten Typ
UnchangedNichts, dient dem StückelnFortsetzung einer geteilten Nutzlast

Was geschieht, wenn es falsch ist

Nichts Dramatisches, und darin liegt das Problem. Der Tag liest sich, der Datensatz wird gefunden, und die Plattform kommt zu dem Schluss, dass sie nichts hat, wonach sie handeln könnte.

Der häufigste Fehler ist, eine Webadresse als Absolute URI zu schreiben, wo die Plattform einen Well-known-URI-Datensatz erwartet. Beides ist zulässig, beides hält dieselbe Adresse, und nur eines löst das Verhalten aus, das man erwartet.

Der zweithäufigste ist, eine URL als einfachen Text zu schreiben. Die Adresse ist in einem Lesewerkzeug sichtbar, der Tag sieht also richtig aus, und kein Browser öffnet sich, weil ein Textdatensatz keine Aufforderung ist, irgendwohin zu gehen.

Was das in der Praxis heißt

Nehmen Sie ein Werkzeug, das Inhaltsarten beim Namen anbietet, statt Sie Felder setzen zu lassen. „URL“ zu wählen und eine Adresse einzutippen ergibt einen richtigen Datensatz. „Text“ zu wählen und eine Adresse einzutippen ergibt einen gültigen Tag, der nichts tut.

Wenn ein Tag sich liest und nicht handelt, prüfen Sie den Datensatztyp vor allem anderen. Er ist das Erste, was zu verdächtigen ist, und fast nie das, worauf man sieht, denn der Inhalt steht da und sieht in Ordnung aus.

Android stellt Hilfsmethoden bereit, um wohlgeformte Datensätze zu bauen, und seine Dokumentation empfiehlt, sie zu nutzen, statt Felder von Hand zusammenzusetzen. Dieser Rat lässt sich verallgemeinern: Lassen Sie das Werkzeug das TNF setzen.

Häufige Fragen

Welches TNF nehme ich für eine Webadresse?

Den Well-known-Typ für URIs, den jedes Werkzeug schlicht als URL-Option anbietet. Absolute URI ist ein anderer Wert, der richtig aussieht und sich auf beiden Plattformen nicht gleich verhält.

Kann ich das TNF eines vorhandenen Datensatzes ändern?

Nicht an Ort und Stelle. Sie schreiben den Datensatz mit dem richtigen Typ neu, was auf einem offenen Tag schlicht ein weiterer Schreibvorgang ist. Auf einem gesperrten Tag geht es gar nicht.

Warum wird mein Textdatensatz richtig angezeigt und tut nichts?

Weil ein Textdatensatz Inhalt ist und keine Anweisung. Die Plattform zeigt ihn an oder übergeht ihn, und nichts daran fordert das Telefon auf, irgendetwas zu öffnen.

Wirkt sich das TNF darauf aus, wie viel Platz ein Datensatz braucht?

Am Rande, über die Länge des Typfelds, die es nach sich zieht. Die Well-known-Typen sind absichtlich kurz, was einer der Gründe ist, sie auf kleinen Tags vorzuziehen.