ObjecTips

Swift & Objective-C で iOS とか macOS とか

発着信と通話の開始停止を検出する

前回に続き CoreTelephony のネタ

CoreTelephony を使って電話の発着信と通話の開始停止を検出できる。

コールバックはアプリがアクティブな時に受け取れる。

  • CTCallStateIncoming 電話がかかってきた時
  • CTCallStateDisconnected かかってきた電話に出ずに電話が切れた時や、通話中の電話が終了した時
  • CTCallStateConnected かかってきた電話を受け取った時
  • CTCallStateDialing 電話をかけた時

上記のタイミングでコールバックを受け取れる。
自分から電話をかける際に電話アプリから電話をかける場合、自前のアプリがアクティブでない状態なのでコールバックを受け取る事ができない。
例えば、タスクスイッチャーを起動して画面上の連絡先の履歴から電話をかけた場合や、アプリ内から tel:// スキームで電話をかける時などには CTCallStateDialing を受け取る事ができる。


アプリ内でオーディオを扱う場合には AVAudioSessionAVAudioSessionInterruptionNotification も押さえておくと良い。