Multitasking für iPad in Xamarin.iOS

iOS 9 unterstützt zwei Apps, die gleichzeitig ausgeführt werden, mithilfe von Folie über oder geteilter Ansicht. Es unterstützt auch die Videowiedergabe von Picture-In-Picture.

Split Screen ExamplePicture-in-Picture Example

iOS 9 bietet Multitaskingunterstützung für die gleichzeitige Ausführung von zwei Apps auf einer bestimmten iPad-Hardware. Multitasking für iPad wird über die folgenden Features unterstützt:

  • Slide Over (Darüber schieben) – Ermöglicht es Benutzer*innen, vorübergehend eine zweite iOS-App in einem Slide-Out (Ausziehen)-Bereich (entweder auf der rechten oder linken Seite des Bildschirms basierend auf der Sprachrichtung) auszuführen, die ungefähr 25 % der derzeit ausgeführten Haupt-App überdeckt. Slide Over ist nur auf einem iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 oder iPad Mini 4 verfügbar.
  • Geteilte Ansicht – Auf unterstützter iPad-Hardware (nur iPad Air 2, iPad Mini 4 und iPad Pro) können Benutzer*innen eine zweite App auswählen und parallel mit der derzeit ausgeführten App im geteilten Bildschirmmodus ausführen. Benutzer*innen können den Prozentsatz des Hauptbildschirms steuern, den jede App belegt.
  • Bild-in-Bild – Für Apps, die Videoinhalte wiedergeben, kann das Video jetzt in einem verschiebbaren und in der Größe veränderbaren Fenster wiedergegeben werden, das über den anderen Apps schwebt, die derzeit auf dem iOS-Gerät ausgeführt werden. Benutzer*innen haben die volle Kontrolle über die Größe und Position dieses Fensters. Bild-in-Bild ist nur auf einem iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 oder iPad Mini 4 verfügbar.

Es gibt eine Reihe von Dingen, die Sie berücksichtigen sollten, wenn Sie Multitasking in Ihrer App unterstützen, einschließlich:

Als App-Entwickler können Sie auch multitasking deaktivieren, einschließlich der Deaktivierung der PIP-Videowiedergabe.

In diesem Artikel werden die erforderlichen Schritte behandelt, um sicherzustellen, dass Ihre Xamarin.iOS-App in einer Multitaskingumgebung ordnungsgemäß ausgeführt wird oder wie Sie multitasking deaktivieren, wenn sie nicht für Ihre App geeignet ist.

Multitasking für iPad-Video

Multitasking – Schnellstart

Um die Folienüber- oder geteilte Ansicht zu unterstützen, muss Ihre App folgende Schritte ausführen:

  • Für iOS 9 (oder höher) erstellt werden.
  • Verwenden Sie ein Storyboard für den Startbildschirm (und nicht für Bildressourcen).
  • Verwenden Sie ein Storyboard mit Autolayout- und Größenklassen für die Benutzeroberfläche.
  • Unterstützt alle vier iOS-Geräteausrichtungen (Hochformat, Hochformat, Querformat links und Querformat rechts).

Informationen zum Multitasking für iPad

iOS 9 bietet neue Multitasking-Fähigkeiten auf dem iPad mit der Einführung von Slide Over, Split View (iPad Air 2, iPad Mini 4 und iPad Pro) und Picture in Picture. Wir werden uns diese Features in den folgenden Abschnitten genauer ansehen.

Folie über

Mit der Funktion "Folienüberziehen" kann der Benutzer eine zweite App auswählen und in einem kleinen Schiebebereich anzeigen, um eine schnelle Interaktion zu ermöglichen. Der Schiebereglerbereich ist temporär und wird geschlossen, wenn der Benutzer wieder mit der Standard-App arbeitet.

The Slide Over panel

