Можно ли использовать Callkit с вызовом без voip для получения состояния вызова в ios?

Я прочитал вопрос о вызове без voip, и кажется, что открытый URL-адрес - единственный способ сделать это. Поскольку CoreTelephony устарела, можно ли использовать Callkit для получения состояния вызова при совершении вызова с открытым URL-адресом? Если нет, есть ли способ программно получить состояния вызова? Я разрабатываю внутреннее приложение.

Как можно использовать CallKit для создания не- voip-звонок?

Заранее спасибо!!


person some.ios.developer    schedule 02.03.2017    source источник
comment
Вы нашли решение для этого? Мне также интересно, можно ли получить обратный вызов, когда обычный вызов начинается или заканчивается.   -  person Jan    schedule 26.06.2017


Ответы (1)


Чтобы получить состояния вызовов в CallKit, вы можете использовать CXCallObserver в своем приложении.

import CallKit

final class ProviderDelegate: NSObject, CXCallObserverDelegate { 
var callObserver: CXCallObserver!

func setupCallObserver(){
callObserver = CXCallObserver()
callObserver.setDelegate(self, queue: nil)
}

func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
        if call.hasEnded == true {
            print("CXCallState :Disconnected")
        }
        if call.isOutgoing == true && call.hasConnected == false {
            print("CXCallState :Dialing")
        }
        if call.isOutgoing == false && call.hasConnected == false && call.hasEnded == false {
            print("CXCallState :Incoming")
        }

        if call.hasConnected == true && call.hasEnded == false {
            print("CXCallState : Connected")
        }
    }
}
person Krishna Kumar Thakur    schedule 02.08.2017
comment
@Krishna Он наблюдает за каждым вызовом, будь то собственный вызов или вызов приложения. Можно ли отслеживать только родной вызов? stackoverflow.com/questions/49257417/ - person Hiren; 14.03.2018
comment
@Hiren, вы можете использовать uuid, чтобы определить, что ваше приложение вызывает что-то вроде этого, надеюсь, это сработает для вас. если call.uuid == ваш uuid - person Krishna Kumar Thakur; 14.03.2018
comment
Невозможно. мы генерируем сеанс вызова, используя var callUUID : UUID = UUID(), поэтому не можем предсказать между собственным вызовом и вызовом приложения. - person Hiren; 14.03.2018