# CustomizedUIMeetingDelegate is not getting called

**URL:** <https://devforum.zoom.us/t/customizeduimeetingdelegate-is-not-getting-called/75434>\
**Category:** iOS\
**Tags:** meeting-sdk\
**Created:** [September 5, 2022, 8:51pm UTC](https://devforum.zoom.us/t/customizeduimeetingdelegate-is-not-getting-called/75434 "2022-09-05T20:51:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![vetrivel.jayaraman](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vetrivel.jayaraman/32/38610_2.png) [@vetrivel.jayaraman](https://devforum.zoom.us/u/vetrivel.jayaraman)\
**Post date:** [September 5, 2022, 8:51pm UTC](https://devforum.zoom.us/t/customizeduimeetingdelegate-is-not-getting-called/75434/1 "2022-09-05T20:51:47Z")

</div>

Hi, I want to integrate Zoom meeting SDK in my iOS application, I tried and it is working fine, But I wanted to do customisation of meeting SDK UI, MobileRTCCustomizedUIMeetingDelegate is not getting called to move further, Please help me out.

class ZoomCanvasViewController: UIViewController {  
@Binding var viewState: VideoConsultationViewModel.ViewState

```
init(viewState: Binding<VideoConsultationViewModel.ViewState>) {
    self._viewState = viewState
    super.init(nibName: nil, bundle: nil)
}

required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.initializeDelegates()
    self.checkAVPermission()
}

private func initializeDelegates() {
    if let meetingService = MobileRTC.shared().getMeetingService() {
        meetingService.delegate = self
        if let meetingSettings = MobileRTC.shared().getMeetingSettings(), meetingSettings.enableCustomMeeting {
            meetingService.customizedUImeetingDelegate = self
        }
    }
}

private func checkAVPermission() {
    AVCaptureDevice.requestAccess(for: AVMediaType.video) { response in
        if response {
            self.getMainWindowToShareWithAppDelegate()
        } else {
            print("Error while requesting permission for accessing camera")
        }
    }
}

private func getMainWindowToShareWithAppDelegate() {
    DispatchQueue.main.async {
        if let scene = UIApplication.shared.connectedScenes.first,
            let windowSceneDelegate = scene.delegate as? UIWindowSceneDelegate {
            UIApplication.shared.delegate = AppDelegate.Shared
            if let window = windowSceneDelegate.window,
                let delegate = UIApplication.shared.delegate as? AppDelegate {
                delegate.window = window
                print("finding window to provide to zoom sdk")
                self.joinMeeting(meetingId: "73805360785", password: "4vTkxn")
            }
        }
    }
}

// MARK: - ZOOM MEETING
private func joinMeeting(meetingId: String, password: String) {
    if let meetingService = MobileRTC.shared().getMeetingService() {
        #if false
        meetingService.customizeMeetingTitle("Sample Meeting Title")
        #endif
        let parameters = MobileRTCMeetingJoinParam()
        parameters.meetingNumber = meetingId
        parameters.password = password
        //TODO: - Add Username
        parameters.userName = "Xlr8"
        
        DispatchQueue.main.async {
            let error = meetingService.joinMeeting(with: parameters)
            print(error)
            switch error {
            case .passwordError:
                print("Could not join or start meeting because the meeting password was incorrect.")
            default:
                print("Could not join or start meeting with MobileRTCMeetError: \(error)")
            }
        }
    }
}

private func getMeetingState(state: MobileRTCMeetingState) {
    switch state {
    case .idle:
        print("idle")
    case .connecting:
        print("connecting")
    case .waitingForHost:
        print("waitingForHost")
    case .inMeeting:
        print("inMeeting")
    case .disconnecting:
        print("disconnecting")
    case .reconnecting:
        print("reconnecting")
    case .failed:
        print("failed")
    case .ended:
        print("ended")
    case .unknow:
        print("unknow")
    case .locked:
        print("locked")
    case .unlocked:
        print("unlocked")
    case .inWaitingRoom:
        print("inWaitingRoom")
    case .webinarPromote:
        print("webinarPromote")
    case .webinarDePromote:
        print("webinarDePromote")
    case .joinBO:
        print("joinBO")
    case .leaveBO:
        print("leaveBO")
    case .waitingExternalSessionKey:
        print("waitingExternalSessionKey")
    @unknown default:
        print("Something went wrong")
    }
}

```

}

// MARK: - ZOOM MEETING SDK DELEGATE  
extension ZoomCanvasViewController: MobileRTCMeetingServiceDelegate {  
func onJoinMeetingConfirmed() {  
print(“Join meeting confirmed.”)  
print(MobileRTC.shared().getMeetingService()?.customizedUImeetingDelegate)  
}

```
func onMeetingStateChange(_ state: MobileRTCMeetingState) {
    print("onMeetingStateChange")
    self.getMeetingState(state: state)
}

func onMeetingError(_ error: MobileRTCMeetError, message: String?) {
    switch error {
    case .passwordError:
        print("Could not join or start meeting because the meeting password was incorrect.")
    default:
        print("Could not join or start meeting with MobileRTCMeetError: \(error) \(message ?? "")")
    }
}

func onMeetingEndedReason(_ reason: MobileRTCMeetingEndReason) {
    
}

func onMeetingReady() {
    
}

```

}

extension ZoomCanvasViewController: MobileRTCCustomizedUIMeetingDelegate {  
func onInitMeetingView() {  
print(“OnInitMeetingView”)  
}

```
func onDestroyMeetingView() {
    print("onDestroyMeetingView")
}

```

}

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [October 6, 2022, 6:52am UTC](https://devforum.zoom.us/t/customizeduimeetingdelegate-is-not-getting-called/75434/2 "2022-10-06T06:52:11Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
