in AmazonChimeSDKDemo/AmazonChimeSDKDemo/MeetingModule.swift [32:84]
func prepareMeeting(meetingId: String,
selfName: String,
audioVideoConfig: AudioVideoConfiguration,
option: CallKitOption,
overriddenEndpoint: String,
completion: @escaping (Bool) -> Void) {
requestRecordPermission { success in
guard success else {
completion(false)
return
}
JoinRequestService.postJoinRequest(meetingId: meetingId,
name: selfName,
overriddenEndpoint: overriddenEndpoint) { meetingSessionConfig in
guard let meetingSessionConfig = meetingSessionConfig else {
DispatchQueue.main.async {
completion(false)
}
return
}
let meetingModel = MeetingModel(meetingSessionConfig: meetingSessionConfig,
meetingId: meetingId,
selfName: selfName,
audioVideoConfig: audioVideoConfig,
callKitOption: option)
self.meetings[meetingModel.uuid] = meetingModel
switch option {
case .incoming:
guard let call = meetingModel.call else {
completion(false)
return
}
let backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + incomingCallKitDelayInSeconds) {
CallKitManager.shared().reportNewIncomingCall(with: call)
UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier)
}
case .outgoing:
guard let call = meetingModel.call else {
completion(false)
return
}
CallKitManager.shared().startOutgoingCall(with: call)
case .disabled:
DispatchQueue.main.async { [weak self] in
self?.selectDevice(meetingModel, completion: completion)
}
}
completion(true)
}
}
}