Migrer l'application émettrice iOS du SDK Cast v2 vers le framework d'application Cast (CAF)

La procédure suivante vous permet de convertir votre application émettrice iOS à partir du SDK Cast v2 à CAF Sender, qui repose sur GCKCastContext singleton.

Introduction

  • L'expéditeur CAF est toujours distribué sur le site Web pour les développeurs Google Cast et CocoaPods, comme la version 2.
  • De nouvelles classes ont été ajoutées pour être chargées de respecter les la checklist de conception pour Google Cast.
  • CAF Sender fournit des widgets conformes aux exigences de l'expérience utilisateur Cast. v2 n'a fourni aucun composant de l'interface utilisateur et vous a demandé d'implémenter ces widgets.
  • La conception de l'expéditeur CAF est cohérente avec celle du SDK Cast pour Android.
  • L'expéditeur CAF est compatible avec Bitcode, comme dans la version 2.
  • Le sous-titrage dans CAF est semblable à celui de la version 2.

Dépendances

L'expéditeur CAF est compatible avec iOS 8 et versions ultérieures.

Initialisation

Dans CAF, une étape d'initialisation explicite est requise pour le framework Cast. Ce consiste à initialiser GCKCastContext singleton, à l'aide d'une méthode GCKCastOptions pour spécifier l'ID d'application Web Receiver et tout autre identifiant global options. Cette opération s'effectue généralement dans la méthode AppDelegate. Méthode -[application:didFinishLaunchingWithOptions:]:

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

Cette étape n'était pas nécessaire dans la version 2.

Détection d'appareils

Dans CAF, le processus de découverte est lancé et arrêté automatiquement par quand l'application passe au premier plan et en arrière-plan, respectivement. Les classes GCKDeviceScanner et GCKFilterCriteria de la version 2 sont et ne doivent pas être utilisées.

Icône Cast et boîte de dialogue "Caster"

Dans CAF, l'icône Cast et la boîte de dialogue sont fournies par le framework. Acteurs peut être instancié et ajouté à la barre de navigation comme suit:

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

L'icône Cast peut également être ajoutée au storyboard.

Lorsque quelqu'un appuie dessus, la boîte de dialogue "Caster" s'affiche automatiquement.

Contrôle des appareils

Dans CAF, le contrôle des appareils est en grande partie géré par le framework. L'expéditeur application n'a pas besoin de se connecter à l'appareil ni de lancer Application Web Receiver. La classe v2 GCKDeviceManager est obsolète et doit ne peuvent pas être utilisées. L'interaction entre l'expéditeur et le récepteur Web est désormais représentée sous la forme d'un "session". CAF GCKSessionManager gère le cycle de vie des sessions démarre et arrête automatiquement les sessions en réponse aux gestes de l'utilisateur: une session démarre lorsque l'utilisateur sélectionne un appareil Cast dans la boîte de dialogue "Caster" et se termine. Lorsque l'utilisateur appuie sur "Arrêter la diffusion" dans la boîte de dialogue "Caster" ou lorsque l'icône l'application émettrice elle-même s'arrête. L'application émettrice peut être informée de la disponibilité des événements de cycle de vie GCKSessionManagerListener avec le GCKSessionManager La GCKSessionManagerListener définit des méthodes de rappel pour tous les événements du cycle de vie de la session.

La GCKCastSession représente une session avec un appareil Cast. La classe dispose de méthodes permettant de contrôler le volume de l'appareil et le mode de désactivation du son, ce qui était effectué précédemment dans la v2 à l'aide de méthodes sur GCKDeviceManager

Dans la version 2, GCKDeviceManagerDelegate les notifications de modifications fournies par le protocole à l'état de l'appareil (volume, mise en mode silencieux, veille, etc.). Dans CAF, les notifications de changement d'état du volume ou du son sont envoyées par rappel de la classe GCKSessionManagerListener protocole ces écouteurs sont enregistrés GCKSessionManager Toutes les autres notifications d'état de l'appareil sont livrés via un GCKCastDeviceStatusListener protocole ces écouteurs sont enregistrés GCKCastSession

Logique de reconnexion

Comme dans la version 2, CAF tente de rétablir les connexions réseau qui sont perdues en raison d'une perte temporaire du signal Wi-Fi ou d'autres erreurs réseau. C'est maintenant au niveau de la session ; une session peut indiquer "suspendue" indiquer que la connexion est perdue et va revenir à une connexion « connectée » indiquer quand la connectivité est rétablie. Le framework se charge de se reconnecter au Application Web Receiver et reconnecter tous les canaux Cast dans le cadre de ce processus.

