In-app Chat
SDK Error Codes
On this page

ZIM Upgrade Guide

2026-07-06

This article introduces some instructions and precautions when upgrading the In-app Chat Flutter SDK.

3.0.0 Upgrade Guide

Warning

This version (3.0.0) removes interfaces and their related enum values and fields that have been deprecated for over a year, and adds deprecation markers to some interfaces. Please refer to the following instructions to complete the migration.

Removed interfaces

ZIM initialization interface (create)

The deprecated legacy create(int appID) interface has been removed. Please use the create interface that accepts a ZIMAppConfig parameter instead.

ZIMAppConfig appConfig = ZIMAppConfig();
appConfig.appID = 12345678;
appConfig.appSign = 'appSign';
ZIM.create(appConfig);

ZIM login interface (login)

The deprecated legacy login(ZIMUserInfo, String token) interface has been removed. Please use the login interface that accepts userID and a ZIMLoginConfig parameter instead.

ZIMLoginConfig loginConfig = ZIMLoginConfig();
loginConfig.userName = 'userName';
loginConfig.token = ''; // If using Token authentication, fill in the Token
loginConfig.isOfflineLogin = false;
await ZIM.getInstance()!.login('userID', loginConfig);

ZIM message send interface (sendMessage)

The deprecated sendPeerMessage, sendRoomMessage, and sendGroupMessage interfaces have been removed. Please use the sendMessage interface with the notification parameter instead.

ZIMTextMessage textMessage = ZIMTextMessage(message: 'Hello');
ZIMMessageSendConfig config = ZIMMessageSendConfig();
ZIMMessageSendNotification notification = ZIMMessageSendNotification();
notification.onMessageAttached = (ZIMMessage message) {
    // Business logic before sending
};
await ZIM.getInstance()!.sendMessage(
    textMessage,
    'toConversationID',
    ZIMConversationType.peer,
    config,
    notification,
);

ZIM message receive callback interface

The onReceivePeerMessage, onReceiveRoomMessage, and onReceiveGroupMessage callbacks deprecated in 2.18.0 have been formally removed in this version. Migrate to onMessageReceived.

ZIMEventHandler.onMessageReceived = (ZIM zim,
    ZIMMessageReceivedEventResult result) {
    List<ZIMMessage> messageList = result.messageList;
    ZIMMessageReceivedInfo info = result.info;
    String conversationID = result.conversationID;
    ZIMConversationType conversationType = result.conversationType;
    // Handle messages of different conversation types based on conversationType
};

ZIM call invitation callback interface

The legacy onCallInvitationTimeout(zim, callID) (with only the callID parameter), onCallInvitationRejected, onCallInvitationAccepted, and onCallInviteesAnsweredTimeout callbacks have been removed. Please use the new onCallInvitationTimeout and onCallUserStateChanged instead.

ZIMEventHandler.onCallInvitationTimeout = (ZIM zim,
    ZIMCallInvitationTimeoutInfo info,
    String callID) {
    // info.mode distinguishes between normal mode and advanced mode
};

ZIMEventHandler.onCallUserStateChanged = (ZIM zim,
    ZIMCallUserStateChangeInfo info,
    String callID) {
    // info.callUserList contains the list of users whose state has changed
    // Accept, reject, and timeout state changes can be handled uniformly
};

importLocalMessages / exportLocalMessages interface removal

The importLocalMessages and exportLocalMessages interfaces have been temporarily removed in 3.0.0 with no replacement yet. This feature will be re-introduced in a later version. Please follow the SDK release notes for updates.

ZIM message receive callback interface

The onPeerMessageReceived, onRoomMessageReceived, and onGroupMessageReceived callbacks have been marked as deprecated in this version. They still work, but we recommend migrating to onMessageReceived as soon as possible.

ZIMEventHandler.onMessageReceived = (ZIM zim,
    ZIMMessageReceivedEventResult result) {
    List<ZIMMessage> messageList = result.messageList;
    ZIMMessageReceivedInfo info = result.info;
    String conversationID = result.conversationID;
    ZIMConversationType conversationType = result.conversationType;
    // Handle messages of different conversation types based on conversationType
};

ZIMGroupConversation deprecation

The ZIMGroupConversation class has been deprecated in 3.0.0. The isDisabled and mutedExpiredTime fields should be replaced with the corresponding properties of the base class ZIMConversation:

ZIMGroupConversation (deprecated)ZIMConversation (replacement)
isDisabledisConversationDisabled
mutedExpiredTimeselfMutedExpiredTime
bool isDisabled = conversation.isConversationDisabled;
int mutedExpiredTime = conversation.selfMutedExpiredTime;

Enum value removal

ZIMMessageType enum value removal

ZIMMessageType.system (value 30) has been removed from the enum, and the ZIMSystemMessage class has also been removed. To send system-level commands, please use ZIMCommandMessage instead.

// Use ZIMCommandMessage instead of ZIMSystemMessage
ZIMCommandMessage commandMessage = ZIMCommandMessage(
    message: Uint8List.fromList('payload'.codeUnits),
);
await ZIM.getInstance()!.sendMessage(
    commandMessage,
    'toConversationID',
    ZIMConversationType.peer,
    ZIMMessageSendConfig(),
    null,
);

ZIMCallUserState enum value removal

ZIMCallUserState.offline (value 4) has been removed from the enum. Please check your code for any references to this value and remove them.

// The following enum value has been removed. Check and remove references to it in your code.
// ZIMCallUserState.offline  (value 4)

Field changes

ZIMUserFullInfo.userAvatarUrl deprecation

ZIMUserFullInfo.userAvatarUrl has been deprecated. Please use ZIMUserFullInfo.baseInfo.userAvatarUrl instead.

String avatarUrl = userFullInfo.baseInfo.userAvatarUrl;

ZIMMessage.conversationSeq replaced by messageSeq

ZIMMessage.conversationSeq has been removed. Please use ZIMMessage.messageSeq instead.

int seq = message.messageSeq;

ZIMMessageDeletedInfo.isDeleteConversationAllMessage removal

ZIMMessageDeletedInfo.isDeleteConversationAllMessage has been removed. Please use ZIMMessageDeletedInfo.messageDeleteType instead.

ZIMMessageDeleteType deleteType = deletedInfo.messageDeleteType;
// Use deleteType to determine whether it is a single deletion or a full deletion

ZIMGroupMemberInfo.memberAvatarUrl removal

ZIMGroupMemberInfo.memberAvatarUrl has been removed. Please use ZIMGroupMemberInfo.userAvatarUrl instead.

String avatarUrl = groupMemberInfo.userAvatarUrl;

ZIMGroupOperatedInfo structure change

The operatedUserInfo field in ZIMGroupOperatedInfo has been removed. Its internal fields have been flattened to ZIMGroupOperatedInfo, and you can obtain the corresponding fields directly from ZIMGroupOperatedInfo.

// Get fields directly from ZIMGroupOperatedInfo
String operatorUserID = groupOperatedInfo.userID;
String operatorUserName = groupOperatedInfo.userName;
String operatorAvatarUrl = groupOperatedInfo.userAvatarUrl;

ZIMCallInvitationSentInfo.errorInvitees replacement

ZIMCallInvitationSentInfo.errorInvitees has been removed. Please use ZIMCallInvitationSentInfo.errorUserList instead. The type has changed from List<ZIMCallUserInfo> to List<ZIMErrorUserInfo>.

final result = await ZIM.getInstance()!.callInvite(invitees, config);
for (final errorUser in result.info.errorUserList) {
    // errorUser.userID, errorUser.reason
}

ZIMConversationChangeInfo field change

The event property (of type ZIMConversationEvent) in ZIMConversationChangeInfo has been removed. Please use the action property (of type ZIMConversationChangeAction) in the same structure instead.

ZIMEventHandler.onConversationChanged = (ZIM zim,
    ZIMConversationChangeEventResult result) {
    for (ZIMConversationChangeInfo changeInfo in result.infoList) {
        ZIMConversationChangeAction action = changeInfo.action;
        // Handle conversation changes based on action
    }
};

Enum value rename

The following enum values were renamed in 3.0.0. After the upgrade, check and replace all related references in your code.

ZIMCallUserState

ZIMCallUserState.quited has been renamed to ZIMCallUserState.quit.

if (userState == ZIMCallUserState.quit) {
    // The user has quit the call
}

ZIMGroupEvent

ZIMGroupEvent.kickout has been renamed to ZIMGroupEvent.kickOut.

if (event == ZIMGroupEvent.kickOut) {
    // A group member was kicked out
}

ZIMGroupMemberEvent

ZIMGroupMemberEvent.kickedout has been renamed to ZIMGroupMemberEvent.kickedOut.

if (event == ZIMGroupMemberEvent.kickedOut) {
    // A group member was kicked out
}

