Oct. 7, 2019

Multi-Window-Unterstützung in deiner iPad App

Native Entwicklung für iPadOS

Letzten Monat veröffentlichte Apple iPadOS, das erste dedizierte Betriebssystem für das iPad. Es unterscheidet sich von iOS durch seine Unterstützung für den größeren iPad-Bildschirm, einschliesslich Multi-/Splitscreen-Fenstern. Ich entwickle Apps und es war an der Zeit, die neuen Möglichkeiten von iPadOS zu nutzen.

Seit 2016 benutze ich ein iPad als meinen Hauptcomputer, es ist ein großartiger mobiler Computer. Das Betriebssystem ist jedoch anders als das der meisten Computer. iPadOS basiert auf iOS, das auf Apples beliebtem Mobiltelefon, dem iPhone, läuft. Dies macht das iPad im täglichen Gebrauch aufgrund der Art und Weise, wie es Apps ausführt, ein wenig anders.

iPad Pro als mein Hauptcomputer, verbunden mit einem Terminal über Blink
iPad Pro als mein Hauptcomputer, verbunden mit einem Terminal über Blink

Aufgrund der Smartphone-Wurzeln von iPadOS behandelt das Betriebssystem Apps wie ein iPhone: Apps laufen im Vollbildmodus und konzentrieren sich auf eine einzelne Aufgabe. Die Leute lieben das iPad dafür, da es eine großartige Möglichkeit ist, sich auf eine einzige Sache zu konzentrieren.

Unterstützung mehrerer Fenster für das iPad

Es gibt Situationen, in denen das gleichzeitige Ausführen mehrerer Fenster sehr nützlich sein kann, und hier hat Apple iPadOS verbessert, als es die Unterstützung für die Ausführung von Apps nebeneinander eingeführt hat.

Mehrere Fenster auf dem iPad, zwei Instanzen derselben App gleichzeitig ausführen
Mehrere Fenster auf dem iPad, zwei Instanzen derselben App gleichzeitig ausführen

Selbst wenn Sie an einer einzelnen Aufgabe arbeiten, ist die Unterstützung für mehrere Fenster sehr nützlich, da Sie so mehrere Instanzen derselben App gleichzeitig ausführen können. Dies ermöglicht verschiedene Anwendungsfälle, in denen Sie Inhalte aus verschiedenen Blickwinkeln betrachten und bearbeiten können. Wie zum Beispiel das Vergleichen von zwei verschiedenen Monaten in Ihrem Kalender, das Bearbeiten eines langen Dokuments oder das gleichzeitige Betrachten der Karte in verschiedenen Maßstäben.

Vergleich verschiedener Monate in der Kalender-App
Vergleich verschiedener Monate in der Kalender-App
Die Karte gleichzeitig in verschiedenen Maßstäben betrachten
Die Karte gleichzeitig in verschiedenen Maßstäben betrachten

Designabsicht

Als Apple die Unterstützung für mehrere Fenster auf dem iPad einführte, wurde dies unter Berücksichtigung der mobilen Wurzeln von iPadOS entwickelt. Im Gegensatz zu herkömmlichen PC-Apps, bei denen komplexe Software standardmäßig über mehrere verschiedene Fenster (und Bereiche) laufen kann, behält iPadOS die Anforderung bei, dass eine App alles von einem einzigen Fenster aus erledigen können muss.

Es ist eine Designanforderung auf dem iPad, dass alle App-Fenster von der gleichen Art sind und jedes einzelne alles in der Anwendung tun kann. Der Benutzer könnte alles von einem Fenster aus erledigen, wenn er möchte. Er sollte mehrere Fenster nur dann erstellen können, wenn er es für nützlich hält, aber die App sollte dies niemals erfordern. Dies erleichtert die einfache Ausführung von Apps unter iPadOS, Sie können Apps weiterhin im Vollbildmodus wie auf einem Smartphone verwenden.

Ken Ferry erklärt das Design der Mehrfensterunterstützung für iOS während der WWDC 2019
Ken Ferry erklärt das Design der Mehrfensterunterstützung für iOS während der WWDC 2019