Die Standard zu beachten ist, dass der Benutzer entscheidet, welche beiden Apps nebeneinander ausgeführt werden und dass der Entwickler keine Kontrolle über diesen Prozess hat. Daher müssen Sie sicherstellen, dass Ihre Xamarin.iOS-App in einem Slide Over-Bereich ordnungsgemäß ausgeführt wird:

  • Verwenden Sie Autolayout- und Größenklassen – Da Ihre Xamarin.iOS-App jetzt im folienseitigen Bereich ausgeführt werden kann, können Sie sich nicht mehr auf das Gerät, die Bildschirmgröße oder die Ausrichtung verlassen, um Die Benutzeroberfläche zu layouten. Um sicherzustellen, dass ihre App die Benutzeroberfläche korrekt skaliert, müssen Sie Autolayout- und Größenklassen verwenden. Weitere Informationen finden Sie in unserer Dokumentation zu Unified Storyboards .
  • Effiziente Nutzung von Ressourcen – Da Ihre App jetzt das System mit einer anderen ausgeführten App teilen kann, ist es wichtig, dass Ihre App Systemressourcen effizient verwendet. Wenn arbeitsspeicherlos wird, beendet das System automatisch die App, die den meisten Arbeitsspeicher verbraucht. Weitere Details finden Sie im Apple Energieeffizienzhandbuch für iOS-Apps .

Slide Over ist nur auf einem iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 oder iPad Mini 4 verfügbar. Weitere Informationen zum Vorbereiten Ihrer App für Slide Over finden Sie in der iPad-Dokumentation zur Einführung von Multitaskingverbesserungen von Apple.

Geteilte Ansicht

Auf unterstützter iPad-Hardware (nur iPad Air 2, iPad Mini 4 und iPad Pro) kann der Benutzer eine zweite App auswählen und parallel mit der derzeit ausgeführten App im Geteilten Bildschirmmodus ausführen. Der Benutzer kann den Prozentsatz des Standard Bildschirms steuern, den jede App belegt, indem sie eine Bildschirmtrennlinie ziehen.

The Split View

Wie "Slide Over" entscheidet der Benutzer, welche beiden Apps nebeneinander ausgeführt werden, und der Entwickler hat keine Kontrolle über diesen Prozess. Daher stellt die geteilte Ansicht ähnliche Anforderungen an eine Xamarin.iOS-App:

  • Verwenden Sie Autolayout- und Größenklassen – Da Ihre Xamarin.iOS-App jetzt in einem Geteilten Bildschirmmodus in der angegebenen Größe des Benutzers ausgeführt werden kann, können Sie sich nicht mehr auf das Gerät, dessen Bildschirmgröße oder die Ausrichtung verlassen, um die Benutzeroberfläche zu layouten. Um sicherzustellen, dass ihre App die Benutzeroberfläche korrekt skaliert, müssen Sie Autolayout- und Größenklassen verwenden. Weitere Informationen finden Sie in unserer Dokumentation zu Unified Storyboards .
  • Effiziente Nutzung von Ressourcen – Da Ihre App jetzt das System mit einer anderen ausgeführten App teilen kann, ist es wichtig, dass Ihre App Systemressourcen effizient verwendet. Wenn arbeitsspeicherlos wird, beendet das System automatisch die App, die den meisten Arbeitsspeicher verbraucht. Weitere Details finden Sie im Apple Energieeffizienzhandbuch für iOS-Apps .

Weitere Informationen zum Vorbereiten Ihrer App für die geteilte Ansicht finden Sie in der iPad-Dokumentation zur Einführung von Multitaskingverbesserungen von Apple.

Bild im Bild

Mit der neuen Funktion "Bild in Bild" (auch als PIP bezeichnet) kann der Benutzer ein Video in einem kleinen, unverankerten Fenster ansehen, das der Benutzer an einer beliebigen Stelle auf dem Bildschirm über anderen ausgeführten Apps positionieren kann.

An example Picture in Picture floating window

Wie bei der Folie über und der geteilten Ansicht hat der Benutzer die volle Kontrolle über das Ansehen eines Videos im Bildmodus. Wenn die Standard-Funktion Ihrer App das Video ansehen soll, muss sich das Verhalten im PIP-Modus ändern. Andernfalls sind keine Änderungen erforderlich, um PIP zu unterstützen.

Damit Ihre App PIP-Video auf Anforderung des Benutzers anzeigt, müssen Sie entweder AVKit oder die AV Foundation-APIs verwenden. Das Medienwiedergabe Framework wurde in iOS 9 veraltet und unterstützt PIP nicht.

Bild-in-Bild ist nur auf einem iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 oder iPad Mini 4 verfügbar. Weitere Informationen finden Sie in unserer PictureInPicture-Beispiel-App und apple es Picture in der Schnellstartdokumentation .

Unterstützen von Multitasking in Ihrer App