Class name change

ZIMRoomAttributesOperatedCallResult

ZIMRoomAttributesOperatedCallResult has been renamed to ZIMRoomAttributesOperatedResult. Please check and replace references to this type in your code.

ZIMRoomAttributesOperatedResult result =
    await ZIM.getInstance()!.setRoomAttributes(attributes, roomID, config);

2.28.0 Upgrade Guide

Warning

ZIM SDK 2.28.0 has adjusted the return parameters of some interfaces and the timing of event callback triggers. When upgrading from an older version to 2.28.0, please read the following guide.

Interface definition changes

1

addMessageReaction

addMessageReaction has been changed to a named parameter interface definition.

Future<ZIMMessageReactionAddedResult> addMessageReaction(
// !mark(1:5)
  {
    required String reactionType,
    required ZIMMessage message,
    ZIMMessageReactionAddConfig? config,
  }
);
final result = await zim.addMessageReaction(
// !mark(1:2)
  reactionType: '❤️', 
  message: message
);
2

deleteMessageReaction

deleteMessageReaction has been changed to a named parameter interface definition.

Future<ZIMMessageReactionDeletedResult> deleteMessageReaction(
// !mark(1:4)
  {
    required String reactionType,
    required ZIMMessage message
  }
);
final result = await zim.deleteMessageReaction(
// !mark(1:2)
  reactionType: '❤️', 
  message: message
);
3

pinMessage

pinMessage has been changed to a named parameter interface definition.

Future<void> pinMessage(
  {
    required ZIMMessage message,
    required bool isPinned,
    ZIMMessagePinConfig? config,
  }
);
final result = await zim.pinMessage(
  message: message, 
  isPinned: true
);
4

onMessageReactionsChanged

The callback parameter of onMessageReactionsChanged has changed from reactions to result.

// !mark
static void Function(ZIM zim, ZIMMessageReactionsChangedEventResult result)?
      onMessageReactionsChanged;
// !mark(1:2)
ZIMEventHandler.onMessageReactionsChanged = (zim, result) {
    final changedReactions = result.reactions;
};

Event callback timing changes

Warning

The following callbacks have changes in their trigger timing starting from version 2.28.0. Developers are advised to check the corresponding business logic to determine whether it is affected after upgrading the SDK.

1

onMessageReactionsChanged

The onMessageReactionsChanged callback will be triggered after the client successfully calls addMessageReaction, deleteMessageReaction, or deleteAllMessageReactions.

2

onConversationChanged

The onConversationChanged callback will be triggered after the client successfully calls deleteConversation.

3

onConversationsAllDeleted

The onConversationsAllDeleted callback will be triggered after the client successfully calls deleteAllConversations.

2.23.0 Upgrade Guide

Warning

ZIM Flutter SDK 2.23.0 version has fixed type errors for some fields on Native and Web platforms. When upgrading from an older version to this version, please read the following guide.

Interface type change

FieldOld Version TypeNew Version TypeActual Type Handling
messageIDintdynamicWeb platform: String, other platforms: int
localMessageIDintdynamicWeb platform: String, other platforms: int
fileLocalPathStringdynamicWeb platform: UInt8List, other platforms: String

Code usage example

New
dynamic messageID = msg.messageID;
dynamic localMessageID = msg.localMessageID;
if (kIsWeb) {
  String myMessageID = messageID as String;
  String myLocalMessageID = localMessageID as String;
} else {
  int myMessageID = messageID as int;
  int myLocalMessageID = localMessageID as int;
}

var fileLocalPath;
if (kIsWeb) {
  //  Web platform: local file content  
  fileLocalPath = Uint8List.fromList([1, 2, 3]);
} else {
  //  Other platforms: local file absolute path  
  fileLocalPath = '';
}
ZIMImageMessage imageMessage = ZIMImageMessage(fileLocalPath);

2.21.1 Upgrade Guide

Warning

ZIM Flutter SDK 2.21.1 version has corrected and refined some naming definitions in previous versions. When upgrading from an older version to version 2.21.1, please read the following guide.

Class name change

  1. ZIMReactionUserInfo -> ZIMMessageReactionUserInfo
  2. ZIMMessageReactionUsersQueryConfig -> ZIMMessageReactionUserQueryConfig

Constructor parameter change

  1. ZIMCustomMessage: searchedContent has been changed from an optional parameter to a required parameter. If you do not need to enable keyword search for custom messages, please set it to an empty string.

