Multitasking pro iPad v Xamarin.iOS

iOS 9 podporuje dvě aplikace spuštěné současně pomocí snímku nebo rozděleného zobrazení. Podporuje také přehrávání videa v obrázku.

Split Screen ExamplePicture-in-Picture Example

iOS 9 přidává podporu multitaskingu pro spouštění dvou aplikací na konkrétním hardwaru iPadu. Multitasking pro iPad se podporuje prostřednictvím následujících funkcí:

  • Posunutí – Umožňuje uživateli dočasně spustit druhou aplikaci pro iOS na panelu vysunutí (buď na pravé nebo levé straně obrazovky na základě směru jazyka), která pokrývá přibližně 25 % aktuálně spuštěné hlavní aplikace. Snímek je dostupný jenom na iPadu Pro, iPadu Air, iPadu Air 2, iPadu Mini 2, iPadu Mini 3 nebo iPadu Mini 4.
  • Rozdělené zobrazení – na podporovaném hardwaru iPadu (jenom iPad Air 2, iPad Mini 4 a iPad Pro) může uživatel vybrat druhou aplikaci a spustit ji vedle aktuálně spuštěné aplikace v režimu rozdělené obrazovky. Uživatel může řídit procento hlavní obrazovky, kterou každá aplikace zabírá.
  • Obrázek v obrázku – U aplikací, které přehrávají videoobsáh, se teď dá přehrát v pohybovatelném okně, které se dá přecházet přes ostatní aplikace, které jsou aktuálně spuštěné na zařízení s iOSem. Uživatel má plnou kontrolu nad velikostí a umístěním tohoto okna. Obrázek v obrázku je dostupný jenom na iPadu Pro, iPadu Air, iPadu Air 2, iPadu Mini 2, iPadu Mini 3 nebo iPadu Mini 4.

Při podpoře multitaskingu ve vaší aplikaci je potřeba vzít v úvahu celou řadu věcí, mezi které patří:

Jako vývojář aplikací můžete také vyjádřit nesouhlas s multitaskingem, včetně zakázání přehrávání videa PIP.

Tento článek popisuje kroky potřebné k tomu, aby vaše aplikace Xamarin.iOS běžela správně v prostředí multitaskingu nebo jak se odhlásit z multitaskingu, pokud není vhodná pro vaši aplikaci.

Multitasking pro iPad video

Rychlé zprovoznění multitaskingu

Pokud chcete podporovat zobrazení snímků nebo rozdělené zobrazení , musí aplikace provádět následující akce:

  • Stavět na iOSu 9 (nebo novějším).
  • Pro úvodní obrazovku (a ne pro prostředky obrázků) použijte scénář.
  • Pro své uživatelské rozhraní použijte storyboard s třídami automatického dokončování a velikostí.
  • Podpora všech 4 orientací zařízení s iOSem (na výšku, na výšku vzhůru nohama, na šířku vlevo a vpravo na šířku).

O multitaskingu pro iPad

iOS 9 nabízí nové možnosti multitaskingu na iPadu s úvodem slide Over, Split View (iPad Air 2, iPad Mini 4 a iPad Pro only) a Picture in Picture. Tyto funkce se podrobněji podíváme v následujících částech.

Posunutí nad

Funkce Posunout přes umožňuje uživateli vybrat druhou aplikaci a zobrazit ji na malém posuvném panelu, aby zajistil rychlou interakci. Panel Slide Over je dočasný a zavře se, až se uživatel vrátí do práce s hlavní aplikací znovu.

The Slide Over panel

