2016-07-27 1 views
1

ReplayKit을 사용 중입니다. 취소 또는 저장 버튼을 누르면보기 컨트롤러가 닫히고 광고를 게재하고 싶습니다. 문제는 광고가 표시되지 않고이 오류가 발생한다는 것입니다. 문제를 해결하려면 어떻게해야합니까? 감사!보기 컨트롤러를 삭제 한 후 내 Facebook 삽입 광고를 게재 할 수없는 이유는 무엇입니까?

Warning: Exception caught during invocation of received message, dropping incoming message and invalidating the connection. Exception: This method must be called on the main thread

internal func previewControllerDidFinish(previewController: RPPreviewViewController) { 

previewViewController.dismissViewControllerAnimated(true, completion: nil) 

NSNotificationCenter.defaultCenter().postNotificationName("loadAd", object: nil) 

} 
+0

예외의 완료 블록의 알림을 게시 할 수있는이 방법은 주 스레드에서 호출해야합니다. GCD를 사용하여 메인 스레드로 함수를 디스패치 할 수 있습니다. 그건 그렇고 사용자 인터페이스는 메인 스레드로 업데이 트해야합니다. 스위프트 3 사용을 위해 –

+0

'DispatchQueue.main.async { // 여기에 코드를 삽입 }' –

답변

3

모든 UI 관련 작업 는 주 스레드에서 수행해야합니다. 당신이 사용 GCD처럼 뭔가를 할 수 :

dispatch_async(dispatch_get_main_queue()) { 
     previewViewController.dismissViewControllerAnimated(true, completion: nil) 
} 

또한 dismissViewControllerAnimated

+0

지금이 오류를 얻을 : 경고 : 을 제시하는 시도에 은보기에없는 창 계층 구조! – coding22

+0

viewcontroller를 취소하고 광고를 표시 한 후 2 초 타이머를 추가해야했습니다. 어떤 이유로 든 재생 키트 창을 닫은 후에도 IT 부서에서 광고를 바로 호출 할 수 없었습니다. – coding22

+0

2 초 지연은 사실 실제로 많이 사용됩니다. 0.2 또는 0.5와 같이 더 낮은 무언가를 사용해보다 매끄러운 경험을 시도하십시오. 또는 무엇이든지 당신을 위해 일합니다 :) – akdsouza