Zum Inhalt springen
Sprache: DE

Wie empfängt eine iOS-Anwendung einen im Hintergrund gelesenen Tag?

Über einen universellen Link. Auf iPhones, die das Lesen im Hintergrund beherrschen, liest das System den Tag, nimmt den ersten URI-Datensatz und zeigt eine Mitteilung. Wird sie angetippt, öffnet sich die Anwendung, die den Link beansprucht, und erhält die ganze NDEF-Nachricht in einer Aktivität. Eigene URL-Schemata arbeiten nicht, und ohne die Anwendung öffnet der Link in Safari.

Was das System tut

Apples Artikel zum Lesen im Hintergrund beschreibt den Ablauf. Das System liest den Tag, ohne dass eine Anwendung offen ist, zeigt für jeden neuen Tag eine Mitteilung, und übergibt die Daten erst, nachdem sie angetippt wurde; auf einem gesperrten iPhone bittet es zuerst um das Entsperren.

Es sucht eine einzige Sache in der Nachricht: einen URI-Datensatz, vom wohlbekannten Typ U. Trägt die Nachricht mehrere, nimmt das System den ersten, und dieser Datensatz muss entweder einen universellen Link enthalten oder eines der URL-Schemata, die es unterstützt.

Apple hält fest, dass das iPhone XS und neuere Modelle das Lesen von Tags im Hintergrund beherrschen. Auf älteren Modellen muss die Anwendung das Lesen aus der Anwendung heraus anbieten, was der Artikel in jedem Fall empfiehlt.

Der Artikel ist deutlich: Das Lesen im Hintergrund unterstützt keine eigenen URL-Schemata, und Anwendungen sollen stattdessen universelle Links benutzen. Die Schemata, die es behandelt, gehören dem System: Weblinks, Mail, SMS, Telefon, FaceTime, Karten und die Einrichtung von HomeKit-Zubehör.

Der Tag trägt also eine https-Adresse auf einer Domain, die die Anwendung beansprucht. Die Anwendung schaltet die zugehörigen Domains ein und führt diese Domain dort auf, was dem Projekt und der App ID die Berechtigung für zugehörige Domains hinzufügt.

Beansprucht keine installierte Anwendung den Link, öffnet das System ihn in Safari. Das ist der Rückfallweg, den die Seite zum Öffnen einer Anwendung zu entwerfen empfiehlt: eine Seite, die auch ohne die Anwendung Sinn ergibt.

Was die Anwendung erhält

Das System startet die Anwendung oder holt sie in den Vordergrund und ruft application(_:continue:restorationHandler:) mit einer NSUserActivity vom Typ NSUserActivityTypeBrowsingWeb auf. Die vom Tag gelesene Nachricht steht in deren Eigenschaft ndefMessagePayload.

Prüfen Sie, dass die Aktivität von einem Tag kommt. Für Aktivitäten, die nicht vom Lesen im Hintergrund stammen, trägt die Nutzlast laut dem Artikel einen einzigen Datensatz vom leeren Typ, sodass eine Anwendung, die ihre universellen Links auch anderswoher öffnet, beide auseinanderhalten kann.

Es kommt die ganze Nachricht an, nicht nur der Link. Weitere Datensätze auf dem Tag, ein Text oder eine MIME-Nutzlast nach der URI, stehen der Anwendung zur Verfügung, sobald sie offen ist.

Wann es nicht geschieht

Das Lesen im Hintergrund läuft nur, solange das iPhone benutzt wird, und der Artikel führt Augenblicke auf, in denen es selbst bei eingeschaltetem Bildschirm nicht zur Verfügung steht: vor dem ersten Entsperren, während einer Lesesitzung von Core NFC, während Apple Pay Wallet benutzt wird, während die Kamera benutzt wird, und im Flugmodus.

Eine Anwendung, die mit ihrer eigenen Sitzung liest, blockiert das Lesen im Hintergrund also so lange, wie die Sitzung dauert. Die Seite der Nutzenden dieser Bedingungen steht auf der Seite zum Lesen im Hintergrund.

Häufige Fragen

Kann ein eigenes URL-Schema meine Anwendung von einem Tag aus öffnen?

Nicht über das Lesen im Hintergrund, das laut Apples Dokumentation keine eigenen URL-Schemata unterstützt. Nehmen Sie einen universellen Link auf einer Domain, die die Anwendung beansprucht.

Öffnet sich die Anwendung, ohne dass jemand etwas antippt?

Nein. Das System zeigt für jeden neuen Tag eine Mitteilung und übergibt die Daten erst nach dem Antippen, wobei es bei gesperrtem Telefon zuerst um das Entsperren bittet.

Welchen Datensatz nimmt das System?

Den ersten URI-Datensatz der Nachricht, vom wohlbekannten Typ U. Die ganze Nachricht wird der Anwendung dann in der Aktivität übergeben.

Was geschieht, wenn die Anwendung nicht installiert ist?

Das System öffnet den Link in Safari, die Adresse sollte also auf eine Seite führen, die auch ohne die Anwendung Sinn ergibt.