発着信と通話の開始停止を検出する
前回に続き CoreTelephony のネタ
CoreTelephony を使って電話の発着信と通話の開始停止を検出できる。
コールバックはアプリがアクティブな時に受け取れる。
CTCallStateIncoming
電話がかかってきた時CTCallStateDisconnected
かかってきた電話に出ずに電話が切れた時や、通話中の電話が終了した時CTCallStateConnected
かかってきた電話を受け取った時CTCallStateDialing
電話をかけた時
上記のタイミングでコールバックを受け取れる。
自分から電話をかける際に電話アプリから電話をかける場合、自前のアプリがアクティブでない状態なのでコールバックを受け取る事ができない。
例えば、タスクスイッチャーを起動して画面上の連絡先の履歴から電話をかけた場合や、アプリ内から tel://
スキームで電話をかける時などには CTCallStateDialing
を受け取る事ができる。
アプリ内でオーディオを扱う場合には AVAudioSession
の AVAudioSessionInterruptionNotification
も押さえておくと良い。