2015-01-19 4 views
13

iOS 용 VoIP 응용 프로그램을 작성하는 중입니다. 응용 프로그램이 백그라운드 일 때 전화 수신을 중지합니다. 응용 프로그램이 다시 활성화되면 대기중인 모든 메시지가 처리되기 시작합니다.iOS 배경 화면이 작동하지 않음

다음은 내가 한 것입니다.

응용 프로그램을 빌드 할 때 오디오 및 AirPlay뿐만 아니라 Voice over IP를 plist 파일에 추가합니다. 그럼 here 볼 수 있듯이 NetworkServiceTypeVoIP websocket 연결을 표시합니다.

앱이 통화에 응답하기 위해 깨어나지 않으면 등록이 중요하지 않으므로 활성 상태 유지 제한 시간 처리기를 설정하지 않았습니다. 어떤 도움이라도 대단히 감사하겠습니다.

이것이 내 첫 스위프트 프로젝트이며 iOS 플랫폼에 익숙하지 않다는 점에 유의해야합니다.

+0

VoIP 소켓으로 TCP 소켓을 사용하고 있습니까? http://stackoverflow.com/a/7393083/624920 –

+0

확실히 websocket을 사용하고 있습니다. 프로젝트 코드는 여기에서 찾을 수 있습니다. https://github.com/BetterVoice/phonertc/blob/master/src/ios/WebSocket.swift#L27 –

답변

0

당신은 당신의 대답 또는 일부 단서를 찾을 수 있습니다 ->here < -

제대로

는 다음과 같은 조회가 :

applicationDidEnterBackground 
beginBackgroundTaskWithExpirationHandler 
1

애플 documentation에서 봐를, 당신은 아마 관심 UIBackgroundModes=voip.

UPD : 문서에서

:

  1. 는 배경 모드 섹션에서 IP를 통한 음성에 대한 지원을 활성화 :

    가의 VoIP 응용 프로그램을 구성하려면 다음을 수행해야합니다 Xcode 프로젝트의 기능 탭 . (당신은 또한 앱의 Info.plist 파일에서의 VoIP 값으로 UIBackgroundModes 키를 포함하여이 지원을 활성화 할 수 있습니다.)

  2. 구성 의 VoIP 사용을위한 응용 프로그램의 소켓 중 하나.
  3. 배경으로 이동하기 전에 주기적으로 실행되는 이되도록 처리기를 설치하려면 setKeepAliveTimeout:handler: 메서드를 호출하십시오. 앱에서이 핸들러를 사용하여 서비스 연결을 유지 관리 할 수 ​​있습니다.
  4. 전환을 처리하도록 오디오 세션을 구성하십시오.
+2

링크가 끊어 지거나 변경되면 답변이 '너 아마'UIBackgroundModes = voip'에 관심이 있습니다. ". 링크를 따라갈 필요가 없도록 조금 살살 수 있습니까? –

+1

다음 업데이트가 의미가 있습니까? – ilidar

+0

아, 그건 ** 많이 ** 더 좋습니다. 고맙습니다. –

2

백그라운드 모드에서 응용 프로그램을 작업 할 수 있도록하려면, 당신은 ON IP 플래그를 통해 음성을 활성화해야합니다 (경로 : 대상으로 이동 -> 기능 -> 배경 모드). 아래처럼.

enter image description here

그리고 백그라운드에서 지원하는 프로젝트에서 다음 코드를 추가합니다

1 단계 : 글로벌 변수로 선언 __block UIBackgroundTaskIdentifier bgTask.

2 단계 : applicationDidEnterBackground에 다음 코드를 추가하십시오.

- (void)applicationDidEnterBackground:(UIApplication *)application { 

     bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
     bgTask = UIBackgroundTaskInvalid; 
      }]; 

} 

3 단계 : 정지 백그라운드 작업 처리기 한 번 전경 모드에서 온 앱은.

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 

    [[UIApplication sharedApplication] endBackgroundTask:bgTask]; 

} 
관련 문제