Wielozadaniowość dla tabletu iPad na platformie Xamarin.iOS

System iOS 9 obsługuje dwie aplikacje uruchomione w tym samym czasie przy użyciu slajdu lub widoku podzielonego. Obsługuje również odtwarzanie wideo w obrazie w obrazie.

Split Screen ExamplePicture-in-Picture Example

System iOS 9 dodaje obsługę wielozadaniowości na potrzeby uruchamiania dwóch aplikacji jednocześnie na określonym sprzęcie iPad. Wielozadaniowość dla tabletu iPad jest obsługiwana za pośrednictwem następujących funkcji:

  • Przesuwanie — umożliwia użytkownikowi tymczasowe uruchamianie drugiej aplikacji systemu iOS w wysuwanym panelu (po prawej lub lewej stronie ekranu na podstawie kierunku języka), który obejmuje około 25% aktualnie uruchomionej aplikacji głównej. Przesuwanie jest dostępne tylko w urządzeniach iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 lub iPad Mini 4.
  • Widok podzielony — na obsługiwanym sprzęcie iPad (tylko iPad Air 2, iPad Mini 4 i iPad Pro) użytkownik może wybrać drugą aplikację i uruchomić ją obok aktualnie uruchomionej aplikacji w trybie podzielonym ekranu. Użytkownik może kontrolować procent ekranu głównego zajmowanego przez każdą aplikację.
  • Obraz na obrazie — w przypadku aplikacji, które odtwarzają zawartość wideo, wideo można teraz odtwarzać w oknie z możliwością przenoszenia i zmiany rozmiaru, które przenosi się na inne aplikacje aktualnie uruchomione na urządzeniu z systemem iOS. Użytkownik ma pełną kontrolę nad rozmiarem i położeniem tego okna. Obraz na obrazie jest dostępny tylko w iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 lub iPad Mini 4.

Istnieje wiele kwestii, które należy wziąć pod uwagę podczas obsługi wielozadaniowości w aplikacji, w tym:

Jako deweloper aplikacji możesz również zrezygnować z wielozadaniowości, w tym wyłączania odtwarzania wideo PIP.

W tym artykule opisano kroki wymagane do upewnienia się, że aplikacja Xamarin.iOS działa poprawnie w środowisku wielozadaniowym lub jak zrezygnować z wielozadaniowości, jeśli nie jest odpowiednia dla twojej aplikacji.

Multitasking for iPad video (Multitasking for iPad video)

Wielozadaniowość — Szybki start

Aby obsługiwać slajdy lub widok podzielony, aplikacja musi wykonać następujące czynności:

  • Należy skompilować w systemie iOS 9 (lub nowszym).
  • Użyj scenorysu na potrzeby ekranu uruchamiania (a nie zasobów obrazów).
  • Użyj scenorysu z klasami Autolayout i Size dla interfejsu użytkownika.
  • Obsługa wszystkich 4 orientacji urządzeń z systemem iOS (pionowa, pionowa, pionowa, pozioma w lewo i pozioma w prawo).

Informacje o wielozadaniowości dla tabletu iPad

System iOS 9 oferuje nowe możliwości wielozadaniowości na urządzeniu iPad wraz z wprowadzeniem slajdów, widoku split (iPad Air 2, iPad Mini 4 i iPad Pro) i obrazu na obrazie. Przyjrzymy się bliżej tym funkcjom w poniższych sekcjach.

Przesuń w ślizg

Funkcja Przesuwanie umożliwia użytkownikowi wybranie drugiej aplikacji i wyświetlenie jej w małym panelu przesuwnym w celu zapewnienia szybkiej interakcji. Panel Przesuwa nad jest tymczasowy i zostanie zamknięty, gdy użytkownik wróci do pracy z główną aplikacją ponownie.

The Slide Over panel

