获取通话时长

import UIKit
import CallKit

class ViewController: UIViewController {
    
    deinit {
        observer?.setDelegate(nil, queue: DispatchQueue.main)
        observer = nil
    }
    
    fileprivate var _beforeDate:Date!
    fileprivate var observer:CXCallObserver?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        observer = CXCallObserver()
        observer?.setDelegate(self, queue: DispatchQueue.main)
    }
    
    @IBAction func click(_ sender: Any) {
        
    }
}

extension ViewController:CXCallObserverDelegate {
    
    func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
        //接通
        if call.isOutgoing && call.hasConnected && !call.hasEnded {
            //记录当前时间
            _beforeDate = Date()
        }
        //挂断
        if call.isOutgoing && call.hasConnected && call.hasEnded {
            //计算通话时长
            let date = Date(timeInterval: 0, since: _beforeDate)
            let a = date.timeIntervalSinceNow
            let timeString = String(format: "%0.f", fabs(a))//转为字符型
            
            print(timeString)
        }
    }
}

你可能感兴趣的:(获取通话时长)