Многозадачность iPad в Xamarin.iOS

iOS 9 поддерживает два приложения, работающие одновременно, используя режим слайда или разделения. Он также поддерживает воспроизведение видео с изображением на рисунке.

Split Screen ExamplePicture-in-Picture Example

IOS 9 добавляет поддержку многозадачной работы двух приложений одновременно на определенном оборудовании iPad. Многозадачность iPad поддерживается с помощью следующих функций:

  • Слайд сверху — позволяет пользователю временно запускать второе приложение iOS на панели с выходом (в правой или левой части экрана на основе направления языка), которое охватывает примерно 25 % основного приложения, работающего в настоящее время. Slide Over доступен только на iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 или iPad Mini 4.
  • Разделение представления — на поддерживаемом оборудовании iPad (только iPad Air 2, iPad Mini 4 и iPad Pro), пользователь может выбрать второе приложение и запустить его параллельно с приложением в режиме разбиения экрана. Пользователь может контролировать процент основного экрана, который занимает каждое приложение.
  • Рисунок на рисунке — для приложений, которые воспроизводит видеоконтент, видео теперь можно воспроизводить в перемещаемом и изменяемом окне, которое плавает над другими приложениями, работающими на устройстве iOS. Пользователь имеет полный контроль над размером и положением этого окна. Изображение на рисунке доступно только на iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 или iPad Mini 4.

При поддержке многозадачности в приложении следует учитывать несколько аспектов, в том числе:

Разработчик приложений также может отказаться от многозадачности, включая отключение воспроизведения видео PIP.

В этой статье рассматриваются действия, необходимые для обеспечения правильности работы приложения Xamarin.iOS в многозадачности или отказе от многозадачности, если оно не подходит для вашего приложения.

Многозадачность видео iPad

Краткое руководство по многозадачности

Для поддержки слайдов или разделения представления приложения необходимо выполнить следующие действия:

  • Создавайте для iOS 9 (или более поздней версии).
  • Используйте раскадровку для своего экрана запуска (а не для ресурсов изображений).
  • Используйте раскадровку с классами autolayout и size для пользовательского интерфейса.
  • Поддержка всех 4 ориентаций устройств iOS (книжная, перевернутая портретная, альбомная слева и альбомная справа).

О многозадачности iPad

iOS 9 предлагает новые возможности многозадачности на iPad с введением слайда сверху, разделением ( iPad Air 2, iPad Mini 4 и iPad Pro только) и рисунком на рисунке. Мы рассмотрим эти функции в следующих разделах.

Слайд поверх

Функция Слайд-over позволяет пользователю выбрать второе приложение и отобразить его на небольшой скользящей панели, чтобы обеспечить быстрое взаимодействие. Панель "Ползунок" является временной и закрывается, когда пользователь снова переходит к работе с основным приложением.

The Slide Over panel

Главное помнить, что пользователь решает, какие две приложения будут работать параллельно, и что разработчик не имеет контроля над этим процессом. В результате вам потребуется выполнить несколько действий, чтобы убедиться, что приложение Xamarin.iOS работает правильно на панели "Ползунок".

  • Используйте классы автолайта и размера. Так как приложение Xamarin.iOS теперь можно запускать на боковой панели, вы больше не можете полагаться на устройство, его размер экрана или ориентацию на макет пользовательского интерфейса. Чтобы обеспечить правильное масштабирование приложения, вам потребуется использовать классы autolayout и size. Дополнительные сведения см. в документации по унифицированным раскадровкам .
  • Эффективное использование ресурсов. Так как ваше приложение теперь может совместно использовать систему с другим запущенным приложением, важно эффективно использовать системные ресурсы. Когда память становится разреженной, система автоматически завершит работу приложения, которое потребляет большую часть памяти. Дополнительные сведения см. в руководстве по энергоэффективности Apple для приложений iOS.

Slide Over доступен только на iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 или iPad Mini 4. Чтобы узнать больше о подготовке приложения для слайдов, ознакомьтесь с документацией apple по внедрению многозадаковых улучшений в iPad .

Представление с разделением

