【问题标题】:get a notification from notificationCenter after returning from a phone call电话返回后从 notificationCenter 获取通知
【发布时间】:2019-01-08 15:03:04
【问题描述】:

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

这是我打电话的功能:

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 会出现,但不会调用通知。

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

附:我使用了willResignActiveNotification 通知。但它甚至在拨打电话之前发送通知(当出现警报并且用户尚未选择任何内容时)

【问题讨论】:

    标签: ios swift phone-call notificationcenter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多