我想在用户点击call按钮并拨打电话然后返回应用程序后执行一个操作。
这是我打电话的功能:

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

我在CallView中设置了一个观察者,如下所示:
NotificationCenter.default.addObserver(self, selector: #selector (showFeedBack), name: UIApplication.didEnterBackgroundNotification, object: nil)

在我打电话并按下结束按钮(结束通话的红色按钮)之后。将出现viewDidLoad(),但不会调用通知。
我用的通知对吗?或者这是检测用户通过你的应用打电话回来的正确方法吗?
P.S.我使用了CallView通知。但它甚至在打电话之前就发送了通知(当警报出现并且用户还没有选择任何内容时)

最佳答案

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

关于ios - 打电话回来后,从notificationCenter收到通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54285306/

10-12 03:51