Я работаю над Twilio Voip Call. Я следовал документации twilio и в соответствии с документами я скачал там проект и следовал там инструкции и изменить базовый URL в соответствии с моим, который в php. Теперь я получаю токен. Я передаю этот токен методу делегатов, но вызов не может соединиться. Я включил аудио звонок из возможностей также. Но все равно это не работает. Это мой код для голосового вызова twilio,
func callFetchVoiceTokenAPI() {
let param = [
"token" : LoginToken!,
"identity" : myPhoneNumber!
] as [String : Any]
ServerCall.makeCallWitoutFile(fetchVoiceTokenUrl, params: param, type: Method.POST, currentView: self.view) { (response) in
print(response ?? JSON.null)
if let json = response {
if !json.isEmpty {
let token = json["token"].stringValue
print(token)
let success = json["success"].boolValue
print(success)
self.placeCall()
UserDefaults.standard.set(token, forKey: "voiceToken")
UserDefaults.standard.synchronize()
}
}
}
}
func placeCall(){
if (self.call != nil && self.call?.state == .connected) {
self.call?.disconnect()
// self.toggleUIState(isEnabled: false, showCallControl: false)
} else {
let uuid = UUID()
let handle = "Hello Hamza"
print(uuid)
performStartCallAction(uuid: uuid, handle: handle)
}
}
// MARK: Call Kit Actions
func performStartCallAction(uuid: UUID, handle: String) {
let callHandle = CXHandle(type: .generic, value: handle)
let startCallAction = CXStartCallAction(call: uuid, handle: callHandle)
let transaction = CXTransaction(action: startCallAction)
print(callHandle,startCallAction,transaction)
callKitCallController.request(transaction) { error in
if let error = error {
NSLog("StartCallAction transaction request failed: \(error.localizedDescription)")
return
}
NSLog("StartCallAction transaction request successful")
let callUpdate = CXCallUpdate()
callUpdate.remoteHandle = callHandle
callUpdate.supportsDTMF = true
callUpdate.supportsHolding = true
callUpdate.supportsGrouping = false
callUpdate.supportsUngrouping = false
callUpdate.hasVideo = false
self.callKitProvider.reportCall(with: uuid, updated: callUpdate)
}
}
func performVoiceCall(uuid: UUID, client: String?, completionHandler: @escaping (Bool) -> Swift.Void) {
let accessToken = UserDefaults.standard.string(forKey: "voiceToken")
if accessToken != nil {
print(accessToken!)
}else {
completionHandler(false)
return
}
call = TwilioVoice.call(accessToken!, params: [twimlParamTo : twimlParamTo], uuid:uuid, delegate: self)
print(call!)
self.callKitCompletionCallback = completionHandler
}
Это то, что происходит, когда весь код выполняется,