Hlavní věcí, kterou je třeba si uvědomit, je, že uživatel rozhodne, které dvě aplikace budou spuštěny vedle sebe a že vývojář nemá nad tímto procesem žádnou kontrolu. V důsledku toho je potřeba udělat několik věcí, abyste měli jistotu, že se aplikace Xamarin.iOS správně spustí na panelu Slide Over:

  • Používejte třídy Autolayout a Size – vzhledem k tomu, že se aplikace Xamarin.iOS teď dá spustit na bočním panelu odsunutí, už se na zařízení nemůžete spolehnout, jeho velikost obrazovky nebo jeho orientaci k rozložení uživatelského rozhraní. Abyste měli jistotu, že vaše aplikace správně škáluje rozhraní, budete muset použít třídy automatického popisku a velikosti. Další informace najdete v naší dokumentaci Úvod do sjednocených scénářů .
  • Používejte prostředky efektivně – protože vaše aplikace teď může sdílet systém s jinou spuštěnou aplikací, je důležité, aby vaše aplikace efektivně používala systémové prostředky. Když se paměť změní na řídké, systém automaticky ukončí aplikaci, která spotřebovává nejvíce paměti. Další podrobnosti najdete v Průvodci energetickou účinností společnosti Apple pro aplikace pro iOS.

Snímek je dostupný jenom na iPadu Pro, iPadu Air, iPadu Air 2, iPadu Mini 2, iPadu Mini 3 nebo iPadu Mini 4. Další informace o přípravě aplikace na Slide Over najdete v dokumentaci k funkci Apple Adopting Multitasking Enhancements on iPad .

Rozdělené zobrazení

Na podporovaném hardwaru iPadu (jenom iPad Air 2, iPad Mini 4 a iPad Pro) může uživatel vybrat druhou aplikaci a spustit ji souběžně s aktuálně spuštěnou aplikací v režimu rozdělené obrazovky. Uživatel může řídit procento hlavní obrazovky, kterou každá aplikace zabírá přetažením oddělovače na obrazovce.

The Split View

Podobně jako slide Over se uživatel rozhodne, které dvě aplikace budou běžet vedle sebe a znovu, vývojář nemá nad tímto procesem žádnou kontrolu. V důsledku toho rozdělení zobrazení umístí podobné požadavky na aplikaci Xamarin.iOS:

  • Používejte třídy Autolayout a Size – Protože teď můžete aplikaci Xamarin.iOS spustit v režimu rozdělené obrazovky v zadané velikosti uživatele, už se nemůžete spolehnout na zařízení, jeho velikost obrazovky nebo orientaci při rozložení uživatelského rozhraní. Abyste měli jistotu, že vaše aplikace správně škáluje rozhraní, budete muset použít třídy automatického popisku a velikosti. Další informace najdete v naší dokumentaci Úvod do sjednocených scénářů .
  • Používejte prostředky efektivně – protože vaše aplikace teď může sdílet systém s jinou spuštěnou aplikací, je důležité, aby vaše aplikace efektivně používala systémové prostředky. Když se paměť změní na řídké, systém automaticky ukončí aplikaci, která spotřebovává nejvíce paměti. Další podrobnosti najdete v Průvodci energetickou účinností společnosti Apple pro aplikace pro iOS.

Další informace o přípravě aplikace pro rozdělené zobrazení najdete v dokumentaci k funkci Apple Adopting Multitasking Enhancements on iPad .

Obrázek v obrázku

Nová funkce Obrázek v obrázku (označovaná také jako PIP) umožňuje uživateli sledovat video v malém plovoucím okně, které může uživatel umístit kamkoli na obrazovku nad jinými spuštěnými aplikacemi.

An example Picture in Picture floating window

Stejně jako u snímku přes a rozdělené zobrazení má uživatel plnou kontrolu nad sledováním videa v režimu Obrázek v obrázku. Pokud je hlavní funkcí vaší aplikace sledování videa, bude potřeba, aby se v režimu PIP správně chovala nějaká úprava. V opačném případě nejsou k podpoře PIP potřeba žádné změny.

Aby vaše aplikace zobrazovala video PIP na žádost uživatele, budete muset používat BUĎ AVKit , nebo rozhraní AV Foundation API. Rozhraní Přehrávač médií bylo v iOSu 9 vyřazeno a nepodporuje PIP.

