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:
Pozwól platformie Cast zarządzać układem minikontrolera przez opakowanie z dotychczasowego kontrolera widoku
GCKUICastContainerViewController
i dodanie elementuGCKUIMiniMediaControlsViewController
u dołu widoku.Dodaj minikontroler bezpośrednio do dotychczasowego kontrolera za pomocą:
-[createMiniMediaControlsViewController]
aby utworzyćGCKUIMiniMediaControlsViewController
. a potem dodać ją do kontrolera widoku kontenera jako widok podrzędny.
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.