получить уведомление из центра уведомлений после возвращения из телефонного звонка - PullRequest
0 голосов
/ 08 января 2019

Я хочу выполнить действие после того, как пользователь нажал на кнопку вызова и позвонил, а затем вернулся в приложение.

Это моя функция для совершения телефонного звонка:

let phoneURL = URL(string: String(format: "tel://%@", phoneNumber.englishNumbers))
UIApplication.shared.open(phoneURL!)

и я установил наблюдателя на CallView в viewDidLoad() следующим образом:

NotificationCenter.default.addObserver(self, selector: #selector (showFeedBack), name: UIApplication.didEnterBackgroundNotification, object: nil)

После того, как я позвонил и нажал на кнопку «Завершить» (красная кнопка, которая завершает звонок). CallView появится, но уведомление не будет вызвано.

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

P.S. Я использовал willResignActiveNotification уведомление. но он отправляет уведомление еще до того, как совершить звонок (когда появляется предупреждение и пользователь еще ничего не выбрал)

1 Ответ

0 голосов
/ 08 января 2019

Вы можете использовать CXCallObserver для прослушивания событий вызова, как показано ниже,

import CallKit

class ViewController: UIViewController, CXCallObserverDelegate {

    let co = CXCallObserver()

    override func viewDidLoad() {
        super.viewDidLoad()

        co.setDelegate(self, queue: DispatchQueue.main)
    }

    func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
        if call.hasEnded {
            print("Call is ended")
        }
        if call.hasEnded == false && call.hasConnected {
            print("Call is connected")
        }
        if call.isOutgoing {
            print("This is an outgoing call")
        } else if call.hasEnded == false && call.hasConnected == false {
            print("This is an incoming call")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...