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.
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:
- Bildschirmgröße und -ausrichtung
- Benutzerdefinierte Hardware-Tastenkombinationen
- Ressourcenverwaltung
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 Folienüberschreibbereich ist temporär und wird geschlossen, wenn der Benutzer wieder mit der Haupt-App arbeitet.
Die Hauptsache ist, dass der Benutzer entscheidet, welche zwei 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 Hauptbildschirms steuern, den jede App belegt, indem sie eine Bildschirmtrennlinie ziehen.
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.
Wie bei der Folie über und der geteilten Ansicht hat der Benutzer die volle Kontrolle über das Ansehen eines Videos im Bildmodus. Wenn die Hauptfunktion Ihrer App das Video ansehen soll, muss sie sich im PIP-Modus ordnungsgemäß verhalten. 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 der Schnellstartdokumentation zu Apples Bild.
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.
Auf einem iPad verfügt eine Vollbild-App über normale horizontale und vertikale Größenklassen. Alle iPhones, aber das iPhone 6 Plus und iPhone 6s Plus, verfügen über kompakte Größenklassen in beide Richtungen in jeder Ausrichtung. Das iPhone 6 Plus und iPhone 6s Plus im Querformatmodus verfügen über eine normale horizontale Größenklasse und eine kompakte vertikale Größenklasse (ähnlich wie ein 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 in der Beispiel-App auf einem iPad im Querformatmodus ausgeführt wird, werden sowohl die Liste als auch die Detailansicht gleichzeitig angezeigt:
Wenn dieselbe App in einem Folienüberlaufbereich ausgeführt wird, wird sie als Kompakte horizontale Größenklasse angeordnet und zeigt nur die Liste an:
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:
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:
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:
Ü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 Hauptthread 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 reaktionsfähig bleiben 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":
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 dieAllowsPictureInPicturePlayback
Eigenschaft auffalse
. - Wenn Sie das
AVPlayerLayer
Video zum Anzeigen von Videos verwenden, instanziierenAVPictureInPictureController
Sie kein Video. - Wenn Sie ein
WKWebView
Video zum Anzeigen von Videos verwenden, legen Sie dieAllowsPictureInPictureMediaPlayback
Eigenschaft auffalse
.
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.