На поддерживаемом оборудовании iPad (iPad Air 2, iPad Mini 4 и iPad Pro), пользователь может выбрать второе приложение и запустить его параллельно с приложением, работающим в настоящее время в режиме разбиения экрана. Пользователь может контролировать процент основного экрана, который занимает каждое приложение, перетаскивая разделитель на экране.

The Split View

Как и слайд-over, пользователь решает, какие два приложения будут работать параллельно и снова, разработчик не имеет контроля над этим процессом. В результате разделение представления устанавливает аналогичные требования к приложению Xamarin.iOS:

  • Используйте классы автолайта и размера. Так как приложение Xamarin.iOS теперь можно запускать в режиме разделенного экрана по указанному размеру пользователя, вы больше не можете полагаться на устройство, его размер экрана или ориентацию на макет пользовательского интерфейса. Чтобы обеспечить правильное масштабирование приложения, вам потребуется использовать классы autolayout и size. Дополнительные сведения см. в документации по унифицированным раскадровкам .
  • Эффективное использование ресурсов. Так как ваше приложение теперь может совместно использовать систему с другим запущенным приложением, важно эффективно использовать системные ресурсы. Когда память становится разреженной, система автоматически завершит работу приложения, которое потребляет большую часть памяти. Дополнительные сведения см. в руководстве по энергоэффективности Apple для приложений iOS.

Дополнительные сведения о подготовке приложения для разделения представления см. в документации apple по внедрению многозадаковых улучшений в iPad .

Рисунок на рисунке

Новая функция "Рисунок в рисунке" (также известная как PIP) позволяет пользователю просматривать видео в небольшом плавающем окне, где пользователь может размещаться на экране над другими запущенными приложениями.

An example Picture in Picture floating window

Как и в случае с слайдами и разделением представления, пользователь имеет полный контроль над просмотром видео в режиме рисунка в режиме рисунка. Если основная функция приложения заключается в просмотре видео, потребуется внести некоторые изменения, чтобы правильно вести себя в режиме PIP. В противном случае для поддержки PIP не требуется никаких изменений.

Чтобы приложение отображалось видео PIP по запросу пользователя, вам потребуется использовать AVKit или API AV Foundation. Платформа Медиаплеер устарела в iOS 9 и не поддерживает PIP.

Изображение на рисунке доступно только на iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 или iPad Mini 4. Дополнительные сведения см. в документации по примеру приложения PictureInPicture и Apple в кратком руководстве по началу работы с рисунками.

Поддержка многозадачности в приложении

Для любого существующего приложения Xamarin.iOS поддержка многозадачности является прозрачной задачей, если ваше приложение уже следует руководствам по проектированию и рекомендациям Apple для iOS 8. Это означает, что приложение должно использовать раскадровки с классами autolayout и size для макетов пользовательского интерфейса (дополнительные сведения см . в разделе "Общие сведения об унифицированных раскадровках ").

Для этих приложений мало или нет изменений, необходимых для поддержки многозадачности и правильного поведения в нем. Если пользовательский интерфейс вашего приложения создан с помощью других методов, таких как непосредственное размещение и изменение размера элементов пользовательского интерфейса в коде C# или если он использует определенные размеры экрана устройства или ориентации, потребуется значительное изменение для правильной поддержки многозадачности iOS 9.

Для поддержки многозадачности iOS 9 для любого нового приложения Xamarin.iOS снова используйте раскадровки с классами autolayout и size для всех макетов пользовательского интерфейса приложения и реализуйте инструкции в следующих разделах.

Рекомендации по размеру экрана и ориентации

Перед iOS 9 вы можете разработать приложение на основе определенных размеров экрана устройства и ориентации. Так как приложение теперь можно запускать на панели "Слайд-выход" или в режиме разделенного представления, оно может находиться в компактном или регулярном горизонтальном классе размера на iPad независимо от физической ориентации или размера экрана устройства.

Screen Size and Orientation Considerations

На iPad приложение с полным экраном имеет обычные горизонтальные и вертикальные классы размера. Все i Телефон, но i Телефон 6 Plus и i Телефон 6s Plus, имеют классы Compact Size в обоих направлениях в любой ориентации. I Телефон 6 Плюс и i Телефон 6s Plus в альбомном режиме имеют обычный горизонтальный класс размера и компактный вертикальный класс размера (так же, как iPad Mini).

На устройствах iPad, поддерживающих режим слайдов и разбиения, вы можете в конечном итоге использовать следующие сочетания:

Ориентация Основное приложение Дополнительное приложение
Книжная 75 % экрана
Компактный горизонтальный
Обычная вертикали
25 % экрана
Компактный горизонтальный
Обычная вертикали
Альбомная 75 % экрана
Обычный горизонтальный
Обычная вертикали
25 % экрана
Компактный горизонтальный
Обычная вертикали
Альбомная 50 % экрана
Компактный горизонтальный
Обычная вертикали
50 % экрана
Компактный горизонтальный
Обычная вертикали

В примере приложения MuliTask , если он запускается в полноэкранном режиме на iPad в альбомном режиме, он будет отображать как список, так и представление сведений одновременно:

The list and the detail view presented at the same time

Если одно и то же приложение выполняется на панели "Ползунок", оно размещается в виде класса "Компактный горизонтальный размер" и отображается только список:

Only the list presented when the device is horizontal

Чтобы убедиться, что ваше приложение работает правильно в этих ситуациях, следует внедрить коллекции атрибутов вместе с классами размеров и соответствовать IUIContentContainer интерфейсам.IUITraitEnvironment Дополнительные сведения см. в справочнике по классам UITraitCollection в Apple и нашем руководстве по унифицированным раскадровкам .

Кроме того, вы больше не можете полагаться на границы экрана устройств для определения видимой области приложения, вместо этого потребуется использовать границы окна приложения. Так как границы окна полностью находятся под контролем пользователя, вы не можете программным образом настроить их или запретить пользователю изменять эти границы.

Наконец, приложение должно использовать раскадровный файл, чтобы представить экран запуска, а не использовать набор файлов изображений .png и поддерживать все четыре ориентации интерфейса (книжный, перевернутый книжный, альбомный левый и альбомный правый) для запуска на панели слайдов или в режиме разбиения.

Пользовательские сочетания клавиш оборудования

В iOS 9, работающем на iPad, Apple имеет расширенную поддержку аппаратных клавиатур. IPad всегда включали базовую поддержку внешней клавиатуры через Bluetooth и некоторые производители клавиатуры создали клавиатуры, которые включали жесткие клавиши iOS.

Теперь с iOS 9 приложения могут создавать собственные пользовательские сочетания клавиш. Кроме того, некоторые основные сочетания клавиш доступны, как Command-C (copy), Command-X (вырезать), Command-V (вставка) и Command-Shift-H (главная), без специально написанного им ответа приложения.

Command-Tab откроет переключатель приложений, который позволяет пользователю быстро переключаться между приложениями с клавиатуры, как и Mac OS:

The app switcher

Если приложение iOS 9 включает сочетания клавиш, пользователь может удерживать нажатой клавиши Command, Option или Control , чтобы отобразить их во всплывающем окреплике:

Screenshot shows the keyboard shortcuts for an app.

Определение пользовательских сочетаний клавиш

Если мы добавим следующий код в контроллер представления или представления в нашем приложении, когда отображается это представление или контроллер, будет доступно пользовательское сочетание клавиш:

#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

Во-первых, мы переопределим CanBecomeFirstResponder свойство и возвращаем true , чтобы контроллер представления или представления может получать ввод клавиатуры.

Затем переопределите KeyCommands свойство и создадим новый UIKeyCommand для нажатия клавиш Command-N . При активации нажатия клавиш мы вызываем NewEntry метод (который мы подвергаем iOS 9 с помощью Export команды) для выполнения запрошенного действия.

Если мы запускаем это приложение на iPad с аппаратной клавиатурой, подключенной и типы пользователей Command-N, новая запись будет добавлена в список. Если пользователь удерживает клавишу COMMAND , отобразится список сочетаний клавиш:

Screenshot shows the New Entry shortcut for an app.

Пример приложения MultiTask см. в примере реализации.

Рекомендации по управлению ресурсами

Даже для приложений, которые уже используют руководства по проектированию iOS 8 и рекомендации, эффективное управление ресурсами может по-прежнему быть проблемой. В iOS 9 приложения больше не используют память, ЦП или другие системные ресурсы.

В результате необходимо точно настроить приложение Xamarin.iOS для эффективного использования системных ресурсов или в условиях низкой памяти. Это равно верно для приложений, которые отказались от многозадачности, так как второе приложение по-прежнему может быть запущено на панели "Ползунок" или в окне "Рисунок", требующее дополнительных ресурсов или что приводит к сокращению частоты обновления ниже 60 кадров в секунду.

Рассмотрим следующие действия пользователя и их последствия.

  • Ввод текста на панели слайд-переверх. Даже если в приложении нет текстовых данных, системная клавиатура теперь может отображаться по его пользовательскому интерфейсу. В результате приложению может потребоваться ответить на уведомления о отображении клавиатуры (например, отображение и скрытие клавиатуры).
  • Запуск второго приложения на панели "Слайд-наверх" — новое приложение теперь работает на переднем плане и конкурирует с существующим приложением для системных ресурсов, таких как память и циклы ЦП.
  • Воспроизведение видео в окне PIP — это не только может охватывать часть интерфейса приложения, но приложение, которое запустило видео, по-прежнему работает в фоновом режиме и потребляет ресурсы ЦП и памяти.

Чтобы убедиться, что ваше приложение эффективно использует ресурсы, выполните следующие действия:

  • Профилирование приложения с помощью инструментов — проверка утечки памяти, переполнение использования ЦП и областей, в которых приложение может блокировать основной поток.
  • Реагирование на методы перехода состояния. В файле AppDelegate.cs переопределение и ответ на методы изменения состояния, такие как ввод или возврат приложения из фонового режима. Выпустите все необязаемые ресурсы, такие как изображения, данные или представления и контроллер представления.
  • Тестирование параллельно с приложениями с интенсивной памятью. Запустите приложение с помощью слайд-аута и разделения представления на физическом оборудовании iOS с интенсивным приложением, например Карты (в режиме вспомогательного просмотра) и проверьте, что оба приложения остаются адаптивными и не завершаются сбоем.

Дополнительные сведения об управлении ресурсами см. в руководстве по энергоэффективности Apple для приложений iOS.

Отказ от многозадачности

Хотя Apple предлагает, что все приложения iOS 9 поддерживают многозадачность, могут быть очень конкретные причины для приложения не слишком, например игры или приложения камеры, которые требуют правильной работы полноэкранного экрана.

Чтобы приложение Xamarin.iOS не выполнялось на панели слайд-аут или в режиме разделения, измените файл Info.plist проекта и проверка Требуется полный экран:

Opting Out of Multitasking

Внимание

При отказе от многозадачности приложение не будет работать в слайд-ауте или режиме разделения, это не препятствует запуску другого приложения в слайд-ауте или рисунке в видео на рисунке вместе с приложением.

Отключение воспроизведения видео PIP

В большинстве случаев приложение должно позволить пользователю воспроизводить любое видеосодержимое, отображающееся в окне рисунка в плавающем окне рисунка. Однако могут возникнуть ситуации, когда это может быть не нужно, например видео среза игры.

Чтобы отказаться от воспроизведения видео PIP, выполните следующие действия в приложении:

  • Если вы используете AVPlayerViewController видео для отображения видео, задайте AllowsPictureInPicturePlayback для свойства значение false.
  • Если вы используете AVPlayerLayer видео для отображения, не создайте экземпляр AVPictureInPictureController.
  • Если вы используете WKWebView видео для отображения видео, задайте AllowsPictureInPictureMediaPlayback для свойства значение false.

Итоги

В этой статье описаны действия, необходимые для обеспечения правильности работы приложения Xamarin.iOS в новой многозадачности iOS 9 для iPad. Кроме того, он рассмотрел отказ от многозадачности приложений, где он не подходит.