Zum Inhalt springen
Sprache: DE

Erreicht ein plattformübergreifendes Rahmenwerk jede NFC-Funktion?

Nicht mehr, als sein NFC-Plugin kapselt. Rahmenwerke wie Flutter und React Native erreichen die Schnittstellen der Plattform über nativen Code, ein Plugin stellt also bereit, was die Schnittstellen von Android und iOS anbieten, und nur das, was sein Autor gekapselt hat. Die Deklarationen bleiben in den nativen Projekten.

Ein Plugin ist nativer Code

Plattformübergreifende Rahmenwerke erreichen die Schnittstellen der Plattform über nativen Code. Flutter dokumentiert Plattformkanäle, um die Schnittstellen einer Plattform aus Kotlin oder Java unter Android und aus Swift oder Objective-C unter iOS aufzurufen, und React Native dokumentiert native Module für Schnittstellen der Plattform, die weder es selbst noch eine vorhandene Bibliothek bereitstellt.

Ein NFC-Plugin für eines von beiden ist Code dieser Art. Unter Android ruft es die Technologieklassen und die Zustellung auf, die diese Rubrik behandelt, und unter iOS ruft es Core NFC auf. Es kann bereitstellen, was diese Schnittstellen anbieten, und nur den Teil, den sein Autor gekapselt hat.

Die Deklarationen bleiben nativ

Ein Rahmenwerk nimmt nicht weg, was jede Plattform verlangt. Die NFC-Berechtigung, die Absichtsfilter und, ab Android 17, die Berechtigung für die Zustellung an der empfangenden Aktivität leben alle im Android-Manifest, wie die Seite zum Manifest beschreibt.

Unter iOS gehören die Fähigkeit zum Lesen und ihre Nutzungsbeschreibung zu dem iOS-Projekt, das das Rahmenwerk baut, genau wie bei einer in Swift geschriebenen Anwendung.

Wo die beiden Plattformen auseinandergehen

Eine einzige Schnittstelle über zwei Plattformen muss entscheiden, was sie mit dem anfängt, was nur eine von beiden anbietet. Android kann eine Anwendung über sein Manifest von einem Tag aus starten, zwischen Lesemodus und Vordergrund-Zustellung wählen und über Host Card Emulation eine Karte emulieren; iOS liest innerhalb einer Sitzung, die das System anzeigt.

Ein Plugin stellt entweder nur den gemeinsamen Teil bereit, oder es fügt Aufrufe für eine bestimmte Plattform hinzu, bei denen der geteilte Code verzweigen muss. Das erste verbirgt die Möglichkeiten von Android, das zweite bringt die zwei Codepfade zurück, die das Rahmenwerk abschaffen sollte.

Anwendungen in einer Webansicht

Rahmenwerke, die die Anwendung in einer Webansicht darstellen, sind ein gesonderter Fall. Der Eintrag im Plattformstatus von Chrome führt Web NFC nur für Chrome unter Android auf, ohne Unterstützung in der WebView von Android, sodass eine Seite, die in Chrome arbeitet, in einer solchen Anwendung nichts bekommt.

Diese Anwendungen erreichen NFC ebenfalls über ein natives Plugin, was ihnen dieselben Grenzen lässt wie den Rahmenwerken darüber.

Was vor der Wahl zu prüfen ist

Führen Sie die Aufrufe auf, die das Vorhaben auf jeder Plattform braucht, und prüfen Sie dann jeden einzelnen am Plugin, vor der ersten Zeile Code: NDEF lesen und schreiben, sperren, rohe Befehle je Technologie, die Anwendung von einem Tag aus starten, und die Kartenemulation, wo sie zählt.

Prüfen Sie danach auf wirklichen Telefonen beider Plattformen. Das Feld verhält sich gleich, welche Sprache es auch aufgerufen hat, und die Fehlschläge, auf die es ankommt, ein Tag, der mitten im Schreiben verschwindet, oder ein Chip, der einen Befehl verweigert, zeigen sich nur dort.

Häufige Fragen

Nimmt ein Rahmenwerk die Berechtigung unter iOS weg?

Nein. Die Berechtigung gehört zu dem iOS-Projekt, das das Rahmenwerk baut, wie bei einer in Swift geschriebenen Anwendung, und Core NFC verlangt sie, bevor es eine Sitzung öffnet.

Kann eine hybride Anwendung Web NFC in ihrer Webansicht benutzen?

Nein. Der Eintrag im Plattformstatus von Chrome führt keine Unterstützung in der WebView auf, eine hybride Anwendung erreicht NFC also über ein natives Plugin.

Stellt ein Plugin Host Card Emulation bereit?

Nur wenn sein Autor sie gekapselt hat, und nur unter Android, wo die Plattform sie Anwendungen anbietet. Die Kartenemulation auf dem iPhone hängt an Apples Bedingungen und nicht am Plugin.

Was ist an einem Plugin zuerst zu prüfen?

Ob jeder Aufruf, den das Vorhaben braucht, auf jeder Plattform vorhanden ist: NDEF lesen, schreiben und sperren, rohe Befehle, die Anwendung von einem Tag aus starten, und die Kartenemulation, wenn sie zählt. Ein fehlender Aufruf ist billiger vor dem Code zu finden.