Migration vers la version 2.2 ou ultérieure du SDK iOS de la Video API Vonage
Il existe des modifications apportées à l'API, de nouvelles fonctionnalités, des changements au niveau de l'interface utilisateur et d'autres points à prendre en compte lors de la migration d'une application de la version 2.1.7 vers la version 2.2 ou supérieure du SDK OpenTok pour iOS.
Modifications apportées à l'API dans la version 2.2
Nouvelle API dans la version 2.2
Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné »
Autres nouvelles fonctionnalités
Modifications apportées à l'API dans la version 2.2
Lors de la migration depuis la version 2.1.7, modifiez votre code en fonction des modifications apportées à l'API décrites ci-dessous.
Initialisation d'une session — L'initialiseur de l'objet OTSession inclut désormais un paramètre « clé API » :
| Version 2.1.7 | Version 2.2 |
|---|---|
[OTSession initWithSessionId: delegate:] |
[OTSession initWithApiKey: sessionId: delegate:] |
Connexion à une session — La méthode permettant de se connecter à une session n'inclut plus la clé API en tant que paramètre :
| Version 2.1.7 | Version 2.2 |
|---|---|
[OTSession connectWithApiKey: token:] |
[OTSession connectWithToken: error:] |
Notez que le nouveau error paramètre. En cas d'erreur synchrone lors de l'appel de cette méthode, ce paramètre est défini sur un objet OTError.
Les noms des constantes suivantes de l'énumération `OTSessionConnectionStatus` ont été modifiés dans la version 2.2 :
| 2.1.7 constante | 2,2 constante |
|---|---|
OTSessionConnectionStatusDisconnected |
OTSessionConnectionStatusNotConnected |
S'abonner à un flux — Dans la version 2.1.7, lorsque vous initialisez un objet OTSubscriber, celui-ci commence immédiatement à s'abonner au flux. Dans la version 2.2, après avoir instancié un objet OTSubscriber, vous devez appeler la méthode [OTSession subscribe:error:] méthode pour commencer à s'abonner au flux :
_subscriber = [[OTSubscriber alloc] initWithStream:stream delegate:self];
OTError* myError = nil;
[_session subscribe:_subscriber error:&myError]
if (myError) {
NSLog(@"subscribe failed with error: (%@)", myError);
}
La classe `OTSubscriber` hérite de la nouvelle classe `OTSubscriberKit`. Et le protocole `OTSubscriberDelegate` est conforme au nouveau protocole `OTSubscriberKitDelegate`. (Voir Nouvelle API dans la version 2.2 ci-dessous).
Les OTSubscriber.view La propriété est un objet UIView. (Dans la version 2.1.7, elle était définie sur un objet OTVideoView, mais cette classe a été supprimée du SDK. Voir Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné ».)
Dans la version 2.2 du SDK, les vues « subscriber » ne sont pas automatiquement supprimées de leurs vues « superview » lorsque le [OTSessionDelegate sessionDidDisconnect:] Le message est envoyé. Appelez la fonction [_subscriber.view removeFromSuperView:] méthode de l'objet OTSubscriber permettant de supprimer l'abonné.
Les [OTSubscriber stream:didChangeVideoDimensions:] Cette méthode a été supprimée dans la version 2.2 du SDK. Vous pouvez implémenter votre propre classe d'abonné personnalisée, basée sur la nouvelle classe OTSubscriberKit, et surveiller directement les dimensions du flux vidéo. (Voir Nouvelle API dans la version 2.2 ci-dessous.)
Voir Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné » pour plus d'informations sur les modifications apportées à l'interface utilisateur d'OTSubscriber.
Publication d'un flux — La classe `OTPublisher` hérite de la nouvelle classe `OTPublisherKit`. Et le protocole `OTPublisherDelegate` est conforme au nouveau protocole `OTPublisherKitDelegate`. (Voir Nouvelle API dans la version 2.2 ci-dessous). Par ailleurs, les noms des messages suivants ont été modifiés dans le protocole OTPublisherDelegate :
| Version 2.1.7 | Version 2.2 |
|---|---|
[OTPublisherDelegate publisherDidStartStreaming:] |
[OTPublisherDelegate publisher: streamCreated:] |
[OTPublisherDelegate publisherDidStopStreaming:] |
[OTPublisherDelegate publisher: streamDestroyed:] |
Les OTPublisher.view La propriété est un objet UIView. (Dans la version 2.1.7, elle était définie sur un objet OTVideoView, mais cette classe a été supprimée du SDK. Voir Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné ».)
Dans la version 2.2 du SDK, les vues d'éditeur ne sont pas automatiquement supprimées de leurs super-vues lorsque le [OTSessionDelegate sessionDidDisconnect:] Le message est envoyé. Appelez la fonction [_publisher.view removeFromSuperView:] méthode de l'objet OTPublisher permettant de supprimer l'éditeur.
Voir Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné » pour plus d'informations sur les modifications apportées à l'interface utilisateur d'OTPublisher.
Gestion des erreurs — Des paramètres d'erreur ont été ajoutés aux méthodes suivantes :
[OTSession connectWithToken:error:]
[OTSession publish:error:]
[OTSession signalWithType:string:connection:error:]
[OTSession subscribe:error:]
[OTSession unpublish:error:]
[OTSession unsubscribe:error:]
En cas d'erreur synchrone lors de l'appel de la méthode, l'objet d'erreur prend la valeur d'un objet OTError ; dans le cas contraire, il prend la valeur NULL.
Par exemple, le code suivant vérifie s'il y a eu une erreur synchrone lors de l'appel de [OTSession subscribe:error]:
OTError* myError = nil;
[_session subscribe:_subscriber error:&myError]
if (myError) {
NSLog(@"subscribe failed with error: (%@)", myError);
}
Les constantes d'erreur suivantes ne sont plus utilisées dans la version 2.2 (et ne figurent pas dans les énumérations OTError) :
OTSDKUpdateRequired
OTP2PSessionUnsupported
OTUnknownServerError
OTP2PSessionRequired
OTSessionCompatibilityMismatch
OTSelfSubscriberFailure
Les constantes OTSessionErrorCode suivantes, présentes dans la version 2.1.7, sont remplacées dans la version 2.2 :
| Version 2.1.7 | Version 2.2 |
|---|---|
OTInvalidSessionId |
OTInvalidSession |
OTSessionSignalConnection |
OTSessionInvalidSignalType; OTSessionSignalDataTooLong |
Les constantes OTPublisherErrorCode suivantes, présentes dans la version 2.1.7, sont remplacées dans la version 2.2 :
| Version 2.1.7 | Version 2.2 |
|---|---|
OTNoMediaPublished |
OTPublisherInternalError |
OTUserDeniedCameraAccess |
OTPublisherInternalError |
Les constantes OTSubscriberErrorCode suivantes, présentes dans la version 2.1.7, sont remplacées dans la version 2.2 :
| Version 2.1.7 | Version 2.2 |
|---|---|
OTFailedToConnect |
OTSubscriberInternalError |
OTNoStreamMedia |
OTSubscriberInternalError |
OTInitializationFailure |
OTSubscriberInternalError; OTConnectionTimeOut |
OTInvalidStreamType |
OTSubscriberInternalError |
API de signalisation — L'API de signalisation a évolué entre la version 2.1.7 et la version 2.2 :
| Version 2.1.7 | Version 2.2 |
|---|---|
[OTSession signalWithType: data: completionHandler:] |
[OTSession signalWithType: string: connection: error:] |
[OTSession signalWithType: data: connections: completionHandler:] |
[OTSession signalWithType: string: connection: error:] |
Veuillez noter les modifications suivantes :
- Vous ne pouvez envoyer qu'une chaîne de caractères comme données de signal. Vous ne pouvez plus définir ces données sous la forme d'autres types d'objets.
- La méthode prend en paramètre une connexion qui peut être soit un objet OTConnection unique (et non un tableau), soit nil (pour envoyer un signal à tous les clients de la session).
- Les blocs de fin pour la signalisation ont été supprimés. En cas d'échec de l'envoi d'un signal, l'objet d'erreur transmis aux méthodes de signalisation est défini sur un objet OTError. L'énumération OTSessionErrorCode (dans OTError.h) comprend
OTSessionInvalidSignalTypeetOTSessionSignalDataTooLongconstantes correspondant à ces erreurs.
Dans la version 2.2, la réception d'un signal est implémentée dans le protocole OTSessionDelegate :
| Version 2.1.7 | Version 2.2 |
|---|---|
[OTSession receiveSignalType: withHandler:] |
[OTSessionDelegate session: receivedSignalType: fromConnection: withString:] |
Changement de nom du mandataire d'un abonné — Le protocole OTSubscriberDelegate a été renommé OTSubscriberKitDelegate.
Modifications du nom des délégués de session — Certains messages des méthodes de l'interface `OTSessionDelegate` ont été renommés :
| Version 2.1.7 | Version 2.2 |
|---|---|
[OTSessionDelegate didReceiveStream:] |
[OTSessionDelegate streamCreated:] |
[OTSessionDelegate didDropStream:] |
[OTSessionDelegate streamDestroyed:] |
[OTSessionDelegate didCreateConnection:] |
[OTSessionDelegate connectionCreated:] |
[OTSessionDelegate didDropConnection:] |
[OTSessionDelegate connectionDestroyed:] |
OTVideoView supprimé — La classe OTVideoView n'est plus incluse. Voir Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné » ci-dessous.
Suppression de la propriété `OTSession.connectionCount` — La classe OTSession ne contient plus de connectionCount propriété. Vous pouvez surveiller la [OTSessionDelegate session:connectionCreated:] et [OTSessionDelegate session:connectionDestroyed:] les messages et garder la trace du nombre de connexions dans votre propre variable.
Suppression de OTStream.type — OTStream ne comprend plus de type propriété.
Nouvelle API dans la version 2.2
Prise en charge de l'archivage — Le SDK OpenTok pour iOS 2.2 prend en charge OpenTok fonction d'archivage. Les [OTSessionDelegate session:archiveStartedWithId:name:] Un message est envoyé dès le début de l'enregistrement d'une session. Le [OTSessionDelegate session:archiveStoppedWithId:] Ce message est envoyé lorsqu'un enregistrement d'archive d'une session s'arrête. Vous pouvez, en fonction de ce message, ajouter ou supprimer un élément de l'interface utilisateur indiquant que l'enregistrement a commencé ou s'est arrêté.
Nouvelle Video API de diffusion vidéo personnalisée — Les nouvelles classes et les nouveaux protocoles suivants prennent en charge la nouvelle API de flux vidéo personnalisés :
-
OTPublisherKit — Utilisez cette classe pour employer un capteur vidéo et un moteur de rendu vidéo personnalisés pour un flux audio-vidéo à diffuser dans une session OpenTok. Notez que la classe OTPublisher, qui utilise l'appareil photo iOS comme source vidéo directe, est une sous-classe d'OTPublisherKit.
-
OTSubscriberKit — Utilisez cette classe pour utiliser un moteur de rendu vidéo personnalisé pour un flux audio-vidéo. Notez que la classe OTSubscriber, qui affiche le flux vidéo tel quel, est une sous-classe d'OTSubscriberKit.
-
OTVideoCapture — Cette interface sert à fournir des données vidéo à un objet OTPublisherKit.
-
OTVideoRender — Cette interface permet de traiter des données vidéo dans un objet OTPublisherKit ou OTSubscriberKit.
-
D'autres classes et énumérations liées à la Video API de flux vidéo personnalisé sont définies dans le fichier OTVideoKit.h.
-
Nouvelle propriété OTSession.apiQueue : la file d’attente des rappels du délégué peut désormais être définie par l’application. La file d’attente GCD chargée d’émettre les rappels vers le délégué peut être redéfinie afin de permettre l’intégration avec XCTest (nouveauté d’Xcode 5) ou d’autres frameworks nécessitant de fonctionner (et de bloquer) le thread principal.
-
Les énumérations du fichier OTError.h comportent désormais de nouvelles valeurs. Les valeurs des codes d'erreur correspondent à celles des erreurs correspondantes dans la bibliothèque OpenTok.js 2.2 et le SDK OpenTok Android 2.2.
Modifications de l'interface utilisateur dans les objets « éditeur » et « abonné »
Les objets OTPublisher et OTSubscriber ne comportent plus les contrôles d'interface utilisateur par défaut pour les éléments suivants :
- Un contrôle permettant d'activer/désactiver la caméra dans la vue OTPublisher — Vous pouvez ajouter votre propre contrôle d'interface utilisateur qui utilise le
cameraPositionpropriété de l'objet OTPublisher permettant de définir la caméra utilisée par l'éditeur. - Affichage du nom du flux à la fois dans la vue OTSubscriber et dans la vue OTPublisher — Vous pouvez ajouter votre propre contrôle d'interface utilisateur qui affiche le nom en fonction du
namepropriété de l'objet OTStream consommé par l'abonné ou le nom utilisé lors de l'appel de la méthode[OTPublisher initWithDelegate:name:]méthode. - Un bouton « Muet » dans la vue OTSubscriber — Vous pouvez ajouter votre propre contrôle d'interface utilisateur qui définit le
subscribeToAudiopropriété de l'objet OTSubscriber permettant de couper et de réactiver le son pour l'abonné. Consultez lahasAudiopropriété de l'objet OTStream utilisée par l'abonné pour déterminer si le flux contient du son. - Bouton « Muet » dans la vue OTPublisher — Vous pouvez ajouter votre propre contrôle d'interface utilisateur qui définit le
publishAudiopropriété de l'objet OTPublisher permettant de couper et de réactiver le son pour l'éditeur. - Indicateur signalant que la vidéo a été désactivée pour un abonné — Vous pouvez ajouter votre propre élément d'interface utilisateur qui réagit à l'événement
[OTSubscriber subscriberVideoDisabled:reason:]message indiquant que la vidéo était désactivée.
La vue par défaut dans les classes OTPublisher et OTSubscriber ne comprend que la vidéo.
Vous devez implémenter ces contrôles d'interface utilisateur dans votre propre code. Cela vous permet d'utiliser votre propre mise en page et d'ajouter uniquement les contrôles que vous souhaitez. Le Exemples d'applications utilisant le SDK OpenTok pour iOS sur GitHub expliquer comment les mettre en œuvre.
Le guide pratique comprend également des exemples de code permettant d'ajouter un contrôle d'interface utilisateur indiquant que l'archivage d'une session a commencé (ou s'est arrêté). (L'archivage est une nouvelle fonctionnalité de la version 2.2 du SDK OpenTok pour iOS.)
Autres nouvelles fonctionnalités
Le SDK OpenTok 2.2 pour iOS prend également en charge le protocole TURN sur TCP. Cela permet d'améliorer la connectivité dans les environnements réseau soumis à des restrictions. Seuls les ports 80 et 443 sont nécessaires.