Post not yet marked as solved
Post marked as unsolved with 0 replies, 130 views
Hi,
I've recently faced with an issue while dealing with PushKit and CallKit. Everything was working fine before adding a socket connection method to my code. I want to be connected to the socket before calling reportNewIncomingCall so I adjusted my code accordingly. Then I realized that completion block of reportNewIncomingCall is not being called. I don't understand why, any thoughts?
The part of didReceiveIncomingPushWith delegate method, mentioned above:
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
.
.
.
Log.addedCallInfotoAppDelegate.add("callID: \(String(describing: callID!)) callerName: \(callerName) uuID: \(String(describing: self.uuID!))")
let semaphore = DispatchSemaphore(value: 0)
self.connectSocket { success in
if success {
Log.socketSuccessfullyConnected.add()
} else {
Log.errorWhileConnectingSocket.add()
}
self.update.remoteHandle = CXHandle(type: .phoneNumber, value: callerName)
self.update.hasVideo = false
self.update.localizedCallerName = callerName
self.update.supportsGrouping = false
self.update.supportsUngrouping = false
self.update.supportsHolding = false
self.provider.reportNewIncomingCall(with: self.uuID!, update: self.update) { error in
Log.doneReporting.add()
if error == nil {
Log.didReportIncomingCall.add()
if !stateCheck {
self.provider.reportCall(with: self.uuID!, endedAt: Date(), reason: .answeredElsewhere)
Log.reportedEndedCall.add()
self.uuID = nil
self.callID = nil
Log.deletedCallInfoFromAppDelegate.add()
}
semaphore.signal()
} else {
Log.errorWhileReportingIncomingCall.add(String(describing: error))
semaphore.signal()
}
}
} else {
semaphore.signal()
}
semaphore.wait()
completion()
}