Obrázek v obrázku je dostupný jenom na iPadu Pro, iPadu Air, iPadu Air 2, iPadu Mini 2, iPadu Mini 3 nebo iPadu Mini 4. Další informace najdete v naší ukázkové aplikaci PictureInPicture a v dokumentaci k Obrázku společnosti Apple.

Podpora multitaskingu v aplikaci

U všech existujících aplikací Xamarin.iOS je podpora multitaskingu transparentním úkolem, pokud už vaše aplikace dodržuje příručky k návrhu a osvědčené postupy společnosti Apple pro iOS 8. To znamená, že aplikace by měla pro rozložení uživatelského rozhraní používat scénáře s autolayoutovými třídami a třídami velikostí (další informace najdete v našem úvodu k jednotným scénářům ).

U těchto aplikací se k podpoře multitaskingu a chování v rámci těchto aplikací vyžaduje jen málo nebo žádné změny. Pokud uživatelské rozhraní vaší aplikace bylo vytvořeno pomocí jiných metod, jako je přímé umístění a nastavení velikosti prvků uživatelského rozhraní v kódu jazyka C# nebo pokud závisí na konkrétních velikostech nebo orientacích obrazovky zařízení, bude potřeba výrazně upravit podporu multitaskingu iOS 9 správně.

Pokud chcete podporovat multitasking pro iOS 9 v jakékoli nové aplikaci Xamarin.iOS, znovu používejte scénáře s třídami Autolayout a Size Pro všechna rozložení uživatelského rozhraní aplikace a implementujte pokyny v následujících částech.

Důležité informace o velikosti a orientaci obrazovky

Před iOSem 9 můžete navrhnout aplikaci na konkrétní velikosti a orientaci obrazovky zařízení. Vzhledem k tomu, že se aplikace dá spustit na panelu Slide Out nebo v režimu rozděleného zobrazení, může být spuštěná buď v kompaktní nebo běžné třídě vodorovné velikosti na iPadu, bez ohledu na fyzickou orientaci zařízení nebo velikost obrazovky.

Screen Size and Orientation Considerations

Na iPadu má aplikace na celé obrazovce běžné vodorovné a svislé třídy velikostí. Všechny i Telefon, ale i Telefon 6 Plus a i Telefon 6s Plus, mají třídy Kompaktní velikost v obou směrech v libovolné orientaci. I Telefon 6 Plus a i Telefon 6s Plus v režimu na šířku mají normální vodorovnou velikost třídy a kompaktní svislou velikost třídy (podobně jako iPad Mini).

Na iPadech, které podporují snímky a rozdělené zobrazení, můžete skončit následujícími kombinacemi:

Orientace Primární aplikace Sekundární aplikace
Portrét 75 % obrazovky
Kompaktní vodorovně
Normální svisle
25 % obrazovky
Kompaktní vodorovně
Normální svisle
Krajina 75 % obrazovky
Normální vodorovný
Normální svisle
25 % obrazovky
Kompaktní vodorovně
Normální svisle
Krajina 50 % obrazovky
Kompaktní vodorovně
Normální svisle
50 % obrazovky
Kompaktní vodorovně
Normální svisle

Pokud je v ukázkové aplikaci MuliTask spuštěná na iPadu v režimu na šířku, zobrazí se seznam i zobrazení podrobností současně:

The list and the detail view presented at the same time

Pokud je stejná aplikace spuštěna na panelu Slide Over, je rozložena jako kompaktní vodorovná velikost třídy a zobrazí pouze seznam:

Only the list presented when the device is horizontal

Abyste měli jistotu, že se vaše aplikace v těchto situacích chová správně, měli byste přijmout kolekce vlastností spolu s třídami velikostí a odpovídat rozhraním IUIContentContainer a IUITraitEnvironment rozhraním. Další informace najdete v referenčních informacích k třídě UITraitCollection od společnosti Apple a v příručce Úvod do sjednocených scénářů.

