Access in-meeting user information

The code on this page works with either the default UI or the custom UI.

After joining a meeting, access information for each meeting participant through ZoomSDKMeetingActionController and ZoomSDKMeetingActionControllerDelegate.

Use one of several different IDs, each serving its own purpose, to access user information.

  • Customer key - A developer-supplied identifier that may be passed in through the MeetingOptions instance used to join a meeting.
  • User ID - A nonpersistent, unique per-user identifier assigned by Zoom for the current meeting. If a user leaves and rejoins the same meeting, they get a new user ID assigned each time they join. This is also reassigned when switching between the main meeting and breakout rooms.
  • Persistent ID - A per-user identifier assigned by Zoom for the current meeting and all submeetings, such as breakout rooms. This per-user identifier will not be reassigned in the same meeting or submeeting, but users in different meetings may have the same ID value.
  • Participant ID - A unique per-user identifier assigned by Zoom to a user's account. This persists across all meetings for an account. You can't access this ID through the macOS SDK, but can retrieve it through the REST API.

When a user joins a meeting, get their ZoomSDKUserInfo object.

ZoomSDK.shared().getMeetingService()?.getMeetingActionController().delegate = self
extension ViewController: ZoomSDKMeetingActionControllerDelegate {
    func onUserJoin(_ array: [Any]) {
        guard let userIDList = array as? [UInt32] else { return }
        for userID in userIDList {
            let userInfo = ZoomSDK.shared().getMeetingService()?.getMeetingActionController().getUserByUserID(userID)
        }
    }
}
// In your .m file
@interface ZMSDKWindow : NSWindowController <ZoomSDKMeetingActionControllerDelegate> {
}
// In your .h file
[[[ZoomSDK sharedSDK] getMeetingService] getMeetingActionController].delegate = self;
- (void)onUserJoin:(NSArray *)array {
    if (!array)
        return;
    for (NSNumber* item in array) {
        unsigned int userID = [item unsignedIntValue];
        ZoomSDKUserInfo *userInfo = [[[[ZoomSDK sharedSDK] getMeetingService] getMeetingActionController] getUserByUserID: userID];
    }
}

Use the ZoomSDKUserInfo to access data specific to that user.

Get the customer key.

userInfo?.getCustomerKey()
[userInfo getCustomerKey];

Get the user's avatar picture path, if available.

userInfo?.getAvatarPath()
[userInfo getAvatarPath];

Get the user ID.

userInfo?.getUserID()
[userInfo getUserID];

Get the username.

userInfo?.getUserName()
[userInfo getUserName];

Get the persistent ID.

userInfo?.getPersistentId()
[userInfo getPersistentId];

Each user in a meeting or webinar has a role assigned to one of these values under UserRole.

  • UserRole_None - No role has been assigned.
  • UserRole_Host - The host of the current meeting or webinar.
  • UserRole_CoHost - A co-host of the current meeting or webinar.
  • UserRole_Panelist - A panelist in the current meeting or webinar.
  • UserRole_BreakoutRoom_Moderator - The breakout room moderator.
  • UserRole_Attendee - An attendee of the current meeting or webinar.

Get the user's role in the current meeting.

userInfo?.getUserRole()
[userInfo getUserRole];

Determine whether a given user is the current user.

userInfo?.isMySelf()
[userInfo isMySelf];