iOS 발신자 앱을 Cast SDK v2에서 Cast 애플리케이션 프레임워크 (CAF)로 이전

다음 절차를 통해 Cast SDK에서 iOS 발신기 앱을 변환할 수 있습니다. v2와 CAF 발신자로 전달되며 이는 GCKCastContext 싱글톤입니다.

소개

  • CAF 발신자는 여전히 Google Cast 개발자 웹사이트 CocoaPods(예: v2)
  • 확인하세요.
  • CAF 발신자는 Cast UX 요구사항을 준수하는 위젯을 제공합니다. v2 은 UI 구성요소를 제공하지 않았으며, 사용할 수 있습니다.
  • CAF 발신자 디자인은 Cast Android SDK 디자인과 일치합니다.
  • CAF 발신자는 v2와 같은 비트코드를 지원합니다.
  • CAF의 자막 방송은 v2와 유사합니다.

종속 항목

CAF 발신자는 iOS 버전 8 이상을 지원합니다.

초기화

CAF에서는 Cast 프레임워크에 명시적 초기화 단계가 필요합니다. 이 포드의 상태를 GCKCastContext 드림 이때 적절한 GCKCastOptions 웹 수신기 애플리케이션 ID 및 기타 전역적 있습니다. 이 작업은 일반적으로 AppDelegate에서 실행됩니다. -[application:didFinishLaunchingWithOptions:] 메서드:

GCKCastOptions *options = [[GCKCastOptions alloc]
    initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];

v2에서는 이 단계가 필요하지 않았습니다.

기기 검색

CAF에서는 Search Appliance에 의해 자동으로 검색 프로세스가 시작 및 중지되고 프레임워크가 포그라운드로 나오고 백그라운드로 이동하면 각각 1개의 값으로 사용합니다. v2의 GCKDeviceScannerGCKFilterCriteria 클래스는 다음과 같습니다. 사용해서는 안 됩니다

전송 버튼 및 전송 대화상자

CAF에서 전송 버튼과 대화상자는 프레임워크에 의해 제공됩니다. 출연진 버튼은 다음과 같이 인스턴스화하여 탐색 메뉴에 추가할 수 있습니다.