Kromě toho už nemůžete spoléhat na hranice obrazovky zařízení, abyste definovali viditelnou oblast aplikace, musíte místo toho použít hranice okna vaší aplikace. Vzhledem k tomu, že hranice oken jsou plně pod kontrolou uživatele, nemůžete je programově upravit nebo zabránit uživateli v tom, aby tyto hranice měnil.

Nakonec musí vaše aplikace použít soubor scénáře k prezentaci úvodní obrazovky místo použití sady souborů obrázků .png a podporovat všechny čtyři orientace rozhraní (na výšku, na výšku, na šířku vlevo a vpravo na šířku), které se mají zvážit pro spuštění v panelu Slide Over nebo v režimu Rozdělené zobrazení.

Vlastní hardwarové klávesové zkratky

V iOSu 9 běžícím na iPadu má Apple rozšířenou podporu hardwarových klávesnic. IPady vždy obsahovaly základní podporu externí klávesnice přes Bluetooth a někteří výrobci klávesnice vytvořili klávesnice, které obsahovaly pevně připojené klávesy pro iOS.

Aplikace pro iOS 9 teď můžou vytvářet vlastní klávesové zkratky. Kromě toho jsou k dispozici některé základní klávesové zkratky, například Command-C (copy), Command-X (cut), Command-V (paste) a Command-Shift-H (home), aniž by na ně aplikace speciálně zapisovala odpověď.

Command-Tab zobrazí přepínač aplikací, který uživateli umožňuje rychle přepínat mezi aplikacemi z klávesnice, podobně jako Mac OS:

The app switcher

Pokud aplikace pro iOS 9 obsahuje klávesové zkratky, může uživatel podržet klávesy Command, Option nebo Control a zobrazit je v místní nabídce:

Screenshot shows the keyboard shortcuts for an app.

Definování vlastních klávesových zkratek

Pokud do zobrazení nebo kontroleru zobrazení v naší aplikaci přidáme následující kód, bude při zobrazení nebo kontroleru k dispozici vlastní klávesová zkratka:

#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

Nejprve přepíšeme CanBecomeFirstResponder vlastnost a vrátíme true se tak, aby zobrazení nebo řadič zobrazení mohl přijímat vstup klávesnice.

Dále vlastnost přepíšeme KeyCommands a vytvoříme novou UIKeyCommand klávesovou zkratku Command-N . Při aktivaci stisknutí klávesy zavoláme metodu NewEntry (kterou zveřejníme pro iOS 9 pomocí Export příkazu) k provedení požadované akce.

Pokud tuto aplikaci spustíme na iPadu s připojenou hardwarovou klávesnicí a uživatel zadá Command-N, přidá se do seznamu nová položka. Pokud uživatel drží stisknutou klávesu Command , zobrazí se seznam klávesových zkratek:

Screenshot shows the New Entry shortcut for an app.

Ukázkovou implementaci najdete v ukázkové aplikaci MultiTask.

Důležité informace o správě prostředků

I pro aplikace, které už používají příručky k návrhu a osvědčené postupy pro iOS 8, může být efektivní správa prostředků stále problém. V iOSu 9 už aplikace nemají výhradní využití paměti, procesoru nebo jiných systémových prostředků.

V důsledku toho musíte aplikaci Xamarin.iOS doladit tak, aby efektivně používala systémové prostředky nebo dochází k ukončení v případě nedostatku paměti. To platí i pro aplikace, které se odhlasují z multitaskingu, protože druhá aplikace může být stále spuštěna na panelu Slide Over nebo v okně Obrázek v okně Obrázek, které vyžadují další prostředky nebo způsobují, že obnovovací frekvence klesne pod 60 snímků za sekundu.

Vezměte v úvahu následující akce uživatelů a jejich důsledky:

  • Zadávání textu na panelu Snímek po snímku – i když vaše aplikace nemá žádný textový vstup, je teď možné systémovou klávesnici zobrazit v uživatelském rozhraní. V důsledku toho může aplikace muset reagovat na oznámení o zobrazení klávesnice (například zobrazení a skrytí klávesnice).
  • Spuštění druhé aplikace na panelu Snímek nad – nová aplikace je teď spuštěná v popředí a konkuruje stávající aplikaci pro systémové prostředky, jako jsou cykly paměti a procesoru.
  • Přehrávání videa v okně PIP – Toto okno může nejen pokrýt část rozhraní aplikace, ale aplikace, která video spustila, je stále spuštěná na pozadí a spotřebovává prostředky procesoru a paměti.

Pokud chcete zajistit, aby vaše aplikace efektivně používala prostředky, měli byste udělat toto:

  • Profilujte aplikaci pomocí nástrojů – Zkontrolujte nevracení paměti, využití nadlimitového využití procesoru a oblasti, ve kterých může aplikace blokovat hlavní vlákno.
  • Reakce na metody přechodů stavu – V AppDelegate.cs souboru přepsání a odpovědi na metody změny stavu, jako je například zadávání nebo vrácení aplikace z pozadí. Uvolněte všechny nevyžádřené prostředky, jako jsou obrázky, data nebo zobrazení a kontroler zobrazení.
  • Souběžné testování s aplikacemi náročnými na paměť – Spusťte aplikaci pomocí funkce Slide Out a Split View na fyzickém hardwaru s iOSem s aplikací náročnou na paměť, jako je Mapy (v režimu satelitního zobrazení) a otestujte, že obě aplikace zůstanou responzivní a nespadnou.

Další informace o správě prostředků najdete v průvodci energetickou účinností společnosti Apple pro aplikace pro iOS.

Odhlášení z multitaskingu

I když Apple navrhuje, aby všechny aplikace pro iOS 9 podporovaly multitasking, může to být velmi specifické důvody, proč aplikace nejsou příliš specifické, například hry nebo aplikace fotoaparátu, které vyžadují, aby celá obrazovka fungovala správně.

Aby se vaše aplikace Xamarin.iOS vypověděla, že neběží na panelu Slide Out nebo v režimu rozděleného zobrazení, upravte soubor Info.plist projektu a zaškrtněte políčko Vyžaduje celou obrazovku:

Opting Out of Multitasking

Důležité

Při odhlášení z multitaskingu zabrání spuštění aplikace v zobrazení Slide Out nebo Split View, ale nebrání tomu, aby se jiná aplikace spouštěla ve vysouvacím zobrazení nebo ve videu Obrázek v obrázku, aby se zobrazila společně s vaší aplikací.

Zakázání přehrávání videa PIP

Ve většině situací by vaše aplikace měla uživateli umožnit přehrát jakýkoli obsah videa, který se zobrazí v plovoucím okně Obrázek v obrázku. Můžou ale nastat situace, kdy to nemusí být žádoucí, například videa scény střihu ze hry.

Pokud chcete zrušit přehrávání videa PIP, postupujte ve své aplikaci takto:

  • Pokud používáte AVPlayerViewController k zobrazení videa, nastavte AllowsPictureInPicturePlayback vlastnost na false.
  • Pokud k zobrazení videa používáte AVPlayerLayer , vytvořte instanci AVPictureInPictureController.
  • Pokud používáte WKWebView k zobrazení videa, nastavte AllowsPictureInPictureMediaPlayback vlastnost na false.

Shrnutí

Tento článek popisuje kroky potřebné k zajištění toho, aby aplikace Xamarin.iOS běžela a chovala se správně v nové možnosti multitaskingu pro iPady iOS 9. Kromě toho se vztahuje na výslovný nesouhlas s multitaskingem pro aplikace, kde není vhodné.