ark-brighthustle / flutter_zoom_sdk

Zoom SDK from ZOOM ported to flutter as plugin with all necessary features and with Null Safety which is implementation by CodeSyncr
BSD 3-Clause "New" or "Revised" License
39 stars 84 forks source link

Join Meeting some time start the meeting #81

Open vaibhav936 opened 2 years ago

vaibhav936 commented 2 years ago

When i start the meeting using 'startMeetingNormal' and end for all. then use 'joinMeeting' it will also start the meeting and show user profile pic as api key user profile pic . this is bug . please solve this.

vaibhav936 commented 2 years ago

Solved by adding this line -- //add this lone for fix this bug this will log out the login user zoomSDK.logoutZoom();

in 'flutter_zoom_sdk' android package

full code

 //Join Meeting with passed Meeting ID and Passcode
  private void joinMeeting(MethodCall methodCall, Result result) {

Map<String, String> options = methodCall.arguments();

ZoomSDK zoomSDK = ZoomSDK.getInstance();

if(!zoomSDK.isInitialized()) {
  System.out.println("Not initialized!!!!!!");

  result.success(false);
  return;
}

//add this lone for fix this bug this will log out the login user
zoomSDK.logoutZoom();

MeetingService meetingService = zoomSDK.getMeetingService();

JoinMeetingOptions opts = new JoinMeetingOptions();
opts.no_invite = parseBoolean(options, "disableInvite");
opts.no_share = parseBoolean(options, "disableShare");
opts.no_titlebar =  parseBoolean(options, "disableTitlebar");
opts.no_driving_mode = parseBoolean(options, "disableDrive");
opts.no_dial_in_via_phone = parseBoolean(options, "disableDialIn");
opts.no_disconnect_audio = parseBoolean(options, "noDisconnectAudio");
opts.no_audio = parseBoolean(options, "noAudio");
boolean view_options = parseBoolean(options, "viewOptions");
if(view_options){
  opts.meeting_views_options = MeetingViewsOptions.NO_TEXT_MEETING_ID + MeetingViewsOptions.NO_TEXT_PASSWORD;
}

JoinMeetingParams params = new JoinMeetingParams();

params.displayName = options.get("userId");
params.meetingNo = options.get("meetingId");
params.password = options.get("meetingPassword");

Log.i("ZooomSdk", "joinMeeting: "+params);
meetingService.joinMeetingWithParams(context, params, opts);

result.success(true);

}

vaibhav936 commented 2 years ago

Same for IOS

  public func joinMeeting(call: FlutterMethodCall, result: FlutterResult) {

        let meetingService = MobileRTC.shared().getMeetingService()
        let meetingSettings = MobileRTC.shared().getMeetingSettings()

         ////////////add code here/////////////
        let authService = MobileRTC.shared().getAuthService()
        authService?.logoutRTC()

        if (meetingService != nil) {
            let arguments = call.arguments as! Dictionary<String, String?>

            //Setting up meeting settings for zoom sdk
            meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
            meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
            meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
            meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
            meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
            meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
            meetingSettings?.meetingTitleHidden = parseBoolean(data:arguments["disableTitlebar"]!, defaultValue: false)
            let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
            if viewopts {
                meetingSettings?.meetingTitleHidden = true
                meetingSettings?.meetingPasswordHidden = true
            }

            //Setting up Join Meeting parameter
            let joinMeetingParameters = MobileRTCMeetingJoinParam()

            //Setting up Custom Join Meeting parameter
            joinMeetingParameters.userName = arguments["userId"]!!
            joinMeetingParameters.meetingNumber = arguments["meetingId"]!!

            let hasPassword = arguments["meetingPassword"]! != nil
            if hasPassword {
                joinMeetingParameters.password = arguments["meetingPassword"]!!
            }

            //Joining the meeting and storing the response
            let response = meetingService?.joinMeeting(with: joinMeetingParameters)

            if let response = response {
                print("Got response from join: \(response)")
            }
            result(true)
        } else {
            result(false)
        }
    }
ark-brighthustle commented 2 years ago

Same for IOS

  public func joinMeeting(call: FlutterMethodCall, result: FlutterResult) {

        let meetingService = MobileRTC.shared().getMeetingService()
        let meetingSettings = MobileRTC.shared().getMeetingSettings()

         ////////////add code here/////////////
        let authService = MobileRTC.shared().getAuthService()
        authService?.logoutRTC()

        if (meetingService != nil) {
            let arguments = call.arguments as! Dictionary<String, String?>

            //Setting up meeting settings for zoom sdk
            meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
            meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
            meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
            meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
            meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
            meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
            meetingSettings?.meetingTitleHidden = parseBoolean(data:arguments["disableTitlebar"]!, defaultValue: false)
            let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
            if viewopts {
                meetingSettings?.meetingTitleHidden = true
                meetingSettings?.meetingPasswordHidden = true
            }

            //Setting up Join Meeting parameter
            let joinMeetingParameters = MobileRTCMeetingJoinParam()

            //Setting up Custom Join Meeting parameter
            joinMeetingParameters.userName = arguments["userId"]!!
            joinMeetingParameters.meetingNumber = arguments["meetingId"]!!

            let hasPassword = arguments["meetingPassword"]! != nil
            if hasPassword {
                joinMeetingParameters.password = arguments["meetingPassword"]!!
            }

            //Joining the meeting and storing the response
            let response = meetingService?.joinMeeting(with: joinMeetingParameters)

            if let response = response {
                print("Got response from join: \(response)")
            }
            result(true)
        } else {
            result(false)
        }
    }

thanks for solution