3

以下を使用して、アプリケーションから電話をかけます。

[[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
        }
    };
}
4

2 に答える 2

2

通話状態を提供して電話の状態を判断するテレフォニー フレームワークを使用できます。ここから詳細を確認できます: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/CTCall/Reference/Reference.html#//apple_ref/doc/uid/TP40009590

于 2013-04-05T08:10:05.560 に答える
1

アプリがユーザーに電話をかけたことを示すフラグを保存しないでください。アプリケーションがアクティブになったときに、フラグが設定されている場合は、電話呼び出しメソッドからの復帰を行います。

元。

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"DidStartPhoneCall"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://XXXXXXXXXX"]];

次に、次のようなもの、

-(void)applicationDidBecomeActive {
    BOOL activeFromCall = [[NSUserDefaults standardUserDefaults] objectForKey:"DidStartPhoneCall"]
    if(activeFromCall && [activeFromCall boolValue] == YES) {
     // do your method 
    }
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"DidStartPhoneCall"]; // reste flag
}
于 2013-04-04T17:57:23.063 に答える