Für jede vorhandene Xamarin.iOS-App ist die Unterstützung von Multitasking eine transparente Aufgabe, solange Ihre App bereits den Designleitfäden und bewährten Methoden von Apple für iOS 8 folgt. Dies bedeutet, dass die App Storyboards mit Autolayout- und Größenklassen für seine Benutzeroberflächenlayouts verwenden sollte (weitere Informationen finden Sie in unserer Einführung in Unified Storyboards ).

Für diese Apps sind kleine oder keine Änderungen erforderlich, um Multitasking zu unterstützen und sich gut darin zu verhalten. Wenn die Benutzeroberfläche Ihrer App mithilfe anderer Methoden erstellt wurde, z. B. direkte Positionierung und Größenanpassung von UI-Elementen im C#-Code oder wenn sie auf bestimmten Gerätebildschirmgrößen oder -ausrichtungen basiert, ist eine erhebliche Änderung erforderlich, um iOS 9 Multitasking ordnungsgemäß zu unterstützen.

Um iOS 9 Multitasking für jede neue Xamarin.iOS-App zu unterstützen, verwenden Sie erneut Storyboards mit Autolayout und Größenklassen für alle Layouts der App-Benutzeroberfläche und implementieren sie die Anweisungen in den folgenden Abschnitten.

Überlegungen zur Bildschirmgröße und -ausrichtung

Vor iOS 9 können Sie Ihre App für bestimmte Gerätebildschirmgrößen und -ausrichtungen entwerfen. Da eine App jetzt in einem Bildschirmausschnitt oder im Modus "Geteilte Ansicht" ausgeführt werden kann, kann sie sich unabhängig von der physischen Ausrichtung oder Bildschirmgröße des Geräts in einer kompakten oder normalen horizontalen Klasse auf dem iPad befinden.

Screen Size and Orientation Considerations

Auf einem iPad verfügt eine Vollbild-App über normale horizontale und vertikale Größenklassen. Alle i Telefon s, aber das i Telefon 6 Plus und i Telefon 6s Plus, verfügen über Kompaktgrößenklassen in beide Richtungen in jeder Ausrichtung. Das i Telefon 6 Plus und i Telefon 6s Plus im Querformatmodus verfügen über eine normale horizontale Größenklasse und eine kompakte vertikale Größenklasse (ähnlich einem iPad Mini).

Auf iPads, die die Folienansicht und die geteilte Ansicht unterstützen, können Sie mit den folgenden Kombinationen enden:

Ausrichtung Primäre App Sekundäre App
Hochformat 75 % des Bildschirms
Horizontal kompakt
Normal vertikal
25 % des Bildschirms
Horizontal kompakt
Normal vertikal
Querformat 75 % des Bildschirms
Normal horizontal
Normal vertikal
25 % des Bildschirms
Horizontal kompakt
Normal vertikal
Querformat 50 % des Bildschirms
Horizontal kompakt
Normal vertikal
50 % des Bildschirms
Horizontal kompakt
Normal vertikal

Wenn sie im Beispiel-MuliTask-App im Querformatmodus auf einem iPad ausgeführt wird, werden sowohl die Liste als auch die Detailansicht gleichzeitig angezeigt:

The list and the detail view presented at the same time

Wenn dieselbe App in einem Folienüberlaufbereich ausgeführt wird, wird sie als Kompakte horizontale Größenklasse angeordnet und zeigt nur die Liste an:

Only the list presented when the device is horizontal

Um sicherzustellen, dass sich Ihre App in diesen Situationen ordnungsgemäß verhält, sollten Sie Trait-Sammlungen zusammen mit Größenklassen übernehmen und den IUIContentContainer Schnittstellen IUITraitEnvironment entsprechen. Weitere Informationen finden Sie in der UITraitCollection-Klassenreferenz von Apple und in unserem Leitfaden zur Einführung in Unified Storyboards.

Darüber hinaus können Sie sich nicht mehr auf die Gerätebildschirmgrenzen verlassen, um den sichtbaren Bereich der App zu definieren. Stattdessen müssen Sie die Fenstergrenzen Ihrer App verwenden. Da die Fenstergrenzen vollständig unter der Kontrolle des Benutzers liegen, können Sie sie nicht programmgesteuert anpassen oder verhindern, dass der Benutzer diese Grenzen ändert.

Schließlich muss Ihre App eine Storyboarddatei verwenden, um den Startbildschirm darzustellen, anstatt eine Reihe von .png Bilddateien zu verwenden und alle vier Schnittstellenausrichtungen (Hochformat, Hochformat, Querformat links und Querformat rechts) zu unterstützen, die für die Ausführung in einem Folienüberbereich oder im Geteilten Ansichtsmodus berücksichtigt werden.

