After join meeting, window not working and not recognizing mic and camera

Description
In my own application, after JWT authentication, I joined the meeting with the meeting service from getMeetingService(). The Meeting Window shows up correctly, but it fails to recognize camera and pickup microphone. (Correct access to microphone and camera have been granted in System Preferences → Security&Privacy). I’ve also modified my info.plist based on the sample application. The UI also semi-freeze in that leave meeting will not close window properly. I couldn’t seem to figure out what went wrong or what is contributing to this behaviour. Can someone help please?

Which Client macOS SDK version?
v5.4.54802.0124

Screenshots


As shown in the image above, clicking on Start Video has no effect. After clicking on Join Audio, a pop up window appears but when adjusting microphone, no audio can be captured/detected.
It also appears like some of the icon did not load appropriately since some of them have LN_XXX instead of the actual name.

Device Information

  • Device: Macbook Pro
  • OS: macOS Catalina
  • Version 10.15.7

Additional context
Console output after Meeting UI shows up:

2021-02-18 14:43:14.645439-0500 MyApp[9588:1175262] Mac Address: 68:xx
2021-02-18 14:43:15.335624-0500 MyApp[9588:1175262] *** Assertion failure in -[NSMenu insertItem:atIndex:], /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1894.60.100/Menus.subproj/NSMenu.m:729
2021-02-18 14:43:15.335973-0500 MyApp[9588:1175262] [General] Invalid parameter not satisfying: index <= [_itemArray count]
2021-02-18 14:43:15.338091-0500 MyApp[9588:1175262] [General] (
	0   CoreFoundation                      0x00007fff362aa727 __exceptionPreprocess + 250
	1   libobjc.A.dylib                     0x00007fff6f1e2a9e objc_exception_throw + 48
	2   CoreFoundation                      0x00007fff362d3a40 +[NSException raise:format:arguments:] + 88
	3   Foundation                          0x00007fff389e7ead -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 191
	4   AppKit                              0x00007fff334803e9 -[NSMenu insertItem:atIndex:] + 898
	5   ZoomSDKVideoUI                      0x0000000100dba359 -[ZMMeetingMenuMgr appendMeetingMenu:] + 286
	6   ZoomSDKVideoUI                      0x0000000100db801e -[ZMMeetingViewMenuMgr onConfReady] + 43
	7   ZoomSDKVideoUI                      0x0000000100d9ad1b -[ZPConfUIMgr onConfReady] + 381
	8   ZoomSDKVideoUI                      0x0000000100cd6dd1 -[ZMNotificationCenter confReadyNotification:] + 81
	9   CoreFoundation                      0x00007fff36224259 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
	10  CoreFoundation                      0x00007fff362241ed ___CFXRegistrationPost1_block_invoke + 63
	11  CoreFoundation                      0x00007fff36224162 _CFXRegistrationPost1 + 372
	12  CoreFoundation                      0x00007fff36223dce ___CFXNotificationPost_block_invoke + 80
	13  CoreFoundation                      0x00007fff361f3fbc -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1745
	14  CoreFoundation                      0x00007fff361f3385 _CFXNotificationPost + 1586
	15  ZoomSDKVideoUI                      0x0000000100bc2227 _ZN9CSBConfUI19OnConfStatusChangedE8CONF_CMDj + 4909
	16  ZoomSDKVideoUI                      0x0000000100bddd71 _ZN16CSBConfUIWrapper19OnConfStatusChangedE8CONF_CMDj + 29
	17  zVideoApp                           0x0000000111693328 TermModule + 506212
	18  zVideoApp                           0x00000001116ced81 TermModule + 750525
	19  zVideoApp                           0x000000011160122e zVideoApp + 508462
	20  zVideoApp                           0x0000000111608e2d zVideoApp + 540205
	21  mcm                                 0x0000000111231968 mcm + 47464
	22  ssb_sdk                             0x000000011115f23e TermModule + 158552
	23  ssb_sdk                             0x0000000111158e5c TermModule + 132982
	24  ssb_sdk                             0x0000000111166fc0 TermModule + 190682
	25  util                                0x00000001034dc7fd _ZN3ssb16thread_wrapper_t11process_msgEj + 189
	26  util                                0x00000001034dbdaa _ZN3ssb16thread_wrapper_t10thread_runEPv + 48
	27  util                                0x00000001034e933c main_heartbeat + 89
	28  mcm                                 0x000000011125873e mcm + 206654
	29  mcm                                 0x0000000111259535 mcm + 210229
	30  zVideoApp                           0x00000001116d5c00 TermModule + 778812
	31  zVideoApp                           0x000000011161bcb0 TermModule + 17132
	32  CoreFoundation                      0x00007fff36249468 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
	33  CoreFoundation                      0x00007fff36248fce __CFRunLoopDoTimer + 872
	34  CoreFoundation                      0x00007fff36248ab9 __CFRunLoopDoTimers + 322
	35  CoreFoundation                      0x00007fff3622d70d __CFRunLoopRun + 1885
	36  CoreFoundation                      0x00007fff3622c953 CFRunLoopRunSpecific + 466
	37  HIToolbox                           0x00007fff34e47abd RunCurrentEventLoopInMode + 292
	38  HIToolbox                           0x00007fff34e477d5 ReceiveNextEventCommon + 584
	39  HIToolbox                           0x00007fff34e47579 _BlockUntilNextEventMatchingListInModeWithFilter + 64
	40  AppKit                              0x00007fff3348d039 _DPSNextEvent + 883
	41  AppKit                              0x00007fff3348b880 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1352
	42  AppKit                              0x00007fff3347d58e -[NSApplication run] + 658
	43  AppKit                              0x00007fff3344f396 NSApplicationMain + 777
	44  MyApp                    0x0000000100036b59 main + 9
	45  libdyld.dylib                       0x00007fff70382cc9 start + 1
)
2021-02-18 14:43:14.645439-0500 MyApp[9588:1175262] Mac Address: 68:
2021-02-18 14:43:28.308340-0500 MyApp[9588:1176028] Persistent UI failed to open file

I’ve added the following to my info.plist

	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>
	<key>NSAppleEventsUsageDescription</key>
	<string></string>
	<key>LSApplicationCategoryType</key>
	<string></string>
	<key>com.apple.security.application-groups</key>
	<array>
		<string>com.zoom.capturethread</string>
	</array>
	<key>NSCameraUsageDescription</key>
	<string>In order for participants to see you, requires access to your camera.</string>
	<key>NSMicrophoneUsageDescription</key>
	<string>In order to speak to participants, requires access to your microphone.</string>

Hi @m.zhang, thanks for the post.

Can you please verify the Xcode version you are running and whether or not your machine has an M1 chip?

Thanks!

Hi @jon.lieblich , I’m using Xcode 10.3 and my mac has an Intel processor (quite a old macbook pro) and not a M1 chip. Also, just a bit more information, on other user’s perspective (let’s say I join the same meeting from a mobile device), the user from the SDK window shows up as “connecting to audio…”

Hi @m.zhang,

Thanks for confirming. Can you please provide the full SDK log file from your application so that we may investigate further? The file should be located at ~/Library/Logs/${APPLICATION_NAME}. You’ll know you have the correct file if the contents are encrypted.

Thanks!

Hi @jon.lieblich , I do see the log and it seems quite unreadable with all the weird characters, which probably means the log file is encrypted. Do you want the raw file or should I decrypt it first? If so, how do I decrypt it? Thanks!

Hi @m.zhang,

Yes, that’s the one! You can send it as-is to developersupport@zoom.us and we will begin investigating.

Thanks!

1 Like

Hi @jon.lieblich ,

I see on https://support.zoom.us/hc/en-us/requests/9877335 ,the status of the request has been solved. Did I miss your response to this investigation? What did you find out? Thank you so much for your help!

Hi @m.zhang,

Apologies for the confusion on that. When you send the logs over to our support email, a ticket is automatically created in our tracking system. Since we are working through this on the dev forum, that ticket is essentially a duplicate of this thread, so we typically will close it out.

Regarding the issue, during our investigation we determined that the application appears to have crashed due to something related to your main menu and are working towards a fix. To help us ensure we get the fix right, can you please send a screenshot of your applications main menu?

Thanks!

Hi @jon.lieblich , What do you mean by the main menu? Could you elaborate?

Below is the code I’m using. Not sure if this helps or not, but I wasn’t sure if any UI work needs to be done if at the moment I only hope to get the default UI working. Do I need any meeting handlers of some sort?

if isAuthed(){  // After successful JWT authentication
      print("Join meeting without login")
      let meetingNumber = Int64("*******")!
      let userName = "Test User"
      let meetingPasscode = "****"
      
      let sdk: ZoomSDK = ZoomSDK.shared()
      let meetingService = sdk.getMeetingService()
      let joinParams = ZoomSDKJoinMeetingElements()
      joinParams.userType = ZoomSDKUserType_WithoutLogin
      joinParams.webinarToken = nil
      joinParams.participantId = nil
      joinParams.meetingNumber = meetingNumber
      joinParams.displayName = userName;
      joinParams.password = meetingPasscode;
      joinParams.isDirectShare = false;
      joinParams.displayID = 0;
      joinParams.isNoVideo = true;
      joinParams.isNoAuido = true;
      joinParams.vanityID = nil;
      joinParams.zak = nil;
      
      let audioSetting = sdk.getSettingService().getAudioSetting()
      let ret = meetingService?.joinMeeting(joinParams)
      print(ret)
      
    } else {
      print("Authorization must happen before meeting service is available")
    }

Hi @m.zhang,

The main menu is the NSMenu dropdown menu for your application. You can access it when your application is running through the top toolbar on your machine.

Thanks!

Hi @jon.lieblich ,
We have purposely made the main menu empty since we wanted to disable user from accessing it. Thus, when our application is running, when mouse over the top bar, click on the name of our application has no effect and does not display a main menu. Does this not work with ZoomSDK default UI? How does this affect ZoomSDK? Thank you!

Hi @m.zhang, thanks for the additional info.

We will be adding protection against this in the next release. The SDK adds a Meeting menu when in a meeting, so this crash is preventing that from being created.

Thanks!

Hi @jon.lieblich ,

That’s great to hear! Thank you for making this improvement! Do you have a rough idea about when the next release is?

Hi @jon.lieblich ,

Also, would this behaviour also be present if I’m embedding ZoomSDK with a custom UI? Thanks!