Class member property name change

  1. ZIMMessage: mentionedUserIds -> mentionedUserIDs
  2. ZIMBlacklistUsersRemovedResult: errorUserInfoArrayList -> errorUserList
  3. ZIMGroupMutedResult: info -> mutedInfo

Enum name change

  1. ZIMTipsMessageChangeInfoType: groupMemberMutedChanged -> groupMemberMuteChanged
  2. ZIMCallUserState: beCanceled -> beCancelled

Error code constant name change

Warning

To ensure that your project can run normally after the upgrade, please check whether the following old error code constants exist in your project and replace them with the new error code constants.

Error codeError code constant name (old)Error code constant name (new)
6000009commonModuleImServerDisconnectcommonModuleIMServerDisconnect
6000012commonModuleUserIsOperationLimitcommonModuleUserInfoQueriedLimit
6000013commonModuleUnsupportedRequestOfCurrentMenucommonModuleUnsupportedRequest
6000204messageModuleTargetDoseNotExistmessageModuleTargetDoesNotExist
6000276messageModuleCallDoseNotExistmessageModuleCallDoesNotExist
6000277receiptReadErrormessageModuleReceiptReadError
6000278messageExceedsRevokeTimemessageModuleMessageExceedsRevokeTime
6000279messageHasBeenRevokedmessageModuleMessageHasBeenRevoked
6000280messageReactionTypeExistedmessageModuleMessageReactionTypeExisted
6000281messageModeCallInviteUserDoesNotExistmessageModuleCallInviteUserDoesNotExist
6000322roomModuleTheRoomDoseNotExistroomModuleTheRoomDoesNotExist
6000351roomModuleRoomMemberAttributesKVExceedsLimitroomModuleTheTotalLengthOfRoomMemberAttributesExceedsLimit
6000507groupModuleKickoutGroupMemberErrorgroupModuleKickOutGroupMemberError
6000523groupModuleGroupDoseNotExistgroupModuleGroupDoesNotExist
6000526groupModuleGroupAttributeDoseNotExistgroupModuleGroupAttributeDoesNotExist
6000542groupModuleGroupDataBaseErrorgroupModuleForbidJoinGroupError
6000603conversationModuleConversationDoseNotExistconversationModuleConversationDoesNotExist
6000809friendOperationLimitExceededfriendModuleFriendOperationLimitExceeded

2.19.0 Upgrade Guide

Warning

Starting from version 2.19.0, the following interfaces have undergone significant changes. Therefore, when upgrading from an older version to version 2.19.0, please read the following guidelines.

The downloadMediaFile method has added the config parameter, which can be used to specify the media content to be downloaded from a multi-item message. This parameter is mandatory and will cause a compile error if not included. Please refer to this documentation to update your code.

// Assume multipleMessage.messageInfoList[0] is a text message, and multipleMessage.messageInfoList[1] is an image message
ZIMMultipleMessage multipleMessage = message as ZIMMultipleMessage;
// !mark(1:4)
ZIMMediaDownloadConfig config = ZIMMediaDownloadConfig();
// Specify the image message to download
config.messageInfoIndex = 1;

zim.downloadMediaFile(multipleMessage, ZIMMediaFileType.originalFile, config, (ZIMMessage message, int currentFileSize, int totalFileSize) {
    // Download progress
}).then((ZIMMessage message) {
    // Download complete
}).catch((ZIMError errorInfo) {
    // Download failed
});

sendMediaMessage

The sendMediaMessage interface is deprecated. Starting from version 2.19.0, multimedia messages should also be sent using the sendMessage interface, reducing developers' maintenance costs.

In ZIMMessageSendNotification, the message parameter type in the onMediaUploadingProgress callback method has been changed from ZIMMessage to ZIMMediaMessage, ensuring that only media messages will trigger the callback notification. Developers need to correct the call according to the compile error prompts in the IDE. (Currently, only developers using the replyMessage interface will be affected and need to resolve compile errors.)

ZIMImageMessage imageMessage = ZIMImageMessage(fileLocalPath);

ZIMMessageSendConfig config = ZIMMessageSendConfig();
config.priority = ZIMMessagePriority.medium;

// !mark
ZIMMessageSendNotification notification = ZIMMessageSendNotification();
notification.onMessageAttached = (ZIMMessage message) {
    // Developers can listen to this callback to perform business logic before sending the message
};
// !mark
notification.onMessageUploadingProgress = (ZIMMediaMessage message, int currentFileSize, int totalFileSize) {
    // Multimedia upload progress
};

// !mark
zim.sendMessage(imageMessage, "TO_CONVERSATION_ID", ZIMConversationType.peer, config, notification).then((ZIMMessage message) {
    // Message send result
}).catch((ZIMError errorInfo) {
    // Message send failed
});

2.18.0 Upgrade Guide

Warning

Starting from version 2.18.0, the following interfaces have undergone significant changes. Therefore, when upgrading from an older version to version 2.16.0, please read the following guidelines.

Callback on receiving one-to-one messages

The deprecated callback onReceivePeerMessage for receiving one-to-one messages has been replaced by onPeerMessageReceived.

The new callback supports the following features:

  • When a user is online, they can receive one-to-one messages through this callback.
  • When a user logs back into the ZIM SDK, they can receive all one-to-one messages received during their offline period (up to 7 days).
// New callback
static void Function(
        ZIM zim, List<ZIMMessage> messageList,
        ZIMMessageReceivedInfo info, String fromUserID)? 
    onPeerMessageReceived;

// Old callback
static void Function(
        ZIM zim, List<ZIMMessage> messageList, String fromUserID)?
    onReceivePeerMessage;

Callback on receiving room messages

The deprecated callback onReceiveRoomMessage for receiving room messages has been replaced by onRoomMessageReceived.

The new callback supports the following features:

  • When a user is online, they can receive online room messages through this callback.
  • When a user goes from offline to online and is still in the room, they can receive all room messages that were sent during their offline period through this callback.
// New callback
static void Function(
        ZIM zim, List<ZIMMessage> messageList,
        ZIMMessageReceivedInfo info, String fromRoomID)?
     onRoomMessageReceived;

// Old callback
static void Function(
        ZIM zim, List<ZIMMessage> messageList, String fromRoomID)?
    onReceiveRoomMessage;

Callback on receiving group messages

The deprecated callback onReceiveGroupMessage for receiving group messages has been replaced by onGroupMessageReceived.

The new callback supports the following features:

  • When the user is online, they can receive online group messages through this callback.
  • When the user logs back into the ZIM SDK, they can receive all group chat messages received during the offline period (up to 7 days) through this callback.
// New Callback
static void Function(ZIM zim, List<ZIMMessage> messageList,
    ZIMMessageReceivedInfo info, String fromGroupID)? onGroupMessageReceived;

// Old Callback
static void Function(
        ZIM zim, List<ZIMMessage> messageList, String fromGroupID)?
    onReceiveGroupMessage;

2.16.0 Upgrade Guide

Warning

Please note that starting from version 2.16.0, there are significant changes to the following interfaces. Therefore, when upgrading from an older version to version 2.16.0, please read the following guide.

1. Changes to the callCancel method

The following changes only apply to advanced mode call invitations.

In the new version of callCancel, if the parameter userIDs contains a userID, the interface will only cancel the invitation for that callee. If the userIDs parameter is empty, the interface will cancel the invitation for all callees.

For the old version of the callCancel method, regardless of whether the userIDs parameter is empty or not, it is considered as canceling the invitation for all callees.

Since the old version of the ZIM SDK is not compatible with separate cancellation logic, if you need to retain the cancellation logic implemented using the old version of ZIM and also need to use the separate cancellation feature of the new version, please isolate the call functionality between the old and new versions of ZIM.

  // Cancel userIdA and userIdB separately
  List<String> invitees;  // List of invitees
  invitees.add("userIdA","userIdB");  // IDs of invitees
  String callid = "12352435";  // Call ID
  ZIMCallCancelConfig config = new ZIMCallCancelConfig();

  ZIM
      .getInstance()
      !.callCancel(invitees, callID, callCancelConfig)
      .then((value) => {
  })
      .catchError((onError) {});


  // Cancel the entire call invitation by passing an empty array to invitees. This can be called successfully when none of the callees in the entire call have accepted the invitation
  List<String> invitees;  // List of invitees
  String callid = "12352435";  // Call ID
  ZIMCallCancelConfig config = new ZIMCallCancelConfig();

  ZIM
      .getInstance()
      !.callCancel(invitees, callID, callCancelConfig)
      .then((value) => {
  })
      .catchError((onError) {});

2.13.0 Upgrade Guide

Warning

Please note that starting from version 2.13.0, there are significant changes to the following interfaces. Therefore, when upgrading from an older version to version 2.13.0, please read the following guide.

1. Changes to the login method

The old version of the login method has been deprecated. The new version of login method supports more configurations through ZIMLoginConfig, such as whether to use Token authentication and whether to login offline.

  try{
      // When logging in, developers need to generate a token according to the "Token Authentication" document
      // userID is a string with a maximum of 32 bytes. It only supports numbers, English characters, and '!', '#', '$', '%', '&', '(', ')', '+', '-', ':', ';', '<', '=', '.', '>', '?', '@', '[', ']', '^', '_', '{', '}', '|', '~'.
      // userName is a string with a maximum of 256 bytes, with no special character restrictions.
      ZIMLoginConfig loginConfig = ZIMLoginConfig();
      // The user nickname, leave it blank if you don't want to modify the user nickname
      loginConfig.userName = 'userName';
      // If using token for login authentication, please fill in this parameter, otherwise no need to fill in
      loginConfig.token = '';
      // Whether this login is an offline login, please refer to the offline login documentation for details
      loginConfig.isOfflineLogin = false;
      await ZIM.getInstance()?.login('zego', loginConfig);
      // Login successful, write the business logic for successful login
  } on PlatformException catch(onError){
      // Login failed
      // Error code for login failure, please refer to the error code documentation for handling
      onError.code;
      // Error message for login failure
      onError.message;
  }

2.9.0 Upgrade Guide

Warning

Please note that starting from version 2.9.0, the API method has undergone major changes, so please read the following guidelines when upgrading from older versions to version 2.9.0.

The onCallInvitationTimeout method changed

The onCallInvitationTimeout callback method has added a new parameter ZIMCallInvitationTimeoutInfo, developers are required to provide this parameter, otherwise the code cannot be compiled successfully.

  ZIMEventHandler.onCallInvitationTimeout = (ZIM zim, String callID){

  };

2.3.0 Upgrade Guide

Warning

Please note that starting from version 2.3.0, the API method has undergone major changes, so please read the following guidelines when upgrading from older versions to version 2.3.0.

1. The create method changed

Changed the create method from a member function to a static function, and changed the return value from Future<ZIM> to ZIM?.

When you use In-app Chat, please call this method first. Also, you should remove the keyword await.

  • How we use it with the older version of SDK:

    await ZIM.getInstance().create(12345678);
  • To use it with SDK V2.3.0:

    ZIMAppConfig appConfig = ZIMAppConfig();
    appConfig.appID = 12345678;
    appConfig.appSign = 'abcdefg...';
    
    ZIM.create(appConfig);

2. The getInstance method changed

Changed the return value of the getInstance method from ZIM to ZIM?, so please be careful about null safety.

Every API method needs to be adjusted, and one of the API usage adjustments is shown below.

  • How we use it with the older version of SDK:

    await ZIM.getInstance().login(userInfo, token);
  • To use it with SDK V2.3.0:

    await ZIM.getInstance()!.login(userInfo, token);

3. Instance parameters added

We added the In-app Chat instance parameter as a callback parameter. Each callback needs to be adjusted, and the following takes a method as an example:

  • How we use it with the older version of SDK:

    ZIMEventHandler.onConnectionStateChanged = (state, event, extendedData) {
        // to do something...
    };
  • To use it with SDK V2.3.0:

    ZIMEventHandler.onConnectionStateChanged = (zim, state, event, extendedData) {
        // to do something...
    };

4. Unnecessary Future return value removed

We removed unnecessary Future return values in some API methods, so that await return values are not needed.

The methods involved are: destroy, logout, setLogConfig, setCacheConfig, and beginRoomAttributesBatchOperation.

  • How we use it with the older version of SDK:

    await ZIM.getInstance().setLogConfig(config);
    ......
    
    await ZIM.getInstance().setCacheConfig(config);
    ......
    
    await ZIM.getInstance().beginRoomAttributesBatchOperation(roomID, config);
    ......
    
    await ZIM.getInstance().logout();
    ......
    
    await ZIM.getInstance().destroy();
    ......
  • To use it with SDK V2.3.0:

    ZIM.setLogConfig(config);
    ......
    
    ZIM.setCacheConfig(config);
    ......
    
    ZIM.getInstance()!.beginRoomAttributesBatchOperation(roomID, config);
    ......
    
    ZIM.getInstance()!.logout();
    ......
    
    ZIM.getInstance()!.destroy();
    ......

Previous

ZIM Audio release notes

Next

ZPNs upgrade guide

On this page

Back to top