Multitasking pro iPad v Xamarin.iOS

iOS 9 podporuje dvě aplikace spuštěné současně, které používají snímek přes nebo rozdělené zobrazení. Podporuje také přehrávání videa v obrázku.

Příklad rozdělenéobrazovky s obrázkem

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

  • Snímek přes – Umožňuje uživateli dočasně spustit druhou aplikaci pro iOS na vysunoutm panelu (na pravé nebo levé straně obrazovky podle směru jazyka), který pokrývá přibližně 25 % aktuálně spuštěné hlavní aplikace. Slide Over je k dispozici pouze v iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 nebo iPad Mini 4.
  • Rozdělené zobrazení – na podporovaném hardwaru iPad (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 na obrázku – u aplikací, které přehrává video obsahu, je teď možné video přehrát v přesunoutelném okně s možností velikostí, které se posune nad ostatními aplikacemi aktuálně běžící 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 k dispozici pouze v iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 nebo iPad Mini 4.

Při podpoře multitaskinguv aplikaci je třeba vzít v úvahu několik věcí, mezi které patří:

Jako vývojář aplikace můžete také vyjádřit nesouhlas s multitaskingem,včetně zakázání funkce PIP Video Playback.

Tento článek popisuje kroky potřebné k zajištění správnému spuštění aplikace Xamarin.iOS v prostředí multitaskingu nebo způsobu odhlášení z multitaskingu, pokud není vhodná pro vaši aplikaci.

Multitasking pro iPad video

Rychlé zprovoznění multitaskingu

Pokud chcete podporovat snímek přesnebo rozdělené zobrazení, musí vaše aplikace provést následující akce:

  • Musí být postavené na iOSu 9 (nebo vyšším).
  • Pro spouštěcí obrazovku (a ne pro obrazové prostředky) použijte Storyboard.
  • Pro uživatelské rozhraní použijte storyboard s třídami automatického rozložení a velikosti.
  • Podpora všech 4 orientací zařízení s iOSem (na výšku, v obrácené orientaci na výšku, na šířku vlevo & na šířku vpravo)

Multitasking pro iPad

iOS 9 nabízí nové možnosti multitaskingu v iPad se zavedením funkce Slide Over, Split View (iPad Air 2, iPad Mini 4 a iPad Pro) a Picture in Picture. Na tyto funkce se podíváme blíže v následujících částech.

Slide Over

Funkce Slide Over (Přesouvání) umožňuje uživateli vybrat druhou aplikaci a zobrazit ji na malém posuvném panelu a zajistit tak rychlou interakci. Panel Slide Over je dočasný a jakmile se uživatel znovu vrátí k práci s hlavní aplikací, zavře se.

Panel Slide Over (Sounout přes)

Hlavní věc, kterou je třeba si zapamatovat, je, že uživatel rozhodne, které dvě aplikace budou spuštěné 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í, které zajistí správné spuštění aplikace Xamarin.iOS na panelu Slide Over:

  • Use Autolayout and Size Classes – Vzhledem k tomu, že aplikaci Xamarin.iOS je teď možné spustit na bočním panelu s vysunout, už se při rozložení uživatelského rozhraní nemůžete spoléhat na zařízení, jeho velikost obrazovky ani orientaci. Pokud chcete zajistit správné škálování rozhraní vaší aplikace, budete muset použít Třídy automatického rozložení a velikosti. Další informace najdete v naší dokumentaci Úvod do sjednocených scénářů.
  • Efektivně používat prostředky – Vzhledem k tomu, že vaše aplikace teď může sdílet systém s jinou běžící aplikací, je důležité, aby vaše aplikace efektivně využívá systémové prostředky. Když je paměť zhuštěná, systém automaticky ukončí aplikaci, která spotřebovává nejvíce paměti. Další podrobnosti najdete v průvodci energetickou efektivitou společnosti Apple pro aplikace pro iOS.

Slide Over je k dispozici pouze v iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 nebo iPad Mini 4. Další informace o přípravě aplikace na snímek najdete v dokumentaci společnosti Apple, která se věnují vylepšením multitaskingu iPad aplikaci.

Rozdělené zobrazení

Na podporovaném hardwaru iPad (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á, přetažením rozdělovače na obrazovce.

Rozdělené zobrazení

Podobně jako Slide Over (Snímek přes) se uživatel rozhodne, které dvě aplikace budou spuštěné vedle sebe, a vývojář nemá nad tímto procesem žádnou kontrolu. V důsledku toho rozdělené zobrazení klade podobné požadavky na aplikaci Xamarin.iOS:

  • Použití automatického rozložení a tříd velikostí – Vzhledem k tomu, že aplikaci Xamarin.iOS je teď možné spustit v režimu rozdělené obrazovky v zadané velikosti uživatele, už se při rozložení uživatelského rozhraní nemůžete spoléhat na zařízení, jeho velikost obrazovky ani orientaci. Pokud chcete zajistit správné škálování rozhraní vaší aplikace, budete muset použít Třídy automatického rozložení a velikosti. Další informace najdete v naší dokumentaci Úvod do sjednocených scénářů.
  • Efektivně používat prostředky – Vzhledem k tomu, že vaše aplikace teď může sdílet systém s jinou běžící aplikací, je důležité, aby vaše aplikace efektivně využívá systémové prostředky. Když je paměť zhuštěná, systém automaticky ukončí aplikaci, která spotřebovává nejvíce paměti. Další podrobnosti najdete v průvodci energetickou efektivitou společnosti Apple pro aplikace pro iOS.

Další informace o přípravě aplikace na rozdělené zobrazení najdete v dokumentaci společnosti Apple, která se týká iPad multitaskingu.

Obrázek na obrázku

Nová funkce Obrázek na 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 kdekoli na obrazovce nad jinými spuštěných aplikacemi.

Příklad obrázku v plovoucím okně s obrázkem

Stejně jako u slide over (Snímek přes) a Split View (Rozdělené zobrazení) má uživatel plnou kontrolu nad sledováním videa v režimu Obrázek. Pokud hlavní funkcí vaší aplikace je přehrát video, bude potřeba některé úpravy, aby se správně chovala v režimu PIP. V opačném případě se pro podporu PIP nevyžaduje žádná změna.

Aby vaše aplikace na žádost uživatele měla zobrazit video PIP, musíte použít avkit nebo rozhraní AV Foundation API. Rozhraní Media Player se v iOSu 9 odečítá a nepodporuje PIP.

Obrázek v obrázku je k dispozici pouze v iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 nebo iPad Mini 4. Další informace najdete v naší ukázkové aplikaci PictureInPicture a v dokumentaci k obrázku v rychlé zprovoznění Apple.

Podpora multitaskingu v aplikaci

U všech existujících aplikací Xamarin.iOS je podpora multitaskingu transparentní, pokud už vaše aplikace dodržuje průvodce návrhem a osvědčené postupy společnosti Apple pro iOS 8. To znamená, že aplikace by měla používat scénáře s automatickým rozložením a třídami velikostí pro rozložení Uživatelské rozhraní (další informace najdete v tématu Úvod do sjednocených scénářů).

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

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

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

Před iOSem 9 jste mohli aplikaci navrhnout s konkrétními velikostmi a orientací obrazovky zařízení. Vzhledem k tomu, že aplikaci je teď možné spustit na panelu Vysunout nebo v režimu Rozdělené zobrazení, může běžet v kompaktní nebo běžné třídě vodorovné velikosti v iPad bez ohledu na fyzickou orientaci nebo velikost obrazovky zařízení.

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

V aplikaci iPad zobrazení na celé obrazovce normální vodorovné a svislé třídy velikostí. Všechny iPhony kromě iPhone 6 Plus a iPhone 6s Plus mají třídy Compact Size v obou směrech v libovolné orientaci. Třídy iPhone 6 Plus a iPhone 6s Plus v režimu Na šířku mají běžnou vodorovnou třídu velikosti a kompaktní svislou třídu velikosti (podobně jako iPad Mini).

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

Orientace Primární aplikace Sekundární aplikace
Na výšku 75 % obrazovky
Kompaktní vodorovně
Normální svisle
25 % obrazovky
Kompaktní vodorovně
Normální svisle
Na šířku 75 % obrazovky
Běžná vodorovná
Normální svisle
25 % obrazovky
Kompaktní vodorovně
Normální svisle
Na šířku 50 % obrazovky
Kompaktní vodorovně
Normální svisle
50 % obrazovky
Kompaktní vodorovně
Normální svisle

Pokud se v příkladu aplikace MuliTask spustí na celé obrazovce iPad v režimu na šířku, zobrazí současně seznam i zobrazení podrobností:

Seznam a zobrazení podrobností prezentované ve stejnou dobu

Pokud se stejná aplikace spustí na panelu Slide Over, je rozložená jako třída Kompaktní vodorovná velikost a zobrazí pouze seznam:

Pouze seznam, který se zobrazí, když je zařízení vodorovné

Pokud chcete zajistit, aby se vaše aplikace v těchto situacích chovala správně, měli byste přijmout funkce Trait Collections spolu s třídami velikostí a splňovat IUIContentContainerIUITraitEnvironment rozhraní a . Další informace najdete v referenčních informacích ke třídám UITraitCollection společnosti Apple a v příručce Úvod do sjednocených scénářů.

Kromě toho už se při definování viditelné oblasti aplikace nemůžete spoléhat na hranice obrazovky zařízení. Místo toho budete muset použít meze oken aplikace. Vzhledem k tomu, že hranice oken jsou plně pod kontrolou uživatele, nemůžete je upravovat prostřednictvím kódu programu ani bránit uživateli ve změně těchto meze.

Nakonec musí vaše aplikace použít soubor scénáře k prezentaci spouštěcí obrazovky místo použití sady souborů obrázků .pnga podporovat všechny čtyři orientace rozhraní (Orientace na výšku, Obráceně na výšku, Na šířku vlevo a Na šířku), aby se daly zvážit spuštění na panelu Slide Over nebo v režimu Rozdělené zobrazení.

Vlastní hardwarové klávesové zkratky

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

S iOSem 9 si teď aplikace mohou vytvářet vlastní klávesové zkratky. Kromě toho jsou k dispozici některé základní klávesové zkratky, například Command-C (kopírování), Command-X (vyjmutí), Command-V (vložení) a Command-Shift-H (domů), aniž by na ně aplikace výslovně reagovala.

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

Přepínání aplikací

Pokud aplikace pro iOS 9 obsahuje klávesové zkratky, může uživatel podržet klávesu Command, Option nebo Control a zobrazit je v automaticky otevíraného okně:

Snímek obrazovky zobrazuje klávesové zkratky pro aplikaci.

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 vlastnost a vrátíme ji, aby zobrazení nebo CanBecomeFirstRespondertrue kontroler zobrazení mohl přijímat vstup z klávesnice.

Dále přepíšeme vlastnost a vytvoříme novou pro klávesovou zkratku KeyCommandsUIKeyCommandKeyCommands Po aktivaci stisknutí klávesy voláme metodu (kterou pomocí příkazu zpřístupníme pro iOS 9) a provedeme NewEntryExport požadovanou akci.

Pokud tuto aplikaci spustíme na počítači iPad připojenou hardwarovou klávesnicí a uživatel zadá Command-N,přidá se do seznamu nová položka. Pokud uživatel stiskne klávesu Command, zobrazí se seznam zástupců:

Snímek obrazovky znázorňuje zástupce pro novou položku pro aplikaci

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

Aspekty správy prostředků

I u aplikací, které už používají průvodce návrhem a osvědčené postupy pro iOS 8, může být problém efektivní správy prostředků. V iOSu 9 už aplikace nemají výhradní využití paměti, procesoru ani jiných systémových prostředků.

V důsledku toho je nutné aplikaci Xamarin.iOS vyladit tak, aby efektivně používat systémové prostředky nebo aby v situacích s nízkou pamětí museli čelit ukončení. Stejně tak to platí pro aplikace, které vyloučují multitasking, protože druhá aplikace může být pořád spuštěná na panelu Slide Over nebo v okně Obrázek, které vyžadují další prostředky nebo způsobují, že obnovovací frekvence klesne pod 60 snímků za sekundu.

Zvažte následující akce uživatelů a jejich důsledky:

  • Zadávání textu na panelu Slide Over (Přes snímek) – I když vaše aplikace nemá žádný textový vstup, můžete teď systémovou klávesnici zobrazit přes uživatelské rozhraní. V důsledku toho může aplikace potřebovat reagovat na oznámení zobrazované pomocí klávesnice (například zobrazení a skrytí klávesnice).
  • Spuštění druhé aplikace na panelu Slide Over (Snímek přes) – 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 pokrýt část rozhraní vaší 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 efektivní používání prostředků ve vaší aplikaci, měli byste provést následující:

  • Profilování aplikace pomocí nástroje – Zkontrolujte nevrácenou paměť, přílišné využití procesoru a oblasti, kde může aplikace blokovat hlavní vlákno.
  • Reakce na metody přechodu stavu – V souboru AppDelegate.cs přepište a odpovězte na metody změny stavu, jako je zadávání nebo vracení aplikace z pozadí. Uvolněte všechny nevyžařené prostředky, jako jsou obrázky, data nebo zobrazení a kontroler zobrazení.
  • Testování aplikací náročných na paměť vedle sebe – Aplikaci můžete spouštět pomocí zobrazení Slide Out (Vysunout) i Split View (Rozdělit zobrazení) na fyzickém hardwaru iOS s aplikací náročnou na paměť, jako je Mapy (v režimu satelitního zobrazení), a otestujte, jestli obě aplikace zůstávají responzivní a nehavaruje.

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

Odhlášení z multitaskingu

Apple sice navrhuje, aby všechny aplikace pro iOS 9 podporovaly multitasking, ale aplikace nemusí fungovat správně, například hry nebo aplikace z fotoaparátů, které vyžadují, aby celá obrazovka správně fungovala.

Aby se vaše aplikace Xamarin.iOS nespouštěla na panelu Vysunout nebo v režimu Rozdělené zobrazení, upravte soubor Info.plist projektu a zaškrtněte políčko Vyžaduje zobrazení na celé obrazovce:

Odhlášení z multitaskingu

Důležité

Když se z multitaskingu odloučete, zabráníte tím spuštění aplikace v zobrazení Vysunout nebo Rozdělit, ale nezabráníte tomu, aby se v aplikaci spouštěla jiná aplikace ve snímku nebo v obrázkovém videu.

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

Ve většině situací by aplikace měla uživateli umožnit přehrát libovolný obsah videa, který zobrazuje v plovoucím okně Obrázek. Můžou se ale zobrazit situace, kdy to nemusí být žádoucí, například videa scény vyříznutá hrami.

Pokud se chcete odhlásit z přehrávání videa PIP, proveďte v aplikaci následující:

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

Souhrn

Tento článek popisuje kroky potřebné k zajištění toho, aby se aplikace Xamarin.iOS spouštěla a chovala se správně v nové multitaskingové schopnosti iOSu 9 pro iPady. Kromě toho se týkalo odhlášení z multitaskingu u aplikací, u kterých to není vhodné.