Benutzerdefinierte Hardware-Tastenkombinationen

In iOS 9, das auf einem iPad ausgeführt wird, hat Apple die Unterstützung für Hardwaretastaturen erweitert. iPads haben immer grundlegende externe Tastaturunterstützung über Bluetooth und einige Tastaturhersteller erstellt Tastaturen, die hartverkabelte iOS-spezifische Tasten enthalten.

Mit iOS 9 können Apps nun eigene benutzerdefinierte Tastenkombinationen erstellen. Darüber hinaus stehen einige grundlegende Tastenkombinationen zur Verfügung, z . B. Command-C (Kopieren), Befehl-X (Ausschneiden), Command-V (Einfügen) und Command-Shift-H (Start), ohne dass eine App speziell geschrieben wurde.

Mit der Befehlsregisterkarte wird ein App-Switcher angezeigt, der es dem Benutzer ermöglicht, schnell zwischen Apps über die Tastatur zu wechseln, ähnlich wie das Mac OS:

The app switcher

Wenn eine iOS 9-App Tastenkombinationen enthält, kann der Benutzer die Befehls-, Wahl- oder Steuertasten gedrückt halten, um sie in einem Popup anzuzeigen:

Screenshot shows the keyboard shortcuts for an app.

Definieren von benutzerdefinierten Tastenkombinationen

Wenn wir in unserer App den folgenden Code zu einem Ansichts- oder Ansichtscontroller hinzufügen, ist eine benutzerdefinierte Tastenkombination verfügbar, wenn diese Ansicht oder der Controller sichtbar ist:

#region Custom Keyboard Shortcut
public override bool CanBecomeFirstResponder {
    get { return true; }
}

public override UIKeyCommand[] KeyCommands {
    get {

        var keyCommand = UIKeyCommand.Create (new NSString("n"), UIKeyModifierFlags.Command, new Selector ("NewEntry"), new NSString("New Entry"));
        return new UIKeyCommand[]{ keyCommand };
    }
}

[Export("NewEntry")]
public void NewEntry() {

    // Add a new entry
    ...

}
#endregion

Zunächst überschreiben wir die CanBecomeFirstResponder Eigenschaft und geben zurück true , damit der Ansichts- oder Ansichtscontroller Tastatureingaben empfangen kann.

Als Nächstes überschreiben wir die KeyCommands Eigenschaft und erstellen eine neue UIKeyCommand für die Befehls-N-Tastenfolge . Wenn der Tastenanschlag aktiviert wird, rufen wir die NewEntry Methode (die wir iOS 9 mit dem Export Befehl verfügbar machen) auf, um die angeforderte Aktion auszuführen.

Wenn wir diese App auf einem iPad mit angeschlossener Hardwaretastatur ausführen und der Benutzer Command-N eingibt, wird der Liste ein neuer Eintrag hinzugefügt. Wenn der Benutzer die Befehlstaste gedrückt hält, wird die Liste der Tastenkombinationen angezeigt:

Screenshot shows the New Entry shortcut for an app.

Eine Beispielimplementierung finden Sie in der Beispiel-MultiTask-App.

Überlegungen zur Ressourcenverwaltung

Selbst bei Apps, die bereits die Designhandbücher und bewährten Methoden von iOS 8 verwenden, ist die effiziente Ressourcenverwaltung möglicherweise noch ein Problem. In iOS 9 verfügen Apps nicht mehr über exklusive Nutzung von Arbeitsspeicher, CPU oder anderen Systemressourcen.

Daher müssen Sie Ihre Xamarin.iOS-App optimieren, um Systemressourcen effektiv zu verwenden, oder sie wird unter geringem Arbeitsspeicher beendet. Dies gilt auch für Apps, die multitasking deaktivieren, da eine zweite App möglicherweise noch in einem Folienüberlaufbereich oder in einem Bildfenster ausgeführt wird, das zusätzliche Ressourcen erfordert oder die Aktualisierungsrate unter 60 Frames pro Sekunde fällt.