En outre, CAF ajoute également la reprise de session automatique. Si l'expéditeur l'application est envoyée en arrière-plan ou arrêtée (en balayant l'écran ou en raison d'un plantage) pendant qu'une session Cast est en cours, le framework tentera de reprendre cette session lorsque l'application émettrice revient au premier plan ou est relancé ; cette opération est gérée automatiquement GCKSessionManager, qui émet les rappels appropriés sur toutes les instances GCKSessionManagerListener Compute Engine.

Enregistrement d'un critère personnalisé

Dans la version 2, les critères personnalisés (implémentés à l'aide d'un GCKCastChannel ou une sous-classe GCKGenericChannel et délégué) étaient enregistrés auprès du GCKDeviceManager Dans CAF, les critères personnalisés sont enregistrés GCKCastSession Compute Engine. L'enregistrement peut être effectué dans la GCKSessionManagerListener -[sessionManager:didStartCastSession:] . Pour les applications multimédias, il n'est plus nécessaire enregistrer le GCKMediaControlChannel; consultez la section suivante pour en savoir plus.

Commande multimédia

La classe v2 GCKMediaControlChannel est obsolète et ne doit pas être utilisée. Dans CAF, il est remplacé par le nouveau GCKRemoteMediaClient , qui fournit des fonctionnalités équivalentes dans une API plus pratique. Il n'est pas nécessaire d'initialiser ni d'enregistrer explicitement cet objet. la qui instancie automatiquement l'objet et enregistre l'objet sous-jacent canal média à l'heure de début de la session si l'application Web Receiver est connectée prend en charge l'espace de noms multimédia.

La GCKRemoteMediaClient sont accessibles via la -[remoteMediaClient] de la classe GCKCastSession .

Dans la version 2, toutes les demandes de médias émises sur le GCKMediaControlChannel renverra un ID de requête numérique, et les méthodes sur GCKMediaControlChannelDelegate fournirait cet identifiant lors de l'envoi de notifications concernant l'achèvement de la demande ou l'échec.

Dans CAF, toutes les demandes média émises sur le GCKRemoteMediaClient renvoie une GCKRequest object; cet objet est associé à GCKRequestDelegate protocole qui permet de suivre l'avancement et le résultat final de la demande.

Version 2 GCKMediaControlChannel; envoie des notifications concernant les changements d'état du lecteur multimédia sur le récepteur Web via le GCKMediaControlChannelDelegate Dans CAF, le GCKRemoteMediaClient fournit des rappels équivalents via son GCKRemoteMediaClientListener standard. Vous pouvez enregistrer autant d'écouteurs que vous le souhaitez GCKRemoteMediaClient, qui permet à plusieurs composants expéditeurs de partager le instance unique de GCKRemoteMediaClient associée à la session.

Dans la version 2, l'application émettrice devait assurer la protection de l'utilisateur l'interface est synchronisée avec l'état du lecteur multimédia sur Web Receiver. Dans CAF, la classe GCKUIMediaController assume l'essentiel de cette responsabilité ; consultez les tutoriel de l'atelier de programmation documentation pour obtenir des exemples d'utilisation de ce composant.

Message d'annonce en superposition

V2 ne fournit pas interface utilisateur de superposition d'introduction.

CAF ajoute une classe GCKCastContext à l'aide d'une méthode -[presentCastInstructionsViewControllerOnce] qu'une application émettrice peut utiliser pour mettre en surbrillance l'icône Cast lorsqu'elle s'affiche pour la première fois aux utilisateurs.

Mini-télécommande

Dans la version 2, vous devez implémenter une mini-télécommande en partant de zéro dans la l'application émettrice.

Dans CAF, le framework fournit une barre de contrôle, GCKUIMiniMediaControlsViewController, que vous pouvez ajouter aux scènes pour lesquelles vous souhaitez afficher . Il existe deux façons d'ajouter la mini-télécommande à une application émettrice:

Télécommande agrandie

Dans la version 2, vous devez implémenter un contrôleur étendu en partant de zéro dans l'application émettrice.

Ajouts CAF GCKUIMediaController, que vous pourriez utiliser pour implémenter plus facilement un contrôleur étendu.

CAF ajoute un widget de télécommande étendu prédéfini GCKUIExpandedMediaControlsViewController que vous pouvez simplement ajouter à votre application. Vous n'avez plus besoin d'implémenter une expansion personnalisée à l'aide de GCKUIMediaController.

Consignation des données de débogage

La GCKLogger et GCKLoggerDelegate les classes de la version 2 sont transférées dans CAF, avec quelques modifications et améliorations.

La GCKLoggerDelegate La méthode -[logFromFunction:message:] comporte ont été abandonnés au profit de -[logMessage:fromFunction:]

Les messages de journal du framework peuvent désormais être filtrés en créant un GCKLoggerFilter et vous l'attribuez en définissant propriété -[filter] de Singleton GCKLogger.

Applications exemples

Nous vous recommandons de consulter ateliers de programmation et exemples d'applications écrites pour CAF.