2014-10-25 6 views
0

cocos2d (버전 3.1.0)에서 삽입 광고와 관련하여 매우 이상한 문제가 발생했습니다. 두 삽입 광고를 모두로드하는 데 사용하는 코드입니다. 당신이 터치를 취소 (손가락을 해제) 팝업 창을 닫을 때iAd/google 삽입 광고 팝업 후 앱이 종료되었습니다.

- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial { 
    [interstitial presentFromRootViewController:[CCDirector sharedDirector]]; 
    interstitial.delegate = nil; 
    interstitial = nil; 
} 
- (void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd { 
    [interstitialAd presentFromViewController:[CCDirector sharedDirector]]; 

} 

모든 것이 잘 보인다는 넣고 간질이 튀어 전에 화면에 손가락을 개최 할 때까지 잘 작동, 다음 응용 프로그램이 응답하지 터치 핸들러가 전혀 작동하지 않아 앱을 다시 시작해야합니다. 나는 문제의 원인을 찾는 것이 성공하지 못하여 몇 시간 동안 고심하고있다. CCDirector 애니메이션 방법을 중지하고 시작할 수 있습니까?

답변

1

버그를 해결했습니다. 내가 한 것은 google/iAD 삽입 광고가 표시되기 전에 반응 관리자를 사용 중지하는 것입니다. 아래에서 방법을 볼 수 있습니다. 다음 코드를 넣어 CCDirectorIOS.m 파일에 startAnimation (무효) -

- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial { 
    [[[CCDirector sharedDirector]responderManager]setEnabled:false]; 
    [interstitial presentFromRootViewController:[CCDirector sharedDirector]]; 
    interstitial.delegate = nil; 
    interstitial = nil; 
} 
- (void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd { 
    [[[CCDirector sharedDirector]responderManager]setEnabled:false]; 
    [interstitialAd presentFromViewController:[CCDirector sharedDirector]]; 
} 

는 그 후 나는 에 다시 사용 가능.

if (![[self responderManager]isEnabled]) { 
     [[self responderManager]setEnabled:true]; 
} 

나는 라이브러리 코드를 변경하면 직접 항상 좋은 생각되지 않기 때문에이 우아한 해결책이 아니다는 것을 알지만, 다른 대안을 찾을 수 없습니다. 나는 이것이 cocos2d 버그라고 생각하지만, 확실하지는 않습니다. 경험이 많은 사람이 정확한 문제를 지적 할 수 있습니다. 나는이 버그가 최신 cocos2d 버전에 존재하는지 전혀 모른다.

편집 :이 동작은 최신 버전에도 있습니다.