我想在用户点击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/