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:
Laissez le framework Cast gérer la disposition de la mini-télécommande en encapsulant votre contrôleur de vue existant
GCKUICastContainerViewController
et en ajoutantGCKUIMiniMediaControlsViewController
au bas de son champ de vision.Ajoutez le mini-télécommande directement à votre contrôleur de vue existant en utilisant
-[createMiniMediaControlsViewController]
pour créerGCKUIMiniMediaControlsViewController
puis en l'ajoutant au contrôleur de vue du conteneur en tant que sous-vue.
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.