以下を使用して、アプリケーションから電話をかけます。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://XXXXXXXXXX"]];
ユーザーが通話を終了すると、Apple が提供するデフォルトの電話アプリがバックグラウンドになり、アプリケーションがフォーカスを再開します。これは自動的に行われます。
ここに私が望むものがあります:ユーザーが呼び出しから戻るたびに (そしてそのときだけ) メソッドを呼び出したいと思います。
applicationWillEnterForeground:
またはからこのメソッドを呼び出してみましapplicationDidBecomeActive:
たが、これらのコールバックは、アプリケーションがバックグラウンド状態から起動されているときに発生します (これは望ましくありません)。
アプリケーションがバックグラウンド状態から起動されているのか、それとも電話から戻っているのかを判断したいので、前者の場合にのみ特定のタスクを実行し、後者では実行できません。何か案は?
- - 編集 - -
これが私が最終的にやった方法です:
参照: CallStateDisconnected は、アプリから発信された通話ではなく、着信通話に対してのみ検出されました
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self listenForCalls];
}
- (void)listenForCalls {
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler = ^(CTCall* myCall) {
NSString *call = myCall.callState;
if([call isEqualToString:CTCallStateDialing]) {
//do ur stuff
}
};
}