Xamarin.iOS에서 iPad 멀티태스킹

iOS 9는 슬라이드 오버 또는 분할 보기를 사용하여 동시에 실행되는 두 개의 앱을 지원합니다. 또한 그림 속 그림을 재생하는 비디오도 지원합니다.

Split Screen ExamplePicture-in-Picture Example

iOS 9는 특정 iPad 하드웨어에서 동시에 두 개의 앱을 실행하기 위한 멀티태스킹 지원을 추가합니다. iPad 멀티태스킹은 다음 기능을 통해 지원됩니다.

  • 슬라이드 오버 - 사용자가 현재 실행 중인 주 앱의 약 25%를 차지하는 슬라이드 아웃 패널(언어 방향에 따라 화면의 오른쪽 또는 왼쪽)에서 두 번째 iOS 앱을 일시적으로 실행할 수 있습니다. 슬라이드 오버는 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 이상에 대해 빌드합니다.
  • 시작 화면에 Storyboard를 사용합니다(이미지 자산이 아님).
  • UI에 대해 자동 레이아웃 및 크기 클래스가 있는 Storyboard를 사용합니다.
  • 4개의 iOS 디바이스 방향(세로, 거꾸로 세로, 가로 왼쪽 & 가로 오른쪽)을 모두 지원합니다.

iPad 멀티태스킹 정보

iOS 9는 iPad 슬라이드 오버, 분할 보기(iPad Air 2, iPad Mini 4 및 iPad Pro 전용) 및 그림 그림의 도입으로 새로운 멀티태스킹 기능을 제공합니다. 다음 섹션에서 이러한 기능을 자세히 살펴보겠습니다.

위로 슬라이드

슬라이드 오버 기능을 사용하면 사용자가 두 번째 앱을 선택하고 작은 슬라이딩 패널에 표시하여 빠른 상호 작용을 제공할 수 있습니다. 슬라이드 오버 패널은 임시이며 사용자가 주 앱으로 다시 작업할 때 닫힙니다.

The Slide Over panel

기억해야 할 중요한 점은 사용자가 나란히 실행할 두 개의 앱을 결정하고 개발자가 이 프로세스를 제어할 수 없다는 것입니다. 따라서 Xamarin.iOS 앱이 슬라이드 오버 패널에서 올바르게 실행되도록 하기 위해 수행해야 할 몇 가지 사항이 있습니다.

  • 자동 레이아웃 및 크기 클래스 사용 - 이제 Xamarin.iOS 앱을 슬라이드 아웃 쪽 패널에서 실행할 수 있으므로 더 이상 디바이스, 화면 크기 또는 방향을 사용하여 UI를 레이아웃할 수 없습니다. 앱이 인터페이스의 크기를 올바르게 조정하도록 하려면 자동 레이아웃 및 크기 클래스를 사용해야 합니다. 자세한 내용은 통합 스토리보드 소개 설명서를 참조하세요.
  • 리소스를 효율적으로 사용 — 이제 앱이 다른 실행 중인 앱과 시스템을 공유할 수 있으므로 앱에서 시스템 리소스를 효율적으로 사용하는 것이 중요합니다. 메모리가 부족해지면 시스템에서 가장 많은 메모리를 사용하는 앱을 자동으로 종료합니다. 자세한 내용은 iOS 앱에 대한 Apple의 에너지 효율 가이드 를 참조하세요.

슬라이드 오버는 iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 또는 iPad Mini 4에서만 사용할 수 있습니다. 슬라이드 오버용 앱을 준비하는 방법에 대한 자세한 내용은 iPad 설명서에서 Apple의 멀티태스킹 개선 사항 채택을 참조하세요.

분할된 뷰

지원되는 iPad 하드웨어(iPad Air 2, iPad Mini 4 및 iPad Pro 전용)에서 사용자는 두 번째 앱을 선택하고 분할 화면 모드에서 현재 실행 중인 앱과 나란히 실행할 수 있습니다. 사용자는 화면 구분선으로 끌어서 각 앱이 차지하는 기본 화면의 백분율을 제어할 수 있습니다.

The Split View