Berücksichtigen Sie die folgenden Benutzeraktionen und deren Auswirkungen:

  • Eingeben von Text in einen Folienüberzugsbereich – Auch wenn Ihre App keine Texteingabe aufweist, kann die Systemtastatur jetzt über der Benutzeroberfläche angezeigt werden. Daher muss die App möglicherweise auf Bildschirmanzeigebenachrichtigungen reagieren (z. B. das Ein- und Ausblenden der Tastatur).
  • Ausführen einer zweiten App in einem Slide Over-Bereich – Die neue App wird nun im Vordergrund ausgeführt und konkurrieren mit der vorhandenen App für Systemressourcen wie Arbeitsspeicher und CPU-Zyklen.
  • Wiedergeben eines Videos in einem PIP-Fenster – Dieses Fenster kann nicht nur einen Teil der Benutzeroberfläche Ihrer App abdecken, sondern die App, die das Video gestartet hat, wird weiterhin im Hintergrund ausgeführt und verbraucht CPU- und Arbeitsspeicherressourcen.

Um sicherzustellen, dass Ihre App Ressourcen effizient verwendet, sollten Sie die folgenden Schritte ausführen:

  • Profilieren Sie die App mit Instrumenten – Überprüfen Sie auf Speicherlecks, überlastet cpu-Auslastung und Bereiche, in denen die App den Standard Thread möglicherweise blockiert.
  • Reagieren Sie auf Zustandsübergänge - Überschreibung und Reaktion auf Zustandsänderungsmethoden wie die Eingabe oder Rückgabe der App aus dem Hintergrund in Ihrer AppDelegate.cs Dateiüberschreibung und Reaktion auf Zustandsänderungsmethoden. Lassen Sie alle nicht angeforderten Ressourcen wie Bilder, Daten oder Ansichten und Den view Controller frei.
  • Paralleles Testen mit speicherintensiven Apps – Führen Sie Ihre App mit der Bildschirmpräsentation und der geteilten Ansicht auf physischer iOS-Hardware mit einer speicherintensiven App wie Karten (im Satellitenansichtsmodus) aus, und testen Sie, dass beide Apps wieder reagieren Standard reaktionsfähig sind und nicht abstürzen.

Weitere Informationen zum Ressourcenmanagement finden Sie im Apple Energieeffizienzhandbuch für iOS-Apps .

Abmelden von Multitasking

Apple schlägt zwar vor, dass alle iOS 9-Apps Multitasking unterstützen, aber es kann auch sehr spezifische Gründe für eine App geben, z. B. Spiele oder Kamera-Apps, für die der Vollbildmodus ordnungsgemäß funktioniert.

Damit Ihre Xamarin.iOS-App die Ausführung entweder in einem Folienausgangsbereich oder im Geteilten Ansichtsmodus deaktiviert, bearbeiten Sie die Info.plist-Datei des Projekts, und aktivieren Sie "Vollbild":

Opting Out of Multitasking

Wichtig

Während das Deaktivieren von Multitasking verhindert, dass Ihre App in der Folienausgangs- oder geteilten Ansicht ausgeführt wird, wird nicht verhindert, dass eine andere App in "Folie heraus" oder "Bild im Bildvideo" zusammen mit Ihrer App angezeigt wird.

Deaktivieren der PIP-Videowiedergabe

In den meisten Fällen sollte Ihre App dem Benutzer erlauben, alle Videoinhalte wiederzugeben, die in einem unverankerten Bildfenster angezeigt werden. Es kann jedoch Situationen geben, in denen dies möglicherweise nicht gewünscht wird, z. B. Videos für Spieleausschnitte.

Wenn Sie die PIP-Videowiedergabe deaktivieren möchten, gehen Sie in Ihrer App wie folgt vor:

  • Wenn Sie ein AVPlayerViewController Video zum Anzeigen von Videos verwenden, legen Sie die AllowsPictureInPicturePlayback Eigenschaft auf false.
  • Wenn Sie das AVPlayerLayer Video zum Anzeigen von Videos verwenden, instanziieren AVPictureInPictureControllerSie kein Video.
  • Wenn Sie ein WKWebView Video zum Anzeigen von Videos verwenden, legen Sie die AllowsPictureInPictureMediaPlayback Eigenschaft auf false.

Zusammenfassung

In diesem Artikel wurden die erforderlichen Schritte behandelt, um sicherzustellen, dass eine Xamarin.iOS-App in iOS 9s neue Multitasking-Fähigkeit für iPads ausgeführt und sich ordnungsgemäß verhält. Darüber hinaus wurde die Abmeldung von Multitasking für Apps behandelt, bei denen es nicht gut passt.