2

iOS SDK 4.0で導入されたCoreTelephonyフレームワークを使用して、着信コールとそのドロップ状態を確認しました。

CTTelephonyNetworkInfo *tni = [[CTTelephonyNetworkInfo alloc] init];
    callCenter = [[CTCallCenter alloc] init];
    crtCarrierName = tni.subscriberCellularProvider.carrierName;

    [callCenter setCallEventHandler:^(CTCall *call) {
      if ([[call callState] isEqual:CTCallStateConnected]) {
        //this call has just connected
      } else if ([[call callState] isEqual:CTCallStateDisconnected]) {
        //this call has just ended (dropped/hung up/etc)
      }
    }];

このイベントハンドラーを使用して、アプリがバックグラウンドにあるときに通話状態を追跡できますか?CTCallオブジェクトから着信電話番号を取得することもできますか?または他の方法があります。
プライベートAPIを使いたくないのですが、Apple iOS SDKから利用できる方法はありますか?

4

1 に答える 1

2

いいえ、公式SDKでこれを行う方法はありません。アプリがバックグラウンドで何か他のことをしてから呼び出しを監視しない限り、バックグラウンドで実行されているカテゴリに該当しないため、バックグラウンドで使用することはできません。

これはプライベートデータであるため、現在の通話の電話番号を取得することはできません。Appleはデータへのアクセスを許可していません。

于 2012-12-03T10:37:17.673 に答える