GCKUICastButton *castButton =
    [[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
    [[UIBarButtonItem alloc] initWithCustomView:castButton];

스토리보드에 전송 버튼을 추가할 수도 있습니다.

누군가 버튼을 탭하면 전송 대화상자가 자동으로 표시됩니다.

기기 제어

CAF에서 기기 제어는 주로 프레임워크에 의해 처리됩니다. 발신자 애플리케이션이 기기에 연결되고 애플리케이션이 실행되어야 하는 웹 수신기 애플리케이션 v2 클래스 GCKDeviceManager 드림 지원 중단되었으며 사용할 수 없습니다. 이제 발신자와 웹 수신자 간의 상호작용이 'session' CAF GCKSessionManager 드림 클래스는 세션 수명 주기를 처리하고 사용자 동작(세션)에 대한 응답으로 세션을 자동으로 시작 및 중지합니다. 사용자가 전송 대화상자에서 Cast 기기를 선택하면 시작되고 종료됨 사용자가 '전송 중지'를 탭할 때 버튼을 클릭하거나 자동으로 종료됩니다. 발신기 애플리케이션은 세션에 대한 알림을 받을 수 있습니다. 수명 주기 이벤트를 추가하여 GCKSessionManagerListener 드림 다음 코드로 교체합니다. GCKSessionManagerGCKSessionManagerListener 드림 프로토콜은 모든 세션 수명 주기 이벤트에 대한 콜백 메서드를 정의합니다.

GCKCastSession 드림 클래스는 Cast 기기 세션을 나타냅니다. 클래스 에는 기기 볼륨과 음소거 상태를 제어하는 메서드가 있습니다. v2에서 v2의 메서드를 사용하여 GCKDeviceManager

v2에서 GCKDeviceManagerDelegate 드림 프로토콜이 변경사항 알림을 제공함 볼륨, 음소거 상태, 대기 상태 등과 같은 디바이스 상태에 영향을 줍니다. CAF에서 볼륨/음소거 상태 변경 알림은 콜백을 통해 전달됩니다. 메서드를 GCKSessionManagerListener 드림 프로토콜 이러한 리스너는 GCKSessionManager 나머지 기기 상태 알림은 모두 한 가지 GCKCastDeviceStatusListener 드림 프로토콜 이러한 리스너는 GCKCastSession

재연결 로직

v2와 마찬가지로 CAF는 v2의 네트워크 연결을 다시 설정하려고 일시적인 Wi-Fi 신호 손실 또는 기타 네트워크 오류로 인해 손실될 수 있습니다. 지금은 세션 수준에서 수행되며 세션이 '정지됨' 상태로 전환되고 상태가 되면 연결이 끊어지고 '연결됨' 상태로 다시 전환됩니다. 상태를 연결이 복원됩니다. 프레임워크는 이 API에 다시 연결하여 웹 수신기 애플리케이션을 연결하고 Cast 채널을 다시 연결하는 과정입니다.

또한 CAF는 자동 세션 재개도 추가합니다. 발신자가 애플리케이션이 백그라운드로 전송되거나 (뒤로 스와이프하거나, 전송 세션이 진행되는 동안 프레임워크가 세션 재개를 시도해야 합니다. 포그라운드에서 발생하거나 다시 실행되는 경우 이 작업은 포드 내에서 GCKSessionManager님, 그러면 등록된 모든 이벤트에서 적절한 콜백을 GCKSessionManagerListener 인스턴스

맞춤 채널 등록

v2에서는 맞춤 채널( GCKCastChannel 드림 서브클래스 또는 GCKGenericChannel 및 위임)이 GCKDeviceManager: CAF에서는 맞춤 채널이 GCKCastSession 드림 인스턴스를 만들 수 있습니다 등록은 다음에서 수행할 수 있습니다. GCKSessionManagerListener 드림 -[sessionManager:didStartCastSession:] 콜백 메서드를 호출합니다. 미디어 애플리케이션의 경우 더 이상 등록 GCKMediaControlChannel 자세한 내용은 다음 섹션을 참고하세요.

미디어 제어

v2 클래스 GCKMediaControlChannel 드림 지원 중단되었으므로 사용해서는 안 됩니다. CAF에서는 새로운 GCKRemoteMediaClient 드림 클래스에 포함되어 있으며 이는 보다 편리한 API에서 동일한 기능을 제공합니다. 이 객체를 명시적으로 초기화하거나 등록할 필요가 없습니다. 프레임워크는 자동으로 객체를 인스턴스화하고 기본 웹 수신기 애플리케이션이 연결되어 있는 경우 세션 시작 시 미디어 채널 미디어 네임스페이스를 지원합니다.

GCKRemoteMediaClient 드림 GCP 콘솔에서 -[remoteMediaClient] 속성 GCKCastSession 객체를 지정합니다.

v2에서는 GCKMediaControlChannel 드림 은 숫자 요청 ID를 반환하고 GCKMediaControlChannelDelegate 은 요청 완료에 대한 알림을 보낼 때 이 ID를 제공하거나 있습니다

CAF에서는 GCKRemoteMediaClient 드림 은 GCKRequest object; 이 객체에는 GCKRequestDelegate 프로토콜 요청의 진행 상황과 최종 결과를 추적하는 데 사용할 수 있습니다.

v2 GCKMediaControlChannel 웹 수신기의 미디어 플레이어 상태 변경에 대한 알림을 보냅니다. 을(를) 통해 GCKMediaControlChannelDelegate CAF에서 GCKRemoteMediaClient 드림 은 GCKRemoteMediaClientListener 사용할 수 있습니다 모든 리스너는 GCKRemoteMediaClient를 사용하면 여러 발신자 구성요소가 세션과 연결된 GCKRemoteMediaClient의 단일 인스턴스입니다.

v2에서 발신기 애플리케이션은 사용자를 보호해야 하는 인터페이스에 있어야 합니다. CAF에서 클래스는 GCKUIMediaController 드림 이러한 책임이 대부분을 맡습니다. 자세한 내용은 Codelab 튜토리얼 이 구성요소를 사용하는 방법에 대한 예시 문서를 참조하세요.

소개 오버레이

V2는 소개 오버레이 UI를 참조하세요.

CAF에 클래스 추가 GCKCastContext 드림 메서드 사용 -[presentCastInstructionsViewControllerOnce] 전송 버튼을 표시할 때 발신기 앱에서 이를 강조 표시하는 데 사용할 수 있습니다. .

미니 컨트롤러

v2에서는 처음부터 미니 컨트롤러를 구현해야 하는데, 보낼 수 있습니다.

CAF에서 프레임워크는 컨트롤 바를 제공합니다. GCKUIMiniMediaControlsViewController님, 영구 예측 UI를 표시할 장면에 컨트롤을 탭합니다. 미니 컨트롤러를 발신기 앱에 추가하는 방법에는 두 가지가 있습니다.

확장 컨트롤러

v2에서는 처음부터 확장 컨트롤러를 구현해야 합니다. 전송할 수 있습니다.

CAF 추가 GCKUIMediaController님, 이 API를 사용하면 확장 컨트롤러를 보다 쉽게 구현할 수 있습니다.

사전 빌드된 확장 컨트롤러 위젯을 추가한 CAF GCKUIExpandedMediaControlsViewController 드림 앱에 추가하기만 하면 됩니다 더 이상 맞춤 확장 소재를 구현할 필요가 없습니다. GCKUIMediaController을 사용합니다.

디버그 로깅

GCKLogger 드림 및 GCKLoggerDelegate 일부 변경 및 개선과 함께 v2의 클래스가 CAF로 이전됩니다.

GCKLoggerDelegate 드림 -[logFromFunction:message:] 메서드에는 지원 중단되어 -[logMessage:fromFunction:]입니다.

이제 프레임워크 로그 메시지는 적절한 GCKLoggerFilter 드림 gcloud 명령어를 사용하여 -[filter] 속성 GCKLogger 싱글톤

샘플 앱

자세한 내용은 Codelab 및 CAF용으로 작성된 샘플 앱.