App-Lebenszyklus (und Code-Änderungen)

Aus technischer Sicht führte Apple UIWindowScene mit einer entsprechenden UISceneSession-Abstraktion in der UI-Struktur ein. Sie befindet sich zwischen UIScreen und UIWindow.

Konzeptionelle Übersicht der UI-Struktur von iPadOS, erklärt von Steve Holt während der WWDC 2019
Konzeptionelle Übersicht der UI-Struktur von iPadOS, erklärt von Steve Holt während der WWDC 2019
Konzeptionelle Übersicht über UISceneSession, Bereitstellung des persistenten Schnittstellenzustands zwischen App-Darstellungen (WWDC 2019, Steve Holt, Apple)
Konzeptionelle Übersicht über UISceneSession, Bereitstellung des persistenten Schnittstellenzustands zwischen App-Darstellungen (WWDC 2019, Steve Holt, Apple)

Wenn iPadOS (und iOS) mehrere Apps ausführen, ist es möglich, dass das Betriebssystem eine App im Hintergrund schließt, um Speicherplatz und Energie zu sparen. Dies ist beabsichtigt: Es hält das Betriebssystem schnell und schont den Akku.

Aus Sicht des App-Lebenszyklus bedeutet dies, dass Sie beim Start Ihrer App überprüfen müssen, ob sie zuvor ausgeführt wurde. Wenn eine UISceneSession vorhanden ist, sollte die App sich wieder mit ihr verbinden, um dem Benutzer einen persistenten Schnittstellenzustand zu bieten. Wenn es richtig gemacht wird, wird der Benutzer nicht bemerken, dass die App im Hintergrund unterbrochen wurde.

Funktionale Rollen im Lebenszyklus einer iPadOS-App (WWDC 2019, Steve Holt, Apple)
Funktionale Rollen im Lebenszyklus einer iPadOS-App (WWDC 2019, Steve Holt, Apple)

Wenn Sie die neuen UIWindowScene- (und UISceneSession-) Konzepte in Ihrer App übernehmen, können Sie die neuen Multi-Window-Funktionen des iPad nutzen. Aber es gibt noch eine weitere Sache: Apple plant, iOS- und iPadOS-Apps auf den Mac zu bringen. Mit den neuen UI-Konzepten wird Ihre App auch unter macOS hervorragend laufen!

Dieselbe App auf iOS/iPadOS und macOS
Dieselbe App auf iOS/iPadOS und macOS

In der Praxis

Als Entwickler hatte ich wenig Schwierigkeiten, die neuen UI-Konzepte in meinen Apps zu implementieren. Mit relativ geringem Aufwand können Sie viele verschiedene Anwendungsfälle ermöglichen, bei denen dieselbe App dem Benutzer mehr Leistung bietet.

Verwenden meiner
Verwenden meiner "Lemmid (Content) Manager"-App zum Bearbeiten eines Blogbeitrags mit gleichzeitiger Anzeige der Ergebnisse
Bearbeiten eines DNS-Eintrags mit meiner
Bearbeiten eines DNS-Eintrags mit meiner "Lemmid Domain"-App unter Beibehaltung des Kontexts der gesamten DNS-Zone
Verwenden meiner
Verwenden meiner "Lemmid Count"-App zur Analyse von Aufrufen und Traffic eines Artikels auf willem.com
Webentwicklung auf dem iPad mit gleichzeitiger Verwendung von Inspect und Blink
Webentwicklung auf dem iPad mit gleichzeitiger Verwendung von Inspect und Blink

Fazit

Apple hat die Unterstützung für mehrere Fenster auf dem iPad nicht überstürzt, sondern sich Zeit genommen, sie gut zu gestalten. Wenn Sie die neuen Konzepte übernehmen, wird Ihre App für die Benutzer leistungsfähiger sein.

Es ist immer eine gute Idee, sich die Zeit zu nehmen, die zugrunde liegenden Schnittstellenkonzepte zu verstehen, bevor Sie mit der Entwicklung beginnen. Machen Sie es richtig (und gut) statt schnell (und dumm)!