Migracja aplikacji iOS Sender z pakietu SDK Cast w wersji 2 do platformy Cast Application Framework (CAF)

Wykonując poniższą procedurę, możesz przekonwertować aplikację wysyłającą na iOS z pakietu Cast SDK v2 do nadawcy CAF, która jest oparta GCKCastContext singleton.

Wprowadzenie

  • Nadawca CAF jest nadal rozpowszechniany w witrynę dla deweloperów Google Cast oraz CocoaPods, na przykład v2.
  • Dodano nowe zajęcia, w których odpowiedzialność za zachowanie zgodności z liście kontrolnej podczas projektowania Google Cast.
  • Nadawca CAF zapewnia widżety zgodne z wymaganiami dotyczącymi UX Cast. v2 nie zawiera żadnych komponentów UI i wymagała implementacji te widżety.
  • Projekt CAF Sender jest zgodny z projektem pakietu SDK Cast na Androida.
  • Nadawca CAF obsługuje kod bitowy, np. wersję 2.
  • Napisy w CAF są podobne do wersji 2.

Zależności

Funkcja nadawcy CAF obsługuje system iOS w wersji 8 i nowszych.

Zdarzenie inicjujące

W CAF wymagany jest jawny krok inicjowania platformy Cast. Ten wymaga zainicjowania GCKCastContext singleton przy użyciu odpowiedniego GCKCastOptions i określ identyfikator aplikacji odbiornika internetowego . Zwykle odbywa się to w AppDelegate Metoda -[application:didFinishLaunchingWithOptions:]:

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

Ten krok nie był wymagany w wersji 2.

Wykrywanie urządzeń

W CAF proces wykrywania jest uruchamiany i zatrzymywany automatycznie przez gdy aplikacja działa na pierwszym planie i działa w tle, . Klasy GCKDeviceScanner i GCKFilterCriteria z wersji 2 są został wycofany i nie należy go używać.

Przycisk przesyłania i okno przesyłania

W CAF przycisk i okno Cast są dostarczane przez platformę. Obsada przycisk można utworzyć i dodać do paska nawigacyjnego w następujący sposób:

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

Przycisk Cast można też dodać do scenorysu.

Gdy ktoś go kliknie, automatycznie wyświetli się okno Przesyłaj.

Sterowanie urządzeniem

W CAF sterowanie urządzeniem jest obsługiwane w dużej mierze przez platformę. Nadawca Aplikacja nie musi obsługiwać nawiązywania połączeń z urządzeniem ani uruchamiania Aplikacja odbiornika internetowego. Klasa w wersji 2 GCKDeviceManager jest wycofany i powinien nie można używać. Interakcja między nadawcą a odbiornikiem internetowym jest teraz reprezentowana „session”. CAF, GCKSessionManager klasa obsługuje cykl życia sesji automatycznie rozpoczyna i zatrzymuje sesję w odpowiedzi na gesty użytkownika: sesja rozpoczyna się, gdy użytkownik wybierze urządzenie przesyłające w oknie przesyłania, i zakończy się gdy użytkownik kliknie przycisk „Zatrzymaj przesyłanie”. w oknie przesyłania lub gdy aplikacja nadawcy zostanie zamknięta. Aplikacja nadawcy może zostać powiadomiona o sesji zdarzeń cyklu życia, rejestrując GCKSessionManagerListener z GCKSessionManager GCKSessionManagerListener określa metody wywołania zwrotnego dla wszystkich zdarzeń cyklu życia sesji.

GCKCastSession reprezentuje sesję z urządzeniem Cast. Klasa zawiera metody sterowania głośnością i stanami wyciszenia, które były poprzednio wykonane w wersji 2 przy użyciu metod na GCKDeviceManager

W wersji v2 funkcja GCKDeviceManagerDelegate powiadomienia o zmianach udostępniane przez protokół do stanu urządzenia, w tym do głośności, stanu wyciszenia, stanu gotowości itp. W CAF powiadomienia o zmianie głośności/stanu wyciszenia są dostarczane przez wywołanie zwrotne w funkcji GCKSessionManagerListener protokół; ci słuchacze są zarejestrowani w GCKSessionManager Wszystkie pozostałe powiadomienia o stanie urządzenia są dostarczono przez GCKCastDeviceStatusListener protokół; ci słuchacze są zarejestrowani w GCKCastSession

Logika ponownego połączenia

Tak jak w wersji 2, CAF próbuje ponownie nawiązać połączenia sieciowe, które utracone z powodu tymczasowej utraty sygnału Wi-Fi lub innych błędów sieci. To jest teraz na poziomie sesji; sesja może zostać zawieszona w tym przypadku połączenie zostanie przerwane i nastąpi przejście z powrotem do stanu „połączonego”; określ, kiedy połączenie zostało przywrócone. Platforma zapewnia ponowne połączenie W ramach tego procesu należy użyć aplikacji Web Receiver i ponownie podłączyć kanały Cast.

