Sender App für iOS vom Cast SDK Version 2 zum Cast Application Framework (CAF) migrieren

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:

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