Mit dem folgenden Verfahren kannst du deine iOS-Sender-App aus dem Cast SDK konvertieren v2 an den CAF-Sender gesendet, GCKCastContext Singleton.
Einführung
- Der CAF-Sender wird weiterhin auf der Google Cast-Entwicklerwebsite und CocoaPods wie v2.
- Es wurden neue Klassen hinzugefügt, die die Einhaltung der Google Cast-Design-Checkliste ansehen.
- Der CAF-Sender stellt Widgets bereit, die den Cast UX-Anforderungen entsprechen. v2 keine UI-Komponenten bereitgestellt haben und Sie für diese Widgets.
- Das Design des CAF-Senders entspricht dem Design des Cast Android SDK.
- CAF-Sender unterstützt Bitcode, wie z. B. v2.
- Die Untertitelung in CAF ähnelt der in Version 2.
Abhängigkeiten
Der CAF-Sender unterstützt iOS 8 und höher.
Initialisierung
In CAF ist ein expliziter Initialisierungsschritt für das Cast-Framework erforderlich. Dieses
beinhaltet die Initialisierung der
GCKCastContext
Singleton mit einem geeigneten
GCKCastOptions
zur Angabe der Web Receiver-Anwendungs-ID und jeder anderen globalen
Optionen. Dies erfolgt normalerweise im AppDelegate
-[application:didFinishLaunchingWithOptions:]
-Methode:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
Dieser Schritt war in Version 2 nicht erforderlich.
Geräteerkennung
In CAF wird der Erkennungsprozess automatisch vom
wenn die App in den Vordergrund wechselt und in den Hintergrund wechselt,
. Die Klassen GCKDeviceScanner
und GCKFilterCriteria
aus Version 2 sind
und sollten nicht mehr verwendet werden.
Cast-Symbol und Streaming-Dialogfeld
In CAF werden das Cast-Symbol und das Dialogfeld vom Framework bereitgestellt. Die Besetzung kann wie folgt instanziiert und zur Navigationsleiste hinzugefügt werden:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
Sie können das Cast-Symbol auch zum Storyboard hinzufügen.
Wenn jemand auf die Schaltfläche tippt, wird automatisch das Cast-Dialogfeld angezeigt.
Gerätesteuerung
In CAF wird die Gerätesteuerung weitgehend vom Framework übernommen. Absender
App nicht für die Verbindung mit dem Gerät und das Starten der
Web Receiver-Anwendung. Die v2-Klasse
GCKDeviceManager
ist veraltet und sollte
nicht verwendet werden. Die Interaktion zwischen Sender und Webempfänger wird jetzt als
"session" an. CAF
GCKSessionManager
um den Sitzungslebenszyklus und
Automatisches Starten und Beenden von Sitzungen als Reaktion auf Nutzergesten: eine Sitzung
wird gestartet, wenn der Nutzer im Cast-Dialogfeld ein Übertragungsgerät auswählt, und wird beendet.
wenn der Nutzer auf die Schaltfläche „Streaming beenden“ im Cast-Dialogfeld klicken oder wenn der
Absender-App selbst beendet wird. Die Absenderanwendung kann über Sitzung benachrichtigt werden
Lebenszyklus-Ereignissen durch Registrieren eines
GCKSessionManagerListener
mit dem
GCKSessionManager
Die
GCKSessionManagerListener
-Protokoll definiert Callback-Methoden für alle Lebenszyklusereignisse der Sitzung.
Die
GCKCastSession
-Klasse steht für eine Sitzung mit einem Übertragungsgerät. Die Klasse
bietet Methoden zum Steuern der Gerätelautstärke und zum Stummschalten.
die zuvor in Version 2 mit den Methoden
GCKDeviceManager
In Version 2 enthält der Parameter
GCKDeviceManagerDelegate
Protokoll bereitgestellte Benachrichtigungen über Änderungen
zum Gerätestatus, einschließlich Lautstärke, Stummschaltung, Stand-by-Status usw.
In CAF werden Benachrichtigungen über eine Änderung der Lautstärke oder Stummschaltung per Rückruf zugestellt.
in der
GCKSessionManagerListener
Protokoll. werden diese Listener im
GCKSessionManager
Alle verbleibenden Gerätestatusbenachrichtigungen
die über eine
GCKCastDeviceStatusListener
Protokoll. werden diese Listener im
GCKCastSession
Logik für die erneute Verbindung
Wie bei v2 versucht CAF, Netzwerkverbindungen wiederherzustellen, aufgrund eines vorübergehenden WLAN-Signals oder anderer Netzwerkfehler verloren gehen. Das ist jetzt auf Sitzungsebene durchgeführt, kann eine Sitzung in eine "gesperrte" wenn der Parameter wird die Verbindung unterbrochen und sie wechselt wieder zu „verbunden“. Zustand, wenn Verbindung wurde wiederhergestellt. Das Framework stellt die Verbindung zum Web Receiver App und stellen dabei die Verbindung aller Übertragungskanäle wieder her.
Außerdem fügt CAF eine automatische Sitzungswiederaufnahme hinzu. Wenn der Absender
Anwendung in den Hintergrund gesendet oder beendet wird (durch Wegwischen oder
weil es einen Absturz gibt), während das Streaming läuft, wird das Framework
versuchen, diese Sitzung fortzusetzen, wenn die Absenderanwendung zur
im Vordergrund ausgeführt werden oder neu gestartet wird, wird dies automatisch vom
GCKSessionManager
,
die die entsprechenden Callbacks für alle registrierten
GCKSessionManagerListener
Instanzen.
Registrierung eines benutzerdefinierten Channels
In Version 2 wurden benutzerdefinierte Channels, die entweder mithilfe eines
GCKCastChannel
abgeleitete Klasse oder eine
GCKGenericChannel
und Bevollmächtigten) wurden beim
GCKDeviceManager
In CAF werden benutzerdefinierte Channels stattdessen mit dem
GCKCastSession
Instanz. Die Registrierung kann in der
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
. Für Medienanwendungen ist es nicht mehr erforderlich,
Registrieren Sie die
GCKMediaControlChannel
;
finden Sie im folgenden Abschnitt weitere Informationen.
Mediensteuerung
Die v2-Klasse
GCKMediaControlChannel
ist veraltet und sollte nicht mehr verwendet werden. In CAF wird es durch das neue
GCKRemoteMediaClient
-Klasse, die gleichwertige Funktionen in einer praktischeren API bietet.
Es ist nicht erforderlich, dieses Objekt explizit zu initialisieren oder zu registrieren. die
instanziiert das Framework automatisch das Objekt und registriert die zugrunde liegende
Medienkanal zum Beginn der Sitzung, wenn eine Verbindung zur Web Receiver-Anwendung besteht
Medien-Namespace unterstützt wird.
Die
GCKRemoteMediaClient
kann mit der
-[remoteMediaClient]
der Eigenschaft des
GCKCastSession
-Objekt enthält.
In Version 2 werden alle Medienanfragen, die auf der
GCKMediaControlChannel
eine numerische Anfrage-ID und Methoden für
GCKMediaControlChannelDelegate
diese ID beim Senden von Benachrichtigungen
über den Abschluss einer Anfrage
Fehler.
Im CAF werden alle Medienanfragen, die am
GCKRemoteMediaClient
wird ein
GCKRequest
Objekt; diesem Objekt ein zugehöriges
GCKRequestDelegate
Protokoll
mit der der Fortschritt und das Endergebnis der Anfrage verfolgt werden kann.
Die Version 2
GCKMediaControlChannel
;
sendet Benachrichtigungen über Änderungen des Mediaplayer-Status auf dem Web Receiver
über das
GCKMediaControlChannelDelegate
Im CAF
GCKRemoteMediaClient
stellt äquivalente Callbacks über seine
GCKRemoteMediaClientListener
Protokoll. Eine beliebige Anzahl von Listenern kann mit dem
GCKRemoteMediaClient
, wodurch mehrere Absenderkomponenten die Möglichkeit haben,
einzelne Instanz von GCKRemoteMediaClient
, die der Sitzung zugeordnet ist.
In Version 2 musste die Senderanwendung die Last übernehmen, den Nutzer
mit dem Mediaplayer-Status auf dem Web Receiver synchronisiert. In CAF hat der Kurs
GCKUIMediaController
übernimmt einen Großteil dieser Verantwortung; sieh dir die
Codelab-Tutorial
Dokumentation finden Sie Beispiele für die Verwendung dieser Komponente.
Einleitendes Overlay
V2 bietet keine einführende Overlay-Benutzeroberfläche
CAF fügt Klasse hinzu
GCKCastContext
mit einer Methode
-[presentCastInstructionsViewControllerOnce]
mit dem eine Absender-App das Cast-Symbol hervorheben kann, wenn es zum ersten Mal angezeigt wird
für Nutzende zu machen.
Mini-Controller
In Version 2 müssen Sie einen neuen Mini-Controller in der Absender-App an.
Das Framework bietet eine Steuerleiste,
GCKUIMiniMediaControlsViewController
,
das Sie den Szenen hinzufügen können, in denen die permanente
Steuerelementen. Es gibt zwei Möglichkeiten, den Mini-Controller einer Sender-App hinzuzufügen:
Das Layout des Mini-Controllers lässt sich mit dem Cast Framework verwalten, Ihren vorhandenen View-Controller mit der
GCKUICastContainerViewController
und eineGCKUIMiniMediaControlsViewController
am unteren Rand der Ansicht.Fügen Sie den Mini-Controller direkt zu Ihrem vorhandenen Ansicht-Controller hinzu, indem Sie
-[createMiniMediaControlsViewController]
zum Erstellen einesGCKUIMiniMediaControlsViewController
und fügen sie dann als untergeordnete Ansicht zum Controller der Containeransicht hinzu.
Maximierter Controller
In Version 2 müssen Sie einen erweiterten Controller in die Absender-App.
CAF fügt hinzu
GCKUIMediaController
,
mit dem Sie einen
erweiterten Controller einfacher implementieren können.
CAF bietet ein vorgefertigtes erweitertes Controller-Widget
GCKUIExpandedMediaControlsViewController
die Sie einfach Ihrer App hinzufügen können. Sie müssen keine benutzerdefinierten,
maximierten Creatives mehr implementieren,
mit GCKUIMediaController
.
Fehlerprotokollierung
Die
GCKLogger
und
GCKLoggerDelegate
Klassen aus v2 werden mit einigen Änderungen und Verbesserungen in CAF übernommen.
Die
GCKLoggerDelegate
-[logFromFunction:message:]
-Methode enthält
zugunsten von
-[logMessage:fromFunction:]
Framework-Logmeldungen können jetzt gefiltert werden, indem eine entsprechende
GCKLoggerFilter
Instanz und weisen Sie sie zu, indem Sie den
-[filter]
-Eigenschaft des
GCKLogger
Singleton
Beispielapps
Wir empfehlen Ihnen, sich die Codelabs und Beispiel-Apps, die für CAF geschrieben wurden