Slide Over와 마찬가지로 사용자는 두 개의 앱을 나란히 실행하기로 결정하므로 개발자는 이 프로세스를 제어할 수 없습니다. 결과적으로 분할 보기는 Xamarin.iOS 앱에 유사한 요구 사항을 배치합니다.

  • 자동 레이아웃 및 크기 클래스 사용 - 이제 Xamarin.iOS 앱을 사용자가 지정한 크기로 분할 화면 모드로 실행할 수 있으므로 더 이상 디바이스, 화면 크기 또는 방향을 사용하여 UI를 레이아웃할 수 없습니다. 앱이 인터페이스의 크기를 올바르게 조정하도록 하려면 자동 레이아웃 및 크기 클래스를 사용해야 합니다. 자세한 내용은 통합 스토리보드 소개 설명서를 참조하세요.
  • 리소스를 효율적으로 사용 — 이제 앱이 다른 실행 중인 앱과 시스템을 공유할 수 있으므로 앱에서 시스템 리소스를 효율적으로 사용하는 것이 중요합니다. 메모리가 부족해지면 시스템에서 가장 많은 메모리를 사용하는 앱을 자동으로 종료합니다. 자세한 내용은 iOS 앱에 대한 Apple의 에너지 효율 가이드 를 참조하세요.

분할 보기를 위해 앱을 준비하는 방법에 대한 자세한 내용은 iPad 설명서에서 Apple의 멀티태스킹 개선 사항 채택을 참조하세요.

그림의 그림

그림의 새로운 그림 기능( PIP라고도 함)을 사용하면 사용자가 다른 실행 중인 앱 위의 화면 어디에나 배치할 수 있는 작은 부동 창에서 비디오를 볼 수 있습니다.

An example Picture in Picture floating window

슬라이드 오버 및 분할 보기와 마찬가지로 사용자는 그림 모드에서 비디오 시청을 완전히 제어할 수 있습니다. 앱의 주요 기능이 비디오를 시청하는 경우 PIP 모드에서 올바르게 작동하려면 일부 수정이 필요합니다. 그렇지 않으면 PIP를 지원하기 위해 변경할 필요가 없습니다.

앱이 사용자의 요청에 따라 PIP 비디오를 표시하려면 AVKit 또는 AV Foundation API를 사용해야 합니다. 미디어 플레이어 프레임워크는 iOS 9에서 감가상각되었으며 PIP를 지원하지 않습니다.

그림의 사진은 iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 또는 iPad Mini 4에서만 사용할 수 있습니다. 자세한 내용은 PictureInPicture 샘플 앱 및 그림 빠른 시작 설명서의 Apple 그림을 참조하세요.

앱에서 멀티태스킹 지원

기존 Xamarin.iOS 앱의 경우 앱이 이미 iOS 8에 대한 Apple의 디자인 가이드 및 모범 사례를 따르는 한 멀티태스킹을 지원하는 것은 투명한 작업입니다. 즉, 앱은 사용자 인터페이스 레이아웃에 대해 자동 레이아웃 및 크기 클래스가 있는 스토리보드를 사용해야 합니다(자세한 내용은 통합 스토리보드 소개 참조).

이러한 앱의 경우 멀티태스킹을 지원하고 해당 앱 내에서 잘 작동하려면 거의 또는 전혀 변경하지 않아도 됩니다. 앱의 UI가 C# 코드에서 직접 위치 지정 및 크기 조정과 같은 다른 메서드를 사용하여 만들어졌거나 특정 디바이스 화면 크기 또는 방향에 의존하는 경우 iOS 9 멀티태스킹을 올바르게 지원하려면 상당한 수정이 필요합니다.

새 Xamarin.iOS 앱에서 iOS 9 멀티태스킹을 지원하려면 앱의 모든 사용자 인터페이스 레이아웃에 대해 자동 레이아웃 및 크기 클래스가 있는 스토리보드를 다시 사용하고 다음 섹션의 지침을 구현합니다.

화면 크기 및 방향 고려 사항

iOS 9 이전에는 특정 디바이스 화면 크기 및 방향에 맞게 앱을 디자인할 수 있습니다. 이제 앱이 슬라이드 아웃 패널 또는 분할 보기 모드에서 실행될 수 있으므로 디바이스의 물리적 방향이나 화면 크기에 관계없이 iPad 압축 또는 일반 가로 크기 클래스에서 실행되는 자신을 찾을 수 있습니다.

Screen Size and Orientation Considerations

iPad 전체 화면 앱에는 일반 가로 및 세로 크기 클래스가 있습니다. 모든 아이폰하지만 iPhone 6 플러스와 iPhone 6s 플러스, 어떤 방향으로 양방향으로 컴팩트 사이즈 클래스가 있습니다. 가로 모드의 iPhone 6 Plus 및 iPhone 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

이러한 상황에서 앱이 올바르게 동작하도록 하려면 크기 클래스와 함께 특성 컬렉션을 채택하고 인터페이스 및 IUITraitEnvironment 인터페이스를 IUIContentContainer 준수해야 합니다. 자세한 내용은 Apple의 UITraitCollection 클래스 참조통합 스토리보드 소개 가이드를 참조하세요.

또한 더 이상 디바이스 화면 범위를 사용하여 앱의 표시 영역을 정의할 수 없습니다. 대신 앱의 창 범위를 사용해야 합니다. 창 범위는 사용자의 제어에 완전히 적용되므로 프로그래밍 방식으로 조정하거나 사용자가 이러한 범위를 변경하지 못하도록 방지할 수 없습니다.

마지막으로 앱은 스토리보드 파일을 사용하여 .png 이미지 파일 집합을 사용하는 대신 시작 화면을 표시하고 슬라이드 오버 패널 또는 분할 보기 모드에서 실행되는 것으로 간주될 네 가지 인터페이스 방향(세로, 거꾸로 세로, 가로 왼쪽 및 가로 오른쪽)을 모두 지원해야 합니다.

사용자 지정 하드웨어 바로 가기 키

iPad 실행되는 iOS 9에서 Apple은 하드웨어 키보드에 대한 지원을 확장했습니다. iPad는 항상 Bluetooth 통해 기본 외부 키보드 지원을 포함했으며 일부 키보드 제조업체는 하드 유선 iOS 관련 키를 포함하는 키보드를 만들었습니다.

이제 iOS 9를 사용하면 앱에서 고유한 사용자 지정 바로 가기 키를 만들 수 있습니다. 또한 앱이 특별히 작성되지 않고 Command-C(복사), Command-X(잘라내기), Command-V(붙여넣기) 및 Command-Shift-H(홈)와 같은 몇 가지 기본 바로 가기 키를 사용할 수 있습니다.

명령 탭 은 Mac OS와 마찬가지로 사용자가 키보드에서 앱 간에 빠르게 전환할 수 있도록 하는 앱 전환기를 표시합니다.

The app switcher

iOS 9 앱에 바로 가기 키가 포함된 경우 사용자는 명령, 옵션 또는 제어 키를 눌러 팝업에 표시할 수 있습니다.

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 하고 Command-N 키 입력에 대한 새 UIKeyCommand 키를 만듭니다. 키 입력이 활성화되면 메서드(명령을 사용하여 Export iOS 9에 노출됨)를 호출 NewEntry 하여 요청된 작업을 수행합니다.

하드웨어 키보드가 연결된 iPad 이 앱을 실행하고 사용자가 Command-N을 입력하면 목록에 새 항목이 추가됩니다. 사용자가 명령 키를 누른 경우 바로 가기 목록이 표시됩니다.

Screenshot shows the New Entry shortcut for an app.

예제 구현은 샘플 MultiTask 앱을 참조하세요.

리소스 관리 고려 사항

이미 iOS 8의 디자인 가이드 및 모범 사례를 사용하고 있는 앱의 경우에도 효율적인 리소스 관리가 여전히 문제가 될 수 있습니다. iOS 9에서 앱은 더 이상 메모리, CPU 또는 기타 시스템 리소스를 단독으로 사용하지 않습니다.

따라서 시스템 리소스를 효과적으로 사용하도록 Xamarin.iOS 앱을 미세 조정해야 합니다. 그렇지 않으면 메모리 부족 상황에서 종료될 수 있습니다. 두 번째 앱은 여전히 슬라이드 오버 패널 또는 그림 창의 그림 창에서 실행되어 추가 리소스가 필요하거나 새로 고침 속도가 초당 60프레임 이하로 떨어질 수 있으므로 멀티태스킹을 옵트아웃하는 앱의 경우도 마찬가지입니다.

다음 사용자 작업 및 해당 의미를 고려합니다.

  • 슬라이드 오버 패널에 텍스트 입력 - 앱에 텍스트 입력이 없더라도 이제 UI를 통해 시스템 키보드를 표시할 수 있습니다. 따라서 앱은 키보드 표시 알림(예: 키보드 표시 및 숨기기)에 응답해야 할 수 있습니다.
  • 슬라이드 오버 패널에서 두 번째 앱 실행 - 새 앱이 포그라운드에서 실행되고 메모리 및 CPU 주기와 같은 시스템 리소스에 대한 기존 앱과 경쟁합니다.
  • PIP 창에서 비디오 재생 - 이 창은 앱 인터페이스의 일부를 커버할 수 있지만 비디오를 시작한 앱은 여전히 백그라운드에서 실행되고 CPU 및 메모리 리소스를 사용합니다.

앱이 리소스를 효율적으로 사용하고 있는지 확인하려면 다음을 수행해야 합니다.

  • 계측을 사용하여 앱 프로필 - 메모리 누수, CPU 사용량 초과 및 앱이 주 스레드를 차단할 수 있는 영역을 확인합니다.
  • 상태 전환 메서드에 응답 - AppDelegate.cs 파일 재정의 및 백그라운드에서 앱 입력 또는 반환과 같은 상태 변경 메서드에 대한 응답입니다. 이미지, 데이터 또는 뷰 및 뷰 컨트롤러와 같은 필수되지 않은 자산을 해제합니다.
  • 메모리 집약적 앱과 함께 테스트 - 지도(위성 보기 모드)와 같은 메모리 집약적 앱이 있는 실제 iOS 하드웨어에서 슬라이드 아웃 및 분할 보기를 모두 사용하여 앱을 실행하고 두 앱이 응답성이 유지되고 충돌하지 않는지 테스트합니다.

리소스 관리에 대한 자세한 내용은 iOS 앱에 대한 Apple의 에너지 효율성 가이드 를 참조하세요.

멀티태스킹 옵트아웃

Apple은 모든 iOS 9 앱이 멀티태스킹을 지원한다고 제안하지만, 전체 화면이 올바르게 작동해야 하는 게임이나 카메라 앱과 같이 앱에 대한 매우 구체적인 이유가 있을 수 있습니다.

Xamarin.iOS 앱이 슬라이드 아웃 패널 또는 분할 보기 모드에서 실행되지 않도록 옵트아웃하려면 프로젝트의 Info.plist 파일을 편집하고 전체 화면 필요를 확인합니다.

Opting Out of Multitasking

중요

멀티태스킹을 옵트아웃하면 슬라이드 아웃 또는 분할 보기에서 앱이 실행되지 않지만 다른 앱이 슬라이드 아웃에서 실행되거나 그림 비디오의 그림이 앱과 함께 표시되지 않습니다.

PIP 비디오 재생을 사용하지 않도록 설정

대부분의 경우 앱은 사용자가 그림 부동 창의 그림에 표시되는 비디오 콘텐츠를 재생할 수 있도록 허용해야 합니다. 그러나 게임 컷 장면 비디오와 같이 바람직하지 않은 상황이 있을 수 있습니다.

PIP 비디오 재생을 옵트아웃하려면 앱에서 다음을 수행합니다.

  • 비디오를 표시하는 데 사용하는 AVPlayerViewController 경우 속성을 false.로 설정합니다AllowsPictureInPicturePlayback.
  • 비디오를 표시하는 데 사용하는 AVPlayerLayer 경우 인스턴스화 AVPictureInPictureController하지 마세요.
  • 비디오를 표시하는 데 사용하는 WKWebView 경우 속성을 false.로 설정합니다AllowsPictureInPictureMediaPlayback.

요약

이 문서에서는 iPad용 iOS 9의 새로운 멀티태스킹 기능에서 Xamarin.iOS 앱이 올바르게 실행되고 작동하도록 하는 데 필요한 단계를 설명했습니다. 또한 적합하지 않은 앱에 대한 멀티태스킹 옵트아웃을 다루었습니다.