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.
iOS and macOS only: iOS Simulator is not available for M1 Macs
Fixed for Video SDK for iOS v1.7.0 and Meeting SDK for iOS v5.13.5.
Due to a conflict in a core Apple library, neither the Video or Meeting SDK will work with the iOS Simulator included in Xcode on M1 Macs. As a workaround, open Xcode in “Rosetta Mode” to use the simulator.
Adhere to the interface/protocol
Even though all of the breaking changes are published in the changelog, there are going to be times where we miss something. This could be making a signature change to a method, renaming the method, or adding a new method to an interface or protocol you’ve already implemented. If you are upgrading and run into these 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