从 phone 通话返回后从 notificationCenter 收到通知

get a notification from notificationCenter after returning from a phone call

我想在用户点击通话按钮并拨打电话然后返回应用程序后执行操作。

这是我进行 phone 调用的函数:

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

并且我在 viewDidLoad() 中的 CallView 上设置了一个观察者,如下所示:

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

在我拨打电话并按下“结束”按钮(结束通话的红色按钮)之后。 CallView 会出现,但不会调用通知。

我使用的通知是否正确?或者这是检测用户何时通过您的应用拨打 phone 电话并返回的正确方法吗?

P.S。我使用了 willResignActiveNotification 通知。但它甚至在拨打电话之前就发送了通知(当出现警报并且用户还没有 select 任何东西时)

您可以使用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")
        }
    }
}