Należy pamiętać, że użytkownik decyduje, które dwie aplikacje będą uruchamiane obok siebie i że deweloper nie ma kontroli nad tym procesem. W związku z tym należy wykonać kilka czynności, aby upewnić się, że aplikacja platformy Xamarin.iOS działa poprawnie w panelu Przesuwa nad:

  • Użyj klas autoukładek i rozmiarów — ponieważ aplikacja Xamarin.iOS może być teraz uruchamiana w panelu bocznym wysuwanym, nie można już polegać na urządzeniu, jego rozmiarze ekranu lub orientacji w celu układu interfejsu użytkownika. Aby upewnić się, że aplikacja prawidłowo skaluje interfejs, należy użyć klas autoukładek i rozmiarów. Aby uzyskać więcej informacji, zobacz dokumentację Wprowadzenie do ujednoliconych scenorysów .
  • Wydajnie używaj zasobów — ponieważ aplikacja może teraz udostępniać system innej uruchomionej aplikacji, niezwykle ważne jest, aby aplikacja efektywnie korzystała z zasobów systemowych. Gdy pamięć stanie się rozrzedona, system automatycznie zakończy działanie aplikacji, która zużywa najwięcej pamięci. Aby uzyskać więcej informacji, zobacz Przewodnik dotyczący wydajności energetycznej firmy Apple dla aplikacji systemu iOS.

Przesuwanie jest dostępne tylko w urządzeniach iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 lub iPad Mini 4. Aby dowiedzieć się więcej na temat przygotowywania aplikacji do slajdów, zobacz dokumentację dotyczącą wdrażania rozszerzeń wielozadaniowych firmy Apple na urządzeniu iPad .

Widok podzielony

Na obsługiwanym sprzęcie iPad (iPad Air 2, iPad Mini 4 i iPad Pro) użytkownik może wybrać drugą aplikację i uruchomić ją obok aktualnie uruchomionej aplikacji w trybie podzielonym ekranu. Użytkownik może kontrolować procent głównego ekranu, który zajmuje każda aplikacja, przeciągając rozdzielacz na ekranie.

The Split View

Podobnie jak slajd, użytkownik decyduje, które dwie aplikacje będą uruchamiane obok siebie i ponownie, deweloper nie ma kontroli nad tym procesem. W związku z tym widok podzielony umieszcza podobne wymagania w aplikacji platformy Xamarin.iOS:

  • Użyj klas autoukładek i rozmiarów — ponieważ aplikacja Xamarin.iOS może być teraz uruchamiana w trybie podzielonym ekranu o określonym rozmiarze użytkownika, nie można już polegać na urządzeniu, jego rozmiarze ekranu lub orientacji w celu układu interfejsu użytkownika. Aby upewnić się, że aplikacja prawidłowo skaluje interfejs, należy użyć klas autoukładek i rozmiarów. Aby uzyskać więcej informacji, zobacz dokumentację Wprowadzenie do ujednoliconych scenorysów .
  • Wydajnie używaj zasobów — ponieważ aplikacja może teraz udostępniać system innej uruchomionej aplikacji, niezwykle ważne jest, aby aplikacja efektywnie korzystała z zasobów systemowych. Gdy pamięć stanie się rozrzedona, system automatycznie zakończy działanie aplikacji, która zużywa najwięcej pamięci. Aby uzyskać więcej informacji, zobacz Przewodnik dotyczący wydajności energetycznej firmy Apple dla aplikacji systemu iOS.

Aby dowiedzieć się więcej na temat przygotowywania aplikacji do widoku podzielonego, zobacz dokumentację dotyczącą wdrażania rozszerzeń wielozadaniowych firmy Apple na urządzeniu iPad .

Obraz na obrazie

Nowa funkcja Obraz w obrazie (znana również jako PIP) umożliwia użytkownikowi oglądanie filmu wideo w małym, przestawnym oknie, które użytkownik może umieścić w dowolnym miejscu na ekranie powyżej innych uruchomionych aplikacji.

An example Picture in Picture floating window

Podobnie jak w przypadku widoku slajdów i podziału, użytkownik ma pełną kontrolę nad oglądaniem filmu wideo w trybie obrazów. Jeśli główną funkcją aplikacji jest oglądanie wideo, konieczne będzie wprowadzenie pewnych modyfikacji w celu poprawnego zachowania się w trybie PIP. W przeciwnym razie do obsługi pip nie są wymagane żadne zmiany.

Aby aplikacja wyświetlała wideo PIP na żądanie użytkownika, musisz użyć zestawu AVKit lub interfejsów API AV Foundation. Platforma Odtwarzacz multimedialny została wycofana w systemie iOS 9 i nie obsługuje narzędzia PIP.

Obraz na obrazie jest dostępny tylko w iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 lub iPad Mini 4. Aby uzyskać więcej informacji, zobacz naszą dokumentację z przykładową aplikacją PictureInPicture i obrazem firmy Apple w dokumentacji szybkiego startu .

Obsługa wielozadaniowości w aplikacji

W przypadku każdej istniejącej aplikacji platformy Xamarin.iOS obsługa wielozadaniowości jest przezroczystym zadaniem, o ile aplikacja jest już zgodna z przewodnikami projektowymi firmy Apple i najlepszymi rozwiązaniami dotyczącymi systemu iOS 8. Oznacza to, że aplikacja powinna używać scenorysów z klasami autoukładek i rozmiarów dla układów interfejsu użytkownika (zobacz wprowadzenie do ujednoliconych scenorysów , aby uzyskać więcej informacji).

W przypadku tych aplikacji do obsługi wielozadaniowości wymagane są niewielkie lub żadne zmiany i zachowanie się w nim dobrze. Jeśli interfejs użytkownika aplikacji został utworzony przy użyciu innych metod, takich jak bezpośrednie pozycjonowanie i określanie rozmiaru elementów interfejsu użytkownika w kodzie języka C#, lub jeśli opiera się na określonych rozmiarach lub orientacjach ekranu urządzenia, konieczne będzie wprowadzenie znaczących modyfikacji w celu poprawnego obsługi wielozadaniowości systemu iOS 9.

Aby obsługiwać wielozadaniowość systemu iOS 9 w każdej nowej aplikacji platformy Xamarin.iOS, ponownie użyj scenorysów z klasami autoukładek i rozmiarów dla wszystkich układów interfejsu użytkownika aplikacji i zaimplementuj instrukcje w poniższych sekcjach.

Zagadnienia dotyczące rozmiaru i orientacji ekranu

Przed systemem iOS 9 możesz zaprojektować aplikację pod kątem określonych rozmiarów i orientacji ekranu urządzenia. Ponieważ aplikacja może być teraz uruchamiana w panelu wysuwanym lub w trybie widoku podzielonego, może ona działać w klasie kompaktowej lub regularnej wielkości poziomej na urządzeniu iPad, niezależnie od orientacji fizycznej lub rozmiaru ekranu urządzenia.

Screen Size and Orientation Considerations

Na urządzeniu iPad aplikacja pełnoekranowa ma regularne klasy rozmiarów poziomych i pionowych. Wszystkie i Telefon ale i Telefon 6 Plus i i Telefon 6s Plus, mają klasy Compact Size w obu kierunkach w dowolnej orientacji. I Telefon 6 Plus i i Telefon 6s Plus w trybie poziomym mają regularną klasę rozmiaru poziomego i kompaktową klasę rozmiaru pionowego (podobnie jak iPad Mini).

Na tabletach iPad obsługujących widok slajdów i widoków podzielonych można uzyskać następujące kombinacje:

Orientacja Aplikacja podstawowa Aplikacja pomocnicza
Portret 75% ekranu
Kompaktowanie w poziomie
Zwykły pionowy
25% ekranu
Kompaktowanie w poziomie
Zwykły pionowy
Krajobraz 75% ekranu
Zwykły poziomy
Zwykły pionowy
25% ekranu
Kompaktowanie w poziomie
Zwykły pionowy
Krajobraz 50% ekranu
Kompaktowanie w poziomie
Zwykły pionowy
50% ekranu
Kompaktowanie w poziomie
Zwykły pionowy

Jeśli w przykładzie aplikacja MuliTask jest uruchamiana na pełnym ekranie na urządzeniu iPad w trybie poziomym, zostanie wyświetlona zarówno lista, jak i widok szczegółów w tym samym czasie:

The list and the detail view presented at the same time

Jeśli ta sama aplikacja jest uruchamiana w panelu Przesuwa nad, zostanie ona ułożona jako klasa Compact Horizontal Size i wyświetla tylko listę:

Only the list presented when the device is horizontal

Aby upewnić się, że aplikacja działa prawidłowo w takich sytuacjach, należy wdrożyć kolekcje cech wraz z klasami rozmiarów i być zgodne IUIContentContainer z interfejsami i IUITraitEnvironment . Aby uzyskać więcej informacji, zobacz Dokumentację klas UITraitCollection firmy Apple i przewodnik Wprowadzenie do ujednoliconych scenorysów.

Ponadto nie można już polegać na ograniczeniach ekranu urządzeń w celu zdefiniowania widocznego obszaru aplikacji. Zamiast tego należy użyć ograniczeń okna aplikacji. Ponieważ granice okna są w pełni pod kontrolą użytkownika, nie można ich programowo dostosować ani uniemożliwić użytkownikowi zmiany tych granic.

Na koniec aplikacja musi użyć pliku scenorysu, aby przedstawić ekran uruchamiania, w przeciwieństwie do korzystania z zestawu plików obrazów .png i obsługiwać wszystkie cztery orientacje interfejsu (pionowy, pionowy, pionowy, poziomy po lewej i poziomej prawej), aby można je było uznać za uruchomione w panelu Slajd nad lub w trybie widoku podzielonego.

Niestandardowe skróty klawiaturowe sprzętu

W systemie iOS 9 uruchomionym na urządzeniu iPad firma Apple ma rozszerzoną obsługę klawiatur sprzętowych. Tablety iPad zawsze zawierały podstawową obsługę klawiatury zewnętrznej za pośrednictwem połączenia Bluetooth, a niektórzy producenci klawiatury stworzyli klawiatury, które zawierały twarde klawisze specyficzne dla systemu iOS.

Teraz, w systemie iOS 9, aplikacje mogą tworzyć własne niestandardowe skróty klawiaturowe. Ponadto niektóre podstawowe skróty klawiaturowe są dostępne, takie jak Command-C (copy), Command-X (cut), Command-V (wklej) i Command-Shift-H (strona główna), bez specjalnie napisanej aplikacji.

Karta poleceń wyświetli przełącznik aplikacji, który umożliwia użytkownikowi szybkie przełączanie się między aplikacjami z klawiatury, podobnie jak w przypadku systemu Mac OS:

The app switcher

Jeśli aplikacja systemu iOS 9 zawiera skróty klawiaturowe, użytkownik może przytrzymywać klawisze Command, Option lub Control , aby wyświetlić je w wyskakującym okienku:

Screenshot shows the keyboard shortcuts for an app.

Definiowanie niestandardowych skrótów klawiaturowych

Jeśli dodamy następujący kod do kontrolera widoku lub widoku w naszej aplikacji, gdy ten widok lub kontroler będzie widoczny, będzie dostępny niestandardowy skrót klawiaturowy:

#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

Najpierw zastępujemy CanBecomeFirstResponder właściwość i zwracamy true , aby kontroler widoku lub widoku mógł odbierać dane wejściowe klawiatury.

Następnie zastąpimy KeyCommands właściwość i utworzymy nową UIKeyCommand dla nastroju klawiszy Command-N . Po aktywowaniu naciśnięcia klawisza wywołujemy metodę NewEntry (uwidaczniamy w systemie iOS 9 za pomocą Export polecenia ), aby wykonać żądaną akcję.

Jeśli uruchomimy tę aplikację na urządzeniu iPad z dołączoną klawiaturą sprzętową, a użytkownik wpisze polecenie Command-N, zostanie dodany nowy wpis do listy. Jeśli użytkownik wciśnie klawisz Polecenia , zostanie wyświetlona lista skrótów:

Screenshot shows the New Entry shortcut for an app.

Zobacz przykładową aplikację MultiTask, aby zapoznać się z przykładową implementacją.

Zagadnienia dotyczące zarządzania zasobami

Nawet w przypadku aplikacji, które już korzystają z przewodników projektowych i najlepszych rozwiązań systemu iOS 8, efektywne zarządzanie zasobami może nadal stanowić problem. W systemie iOS 9 aplikacje nie mają już wyłącznego użycia pamięci, procesora CPU ani innych zasobów systemowych.

W związku z tym należy dostosować aplikację platformy Xamarin.iOS, aby efektywnie korzystać z zasobów systemowych lub mieć problemy z kończeniem działania w przypadku niskiej ilości pamięci. Jest to równie prawdziwe w przypadku aplikacji, które zrezygnowały z wielozadaniowości, ponieważ druga aplikacja może być nadal uruchamiana w panelu Przesuwa nad lub w oknie Obraz w oknie Obraz wymagających dodatkowych zasobów lub powodując spadek częstotliwości odświeżania poniżej 60 ramek na sekundę.

Rozważ następujące akcje użytkownika i ich konsekwencje:

  • Wprowadzanie tekstu w panelu Przesuwa nad — nawet jeśli aplikacja nie ma wprowadzania tekstu, klawiatura systemowa może być teraz wyświetlana w interfejsie użytkownika. W związku z tym aplikacja może potrzebować odpowiedzi na powiadomienia ekranu klawiatury (takie jak wyświetlanie i ukrywanie klawiatury).
  • Uruchamianie drugiej aplikacji w panelu Przesuwa nad — nowa aplikacja jest teraz uruchomiona na pierwszym planie i rywalizuje z istniejącą aplikacją dla zasobów systemowych, takich jak pamięć i cykle procesora CPU.
  • Odtwarzanie wideo w oknie pip — nie tylko to okno może obejmować część interfejsu aplikacji, ale aplikację, która uruchomiła film wideo, nadal działa w tle i zużywa zasoby procesora CPU i pamięci.

Aby upewnić się, że aplikacja efektywnie korzysta z zasobów, należy wykonać następujące czynności:

  • Profilowanie aplikacji za pomocą instrumentów — sprawdź przecieki pamięci, nadmierne użycie procesora CPU i obszary, w których aplikacja może blokować główny wątek.
  • Odpowiadanie na metody przejścia stanu — w pliku AppDelegate.cs przesłaniaj i odpowiadaj na metody zmiany stanu, takie jak wprowadzanie lub powrót aplikacji z tła. Zwolnij wszelkie niewymagane zasoby, takie jak obrazy, dane lub widoki i kontroler widoku.
  • Przetestuj aplikację równoległą z aplikacjami intensywnie korzystającymi z pamięci — uruchom aplikację przy użyciu zarówno wysuwanego, jak i podzielonego widoku na fizycznym sprzęcie z systemem iOS z aplikacją intensywnie korzystającą z pamięci, taką jak Mapy (w trybie widoku satelitarnego) i przetestuj, czy obie aplikacje pozostają dynamiczne i nie ulegają awarii.

Aby uzyskać więcej informacji na temat zarządzania zasobami, zobacz Przewodnik dotyczący efektywności energetycznej firmy Apple dla aplikacji systemu iOS.

Rezygnacja z wielozadaniowości

Chociaż firma Apple sugeruje, że wszystkie aplikacje systemu iOS 9 obsługują wielozadaniowość, może istnieć bardzo konkretne powody, dla których aplikacja nie jest zbyt, takich jak gry lub aplikacje aparatu, które wymagają poprawnego działania pełnego ekranu.

Aby aplikacja Xamarin.iOS zrezygnowała z uruchamiania w panelu wysuwanym lub w trybie widoku podzielonego, edytuj plik Info.plist projektu i zaznacz pole Wymaga pełnego ekranu:

Opting Out of Multitasking

Ważne

Rezygnacja z wielozadaniowości uniemożliwia uruchamianie aplikacji w widoku wysuwanym lub podzielonym, ale nie uniemożliwia uruchamiania innej aplikacji w slajdzie lub obraz w filmie wideo obrazowym podczas wyświetlania aplikacji wraz z aplikacją.

Wyłączanie odtwarzania wideo PIP

W większości sytuacji aplikacja powinna zezwolić użytkownikowi na odtwarzanie dowolnej zawartości wideo wyświetlanej w oknie przestawnym Obraz. Jednak mogą wystąpić sytuacje, w których może to nie być pożądane, takie jak filmy sceny wycinania gier.

Aby zrezygnować z odtwarzania wideo PIP, wykonaj następujące czynności w aplikacji:

  • Jeśli używasz elementu do wyświetlania AVPlayerViewControllerAllowsPictureInPicturePlayback wideo, ustaw właściwość na false.
  • Jeśli używasz elementu do wyświetlania AVPlayerLayer wideo, nie należy utworzyć wystąpienia elementu AVPictureInPictureController.
  • Jeśli używasz elementu do wyświetlania WKWebViewAllowsPictureInPictureMediaPlayback wideo, ustaw właściwość na false.

Podsumowanie

W tym artykule opisano kroki wymagane do zapewnienia, że aplikacja platformy Xamarin.iOS będzie działać prawidłowo i działa prawidłowo w nowej funkcji wielozadaniowości systemu iOS 9 dla tabletów iPad. Ponadto obejmowała rezygnację z wielozadaniowości dla aplikacji, w których nie jest to dobre rozwiązanie.