Oprócz tego funkcja CAF dodaje automatyczne wznawianie sesji. Jeśli nadawca aplikacja jest wysyłana w tle lub zakończona (przez przesunięcie palcem z powodu awarii) w trakcie sesji przesyłania platforma podjąć próbę wznowienia tej sesji, gdy aplikacja nadawcy powróci do na pierwszym planie lub po ponownym uruchomieniu; jest to przetwarzane automatycznie przez GCKSessionManager który generuje odpowiednie wywołania zwrotne dla każdego zarejestrowanego GCKSessionManagerListener instancji.

Rejestracja kanału niestandardowego

W wersji 2 kanały niestandardowe (zaimplementowane za pomocą GCKCastChannel podklasa lub GCKGenericChannel i delegata) zostali zarejestrowani w GCKDeviceManager. W CAF kanały niestandardowe są zamiast tego rejestrowane w funkcji GCKCastSession instancji. Można się zarejestrować na stronie GCKSessionManagerListener -[sessionManager:didStartCastSession:] metody wywołania zwrotnego. W przypadku aplikacji multimedialnych nie jest już konieczne bezpośrednie zarejestruj GCKMediaControlChannel; Więcej informacji znajdziesz w następnej sekcji.

Sterowanie multimediami

Klasa w wersji 2 GCKMediaControlChannel jest przestarzały i nie należy go używać. W CAF jest ona zastępowana przez nowy GCKRemoteMediaClient , która zapewnia równoważne funkcje w wygodniejszym interfejsie API. Nie jest konieczne bezpośrednie inicjowanie ani rejestrowanie tego obiektu. platforma automatycznie utworzy instancję obiektu i zarejestruje bazową kanał multimediów w momencie rozpoczęcia sesji, jeśli podłączana jest aplikacja odbiornika internetowego obsługuje przestrzeń nazw multimediów.

GCKRemoteMediaClient są dostępne za pomocą -[remoteMediaClient] właściwości GCKCastSession obiektu.

W wersji 2 wszystkie żądania mediów przesyłane GCKMediaControlChannel zwróci liczbowy identyfikator żądania, a metody GCKMediaControlChannelDelegate będzie podawać ten identyfikator podczas wysyłania powiadomień o realizacji żądania lub niepowodzenie.

W CAF wszystkie żądania mediów przesyłane GCKRemoteMediaClient zwróci błąd GCKRequest obiektu; ten obiekt ma powiązane GCKRequestDelegate protokół które mogą służyć do śledzenia postępów i ostatecznych wyników rozpatrzenia prośby.

Wersja 2 GCKMediaControlChannel; wysyła powiadomienia o zmianach stanu odtwarzacza na odbiorniku internetowym przez GCKMediaControlChannelDelegate W CAF parametr GCKRemoteMediaClient udostępnia równoważne wywołania zwrotne za pomocą GCKRemoteMediaClientListener protokołu. W GCKRemoteMediaClient, która umożliwia wielu komponentom nadawcy udostępnianie pojedynczą instancję GCKRemoteMediaClient powiązaną z sesją.

W wersji 2 to aplikacja nadawcy musiała przyjąć na siebie ciężar utrzymywania użytkownika interfejs zsynchronizowany ze stanem odtwarzacza w odbiorniku internetowym. W CAF klasa GCKUIMediaController ponosi większość tej odpowiedzialności; zobacz samouczek ćwiczeń z programowania w dokumentacji z przykładami korzystania z tego komponentu.

Nakładka wprowadzająca

Wersja 2 nie udostępnia wprowadzający w postaci interfejs nakładki.

CAF dodaje klasę GCKCastContext z metodą -[presentCastInstructionsViewControllerOnce] której aplikacja nadawcy może użyć do podświetlenia przycisku Cast, gdy jest on wyświetlany po raz pierwszy. użytkownikom.

Minikontroler

W wersji 2 musisz zaimplementować minikontroler od zera aplikacji nadawcy.

W CAF platforma udostępnia pasek sterowania, GCKUIMiniMediaControlsViewController który możesz dodać do scen, w których chcesz pokazać stałe elementów sterujących. Minikontroler można dodać do aplikacji wysyłającej na 2 sposoby:

Rozwinięty kontroler

W wersji 2 musisz wdrożyć od zera rozszerzony kontroler aplikacji nadawcy.

Dodania CAF GCKUIMediaController które można wykorzystać do łatwiejszej implementacji rozszerzonego kontrolera.

CAF dodaje gotowy widżet rozszerzonego kontrolera GCKUIExpandedMediaControlsViewController które możesz po prostu dodać do aplikacji. Nie musisz już wdrażać niestandardowej kreacji rozwiniętej za pomocą kontrolera GCKUIMediaController.

Logowanie debugowania

GCKLogger oraz GCKLoggerDelegate klas z wersji v2 są przenoszone do CAF z pewnymi zmianami i ulepszeniami.

GCKLoggerDelegate Metoda -[logFromFunction:message:] zostało wycofane na rzecz -[logMessage:fromFunction:].

Komunikaty logu platformy można teraz filtrować przez utworzenie odpowiedniej GCKLoggerFilter i przypisać ją przez ustawienie -[filter] właściwości GCKLogger – singleton.

Przykładowe aplikacje

Zalecamy zapoznanie się codelabs oraz przykładowych aplikacji napisanych pod kątem CAF.