문제

프로그램이 시작될 때 전화를 자동으로 시작하는 프로그램이 있습니다. 이것은 AppDelegate의 "ApplicationDidFinishLaunching"-Method에서 구현됩니다.

문제는 : 전화 통화가 끝나고 내 앱이 자동으로 다시 시작되면 루프와 전화 통화가 다시 시작됩니다.

앱이 해당 통화에서 반환되었는지 인식하는 방법은 무엇입니까? 아니면 전화가 이미 이루어 졌는지 정의하는 프로그램의 상태 또는 변수를 쉽게 저장합니까?

방금 iPhone 프로그래밍을 시작했는데 이것이 나타났습니다.

도움이 되었습니까?

해결책

신청서를 시작하기 전에 전화를 걸기 전에 BOOL 깃발 신청 NSUserDefaults 데이터 베이스 그것은 그것이 그 전화를 시작 해야하는지 묻습니다. callWasMade.

만약에 callWasMade 초기 기본값으로 설정됩니다 NO, 그런 다음 깃발을 설정하십시오 YES, 깃발의 가치를 저장하십시오 NSUserDefaults 그런 다음 전화를 트리거하십시오.

응용 프로그램의 후속 출시시 callWasMade (YES)에서 읽습니다 NSUserDefaults 그리고 호출이 트리거되지 않습니다.

그 시점에서 깃발의 가치를 다시 뒤집는 것이 안전해야합니다. NO 다음 호출을 허용합니다.

다른 팁

이것은 할 수 없습니다. 깃발 아이디어는 모든 통화 종단이 앱으로 돌아 오지 않는다는 것을 깨달을 때까지 좋습니다. 이것의 한 예는 상단 전원 버튼을 누르면 통화를 끊는 것입니다.

이러한 경우 깃발은 일관성이 없을 것입니다 (예 : 다음 발사시 앱은 실제로 홈 화면에서 시작되었을 때 전화에서 돌아올 것이라고 생각합니다).

따라서 요약하기 위해 전화로 돌아 오는 것을 감지 할 방법이 없으며 Apple Dev 지원에 대해 요청했습니다.

UIWebView를 사용 하여이 질문에서 설명한 것처럼 전화를 걸 수 있습니다.

전화 통화 후 앱 동작으로 돌아 가기 UIWebView와 기본 코드로 다른 동작

핵심 전화기를 사용하여 통화가 종료되었는지 확인하십시오.

//before calling loadRequest:
CTCallCenter *callCenter.callEventHandler=^(CTCall* call) {

        if(call.callState == CTCallStateDialing)
        {
            //The call state, before connection is established, when the user initiates the call.
            NSLog(@"Dialing");
        }
        if(call.callState == CTCallStateIncoming)
        {
            //The call state, before connection is established, when a call is incoming but not yet answered by the user.
            NSLog(@"Incoming Call");
        }

        if(call.callState == CTCallStateConnected)
        {
            //The call state when the call is fully established for all parties involved.
            NSLog(@"Call Connected");
        }   

        if(call.callState == CTCallStateDisconnected)
        {
            [self release];
            NSLog(@"Call Ended");

        }

    };
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top