Handling Phone Call Events on iOS using Swift 4

October 25, 2018 Yuuki Nishiyama 0 Comments

iOS 10から、サードパーティアプリから電話関係の操作を可能にするCallKitが追加された。今までは、CoreTelephonyを使ってイベントを検知できていたが、iOS10からはCallKitが推奨されているので、せっかくなのでSwift4でコードを書き直し。

サンプルコードはこちら

  1. import CallKitで、CallKitをクラスに追加
  2. CXCallObserver をインスタンス化
  3. CXCallObserverDelegateを実装し、CXCallObserverにdelegateを設定
    • CXCallObserverDelegateは、callObserver(callObserver:call:) メソッドを実装する必要がある
  4. 電話イベントが発生すると、callObserver(callObserver:call:) メソッドが呼ばる
  5. call変数(CXCallクラス)の hasEnded hasConnected isOnHold isOutgoing の4つの真偽値を使ってイベントの内容を判定できる
  6. 例えば、以下のコードで4つの状態(Dialing,Incoming,Connected,Disconnected)を判定できる

isOutgoingを見れば「着信」か「発信」が一発で分かったりと、慣れると真偽値を使った判定も便利かも。参考にしたサイト上のコードだと、「受信時のDisconnectedイベント」が上手く検知できていなかったので、そこを修正。

参考資料

https://developer.apple.com/documentation/callkit

https://stackoverflow.com/questions/40021317/get-phone-call-states-in-ios-10

Xcode|iOS10から新しく加わったCallkitを使って通話の状態を取得してみた

Leave a Reply:

Your email address will not be published. Required fields are marked *