How to update Zoom SDKs to newer versions

Upgrading software is always challenging: dependencies may conflict, function signatures and API calls may have been changed, and OS requirements for a successful build may be different. This guide helps developers upgrading Zoom SDKs by highlighting common issues encountered during the process.

Review the developer changelog

Review the developer changelog for additions, updates, fixes, and breaking changes for the version you are using. Be sure to download the latest version that you can as we have a minimum version policy for the Video SDK and Meeting SDK.

Update the user authentication method (Meeting SDK)

One of the biggest changes encountered while upgrading to any SDK version earlier than Meeting SDK 5.9 is the change in the user authentication method. In all SDK versions released after June 2022, implement either OAuth Authorization Code flow or the Proof-of-Key Exchange (PKCE). See Meeting SDK authorization, PKCE OAuth and the Meeting SDK for Android, and PKCE OAuth and the Meeting SDK for iOS for details.

iOS and macOS only: check the Xcode version

Make sure that you have the correct supported version of Xcode before upgrading. For Meeting SDK versions up to 5.10.2 and Video SDK versions up to 1.2.3, use Xcode 12. For Meeting SDK version 5.10.3 and later, or Video SDK version 1.3.0 and later, use Xcode 13.

Adhere to the interface/protocol

If you are upgrading and run into errors, check the documentation to see if your class adheres to the interface or protocol it implements.

  • On Android, the error message will include: “class <your_custom_class> derived from SDK class <SDK_class> must be either declared abstract or must implement abstract method”
  • On iOS and macOS, the error message may include: “name of your delegate class does not conform to <SDK_class> interface”
  • On Windows, the error message will include: “Unknown symbol could not be export” (This is not a very informative error, but C++ error messages never are. Unknown symbol errors could be anything from a misspelled variable to not adhering to the interface to not importing other dependencies.)

Get your dependencies in order

If you are upgrading to Meeting SDK 5.9 on Android, you can find the necessary dependencies in the sample app that is downloaded with the SDK. Due to how Zoom packages the Android SDK, you will need to add these dependencies to your project. The file you would need to copy into your project is at mobilertc-android-studio/mobilertc/build.gradle.

Breaking changes in iOS Meeting SDK since v5.9

v5.10.3

Deprecated

Current

-(void)onSinkMeetingVideoQualityChanged:(MobileRTCNetworkQuality)quality userID:(NSUInteger)userID;

-(void)onSinkMeetingVideoQualityChanged:(MobileRTCVideoQuality)quality userID:(NSUInteger)userID;

v5.10.1

Deprecated

Current

- (BOOL)lowerAllHand;

- (BOOL)lowerAllHand:(BOOL)isWebinarAttendee;

-(void)onLocalRecordingStatus:(MobileRTCRecordingStatus)status;

-(void)onLocalRecordingStatus:(NSInteger)userId status:(MobileRTCRecordingStatus)status;

-(void)onSinkUserNameChanged:(NSUInteger)userID userName:(NSString *_Nonnull)userName DEPRECATED_ATTRIBUTE;

- (void)onSinkUserNameChanged:(NSArray <NSNumber*>* _Nullable)userNameChangedArr

-(void)onMeetingCoHostChange:(NSUInteger)cohostId DEPRECATED_ATTRIBUTE

-(void)onMeetingCoHostChange:(NSUInteger)userID isCoHost:(BOOL)isCoHost

  • Kubi is no longer supported

Breaking changes in Android Meeting SDK since v5.9

v5.10.6

Deprecated

Current

InMeetingServiceListener

void onSpotlightVideoChanged(boolean on)

void onSpotlightVideoChanged(List<Long> userList)

v5.10.3

Deprecated

Current

InMeetingServiceListener

void onUserNetworkQualityChanged(long userId) 

void onSinkMeetingVideoQualityChanged(VideoQuality videoQuality, long userId)

InMeetingService

void setMeetingNamePassword(String password, String displayName)

void setMeetingNamePassword(String password, String displayName, boolean cancel)

v5.10.1

New dependencies added: androidx.fragment:fragment-ktx:1.4.1

Dependencies updated:

Previous

Current

com.google.android.exoplayer:exoplayer-core:2.13.3

com.google.android.exoplayer:exoplayer-core:2.16.1

com.google.android.exoplayer:exoplayer-ui:2.13.3

com.google.android.exoplayer:exoplayer-ui:2.16.1

androidx.window:window:1.0.0-alpha06

androidx.window:window:1.0.0

androidx.window:window-java:1.0.0-beta03

androidx.window:window-java:1.0.0

org.jetbrains.kotlin:kotlin-stdlib:1.5.21

org.jetbrains.kotlin:kotlin-stdlib:1.6.0

androidx.core:core-ktx:1.6.0

androidx.core:core-ktx:1.7.0

  • compileSdkVersion updates to 31

New Permissions added to support Android 12: android.permission.BLUETOOTH_SCAN

Deprecated

Current

InMeetingServiceListener

onUserNameChanged(long userId, String name)

void onUserNamesChanged(List<Long> userList)

void onMeetingCoHostChanged(long userId)

void onMeetingCoHostChange(long userId, boolean isCoHost)

InMeetingService

MobileRTCSDKError lowerAllHands()

MobileRTCSDKError lowerAllHands(boolean forWebinarAttendees)

void onLocalRecordingStatus(RecordingStatus status)

void onLocalRecordingStatus(long userId, RecordingStatus status)

v5.9.6

Deprecated

Current

InMeetingServiceListener

onVideoOrderUpdated

onHostVideoOrderUpdated

onClosedCaptionReceived(String message)

onClosedCaptionReceived(String message,long senderId)

Reconnecting to a meeting triggers callback onMeetingLeaveComplete

Reconnecting to a meeting triggers callback onMeetingStatusChanged with meetingStatus MEETING_STATUS_RECONNECTING

InMeetingLiveTranscriptionListener

onLiveTranscriptionMsgReceived(String msg, MobileRTCLiveTranscriptionOperationType type)

onLiveTranscriptionMsgReceived(String msg,long speakerId, MobileRTCLiveTranscriptionOperationType type)

Breaking changes in Android Video SDK

v1.2.3 Dependencies updated:

Previous

Current

androidx.security:security-crypto:1.1.0-alpha02

androidx.security:security-crypto:1.1.0-alpha03

androidx.appcompat:appcompat:1.0.0

androidx.appcompat:appcompat:1.3.0

com.android.tools.build:gradle:3.3.0

com.android.tools.build:gradle:7.0.4

  • compileSdkVersion update to 31
  • gradle version updated to 7.0.2 (requires Java 11 or later)

New Permissions have been added for Android 12 support:

  • android.permission.BLUETOOTH_CONNECT
  • android.permission.BLUETOOTH_SCAN