Как завершить сеанс вызова на callkit из пользовательского интерфейса текущего вызова? - PullRequest
0 голосов
/ 22 марта 2019

Когда пользователь завершает вызов из пользовательского интерфейса CallKit, приложение завершает вызов, и фактический вызов VOIP также завершается. Но когда я заканчиваю вызов из моего пользовательского интерфейса, вызов VOIP завершается, но CallKit все еще активен. Как завершить сеанс CallKit из моего пользовательского интерфейса?

Вот что происходит, когда я нажимаю кнопку завершения вызова в интерфейсе CallKit:

 func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
     XCPjsua.shared()?.endCall()
     action.fulfill()
 }

Вот что происходит, когда я заканчиваю вызов из своего пользовательского интерфейса (Должен ли я закрыть CallKit здесь?):

- (void)endcall {
    [[XCPjsua sharedXCPjsua] endCall];
}

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Если вы хотите завершить вызов из своего пользовательского интерфейса, вы должны сделать это через CXTransaction:

let callController = CXCallController()

let endCallAction = CXEndCallAction(call: aUUID)
callController.request(
    CXTransaction(action: endCallAction),
    completion: { error in
        if let error = error
        {
            print("Error: \(error)")
        }
        else
        {
            print("Success")
        }
    })

, это вызовет provider(_ provider: CXProvider, perform action: CXEndCallAction).

Inво всех других случаях (т. е. удаленное завершение, отсутствие ответа и т. д. - см. CXCallEndedReason ) вы должны сообщать только о завершении вызова:

let provider: CXProvider

provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)

в этом случае provider(_ provider: CXProvider, perform action: CXEndCallAction) не будетназывается.

0 голосов
/ 22 марта 2019

Мне удалось закрыть его с помощью функции reportCall

 provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)

Так что я просто вызываю эту функцию, когда нажимаю клавишу завершения вызова из своего пользовательского интерфейса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...