Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Migrating from 1.x to 2.x - iOS


(warning)

Warning

This page is for reference only. We are no longer onboarding new customers to Programmable Video. Existing customers can continue to use the product until December 5, 2024(link takes you to an external page).
We recommend migrating your application to the API provided by our preferred video partner, Zoom. We've prepared this migration guide(link takes you to an external page) to assist you in minimizing any service disruption.

This guide provides an introduction to the 2.x Programmable Video iOS SDK and a set of guidelines to migrate an application from 1.x to 2.x.


Models

models page anchor

The Video SDK defines a set of objects that represent a multi-party exchange of media. These objects fall into two types of models: Room model and Media model.

Room Model Migration

room-model-migration page anchor

In Programmable Video 1.x the Room model was comprised of a TVIRoom, a TVILocalParticipant, and one or more TVIParticipant(s). Starting with Programmable Video 2.x, the Room model is now comprised of a TVIRoom, a TVILocalParticipant, and one or more TVIRemoteParticipant(s). The TVILocalParticipant and TVIRemoteParticipant(s) extend the TVIParticipant base class.

Track Publications

track-publications page anchor

In Programmable Video 1.x TVILocalParticipant and TVIParticipant were comprised of TVITrack(s). Programmable Video 2.x introduces the TVITrackPublication base class which is extended by the following objects:

  • TVILocalAudioTrackPublication
  • TVILocalVideoTrackPublication
  • TVILocalDataTrackPublication
  • TVIRemoteAudioTrackPublication
  • TVIRemoteVideoTrackPublication
  • TVIRemoteDataTrackPublication

TVITrackPublication(s) represent the tracks available in a Room comprised of media from TVILocalParticipant and TVIRemoteParticipant(s). TVILocalTrackPublication(s) are available via TVILocalParticipant and TVIRemoteTrackPublication(s) are available via TVIRemoteParticipant. The following graph visualizes the Room model updates from 1.x to 2.x.

Room Model Migration

In Programmable Video 1.x the Media model was comprised of a TVITrack base class extended by a TVIAudioTrack and TVIVideoTrack. TVILocalAudioTrack and TVILocalVideoTrack extend TVIAudioTrack and TVIVideoTrack respectively. The Programmable Video 2.x Media model maintains the same relationship between TVITrack and TVIAudioTrack/TVIVideoTrack and introduces a new implementation of TVITrack: TVIDataTrack (For more on DataTracks, see guide). TVIAudioTrack, TVIVideoTrack, and TVIDataTrack are extended by the following objects:

  • TVILocalAudioTrack
  • TVILocalVideoTrack
  • TVILocalDataTrack
  • TVIRemoteAudioTrack
  • TVIRemoteVideoTrack
  • TVIRemoteDataTrack

The following graph visualizes the Media model updates from 1.x to 2.x.

Media Model Migration

The following diagrams define all objects and their relationships in the 1.x and 2.x Video SDK.

Video iOS 1.x Object Graph

Video iOS 2.x Object Graph


This section provides a set of guidelines to migrate an application from Programmable Video iOS SDK 1.x to 2.x.

Reference the 2.0 quickstart(link takes you to an external page) when migrating an application from Programmable Video iOS 1.x to 2.x

TVIRemoteParticipantDelegate

tviremoteparticipantdelegate page anchor

Participant events moved from TVIParticipantDelegate to TVIRemoteParticipantDelegate. Reference the API docs(link takes you to an external page) for more information on TVIRemoteParticipantDelegate.

In Programmable Video 1.x, applications manage media shared by participants when tracks are added or removed. Starting with Programmable Video 2.x, applications should manage media when tracks are subscribed or unsubscribed. Rendering video when a participant shares a video track provides an example of logic that will need to be updated when migrating to 2.x. In 1.x an application receives [TVIParticipantDelegate participant:addedVideoTrack:] or [TVIParticipantDelegate participant:removedVideoTrack:] delegate callback to render or remove the video track from the UI. In 2.x applications should use [TVIRemoteParticipantDelegate subscribedToVideoTrack:publication:forParticipant:] and [TVIRemoteParticipantDelegte unsubscribedFromVideoTrack:publication:forParticipant:] to perform video rendering logic.

TVILocalParticipant Updates

tvilocalparticipant-updates page anchor

Applications using TVILocalParticipant to share tracks need to perform the following updates:

  • Change all uses of addAudioTrack: to publishAudioTrack:
  • Change all uses of addVideoTrack: to publishVideoTrack:
  • Change all uses of removeAudioTrack: to unpublishAudioTrack:
  • Change all uses of removeVideoTrack: to unpublishVideoTrack:

TVIParticipant remains an object in the SDK, but applications should perform the following updates when migrating to Programmable Video iOS 2.x:

  • Update all references of TVIParticipant to TVIRemoteParticipant
  • Change [TVIRoom participants] to [TVIRoom remoteParticipants]

Rate this page: