2011-01-29 4 views
1

Android 애플리케이션에서 AdMob을 사용 중이며 AdMob이 채워지지 않으면 백업 광고를 표시하고 싶습니다. _adView.setAdListener(에 연결되지만 광고가 반환되지 않으면 예상했던 것처럼 onFailedToReceiveAd이 실행되지 않습니다. 광고가 반환되면 onReceiveAd이 발생하므로 올바르게 연결되어 있다는 것을 알고 있습니다. LogCat은 다음과 같이 말합니다. "채우기 없음. 서버에서 사용할 수있는 광고가 없습니다." 그것은 맞는 것 같습니다. 어떤 아이디어?AdMob onFailedToReceiveRefreshedAd가 호출되지 않습니다.

공용 클래스 MultipleAdView가있는 LinearLayout {

private AdView _adView = null; 
private WebView _webView = null; 
private Context _context = null; 

/* 
* Constructor from parent class. 
*/ 
public MultipleAdView(Context context) { 
    super(context, null); 

    _context = context; 
} 

public MultipleAdView(Context context, AttributeSet attrs){ 
    super(context, attrs); 

    _context = context; 
} 

public void initialize(Activity activity){ 
    _adView = new AdView(activity); 
    _adView.setAdListener(new AdListener() { 

     @Override 
     public void onReceiveRefreshedAd(AdView arg0) { 
      int j = 0; 
      j++; 
     } 

     @Override 
     public void onReceiveAd(AdView arg0) { 
      // Just here for breakpoint - gets in here fine when ad is returned 
      int j = 0; 
      j++; 
     } 

     @Override 
     public void onFailedToReceiveRefreshedAd(AdView arg0) { 
      // Is never called when no ad is returned 
      loadBackupAd(); 
     } 

     @Override 
     public void onFailedToReceiveAd(AdView arg0) { 
      // Is never called when no ad is returned 
      loadBackupAd(); 
     } 

     private void loadBackupAd(){ 

      // Load backup ad here 
     } 
    }); 

    addView(_adView, new LinearLayout.LayoutParams(
      LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

} 

}

+0

나는 AdWhirl에 대해 지금 읽고있다. 내가 대신하고 싶은 것인가? – skaz

답변

0

최근에 알아 냈습니다. onFailedToReceiveAdonFailedToReceiveRefreshedAd에는 테스트를 통해서만 결정한 특수한 조건이있는 것 같습니다.

onFailedToReceiveAdadview의 첫 번째 광고를 가져 오기위한 첫 번째 호출에서 어떤 광고도 반환하지 않는 경우에만 호출됩니다. refreshAd으로 광고를 처음 요청하는 동안 광고가 수신되거나 간격을 설정하면이 메시지가 표시되지 않습니다.

onFailedToReceiveRefreshedAd은 (는) adView이 자동으로 새로 고침되는 동안 시작되지 않습니다. refreshAd이 직접 호출 될 때 호출됩니다 (onReceivedRefreshedAd과 동일). 아래에서 내 수정보기 ...

여러 광고 네트워크에 광고를 게재하려는 경우 광고 whirl이 더 좋습니다. 그것은 서버에서 배급을 처리하지만 여전히 문제가 admob과 동기화되지 않는 것으로 보입니다. 다행히 adwhirl 코드는 오픈 소스이기 때문에 무엇을하는지 살펴볼 수 있습니다.


질문에 따라 일부 파고가 발생했습니다. 안드로이드 애드 월 SDK에서 :

public void onReceiveAd(AdView adView) { 
    Log.d(AdWhirlUtil.ADWHIRL, "AdMob success"); 

    AdWhirlLayout adWhirlLayout = adWhirlLayoutReference.get(); 
    if (adWhirlLayout == null) { 
     return; 
    } 

    adWhirlLayout.adWhirlManager.resetRollover(); 
    adWhirlLayout.handler.post(new ViewAdRunnable(adWhirlLayout, adView)); 
    adWhirlLayout.rotateThreadedDelayed(); 
    } 

    public void onFailedToReceiveAd(AdView adView) { 
    Log.d(AdWhirlUtil.ADWHIRL, "AdMob failure"); 

    adView.setAdListener(null); 

    AdWhirlLayout adWhirlLayout = adWhirlLayoutReference.get(); 
    if (adWhirlLayout == null) { 
     return; 
    } 

    adWhirlLayout.rollover(); 
    } 

    public void onFailedToReceiveRefreshedAd(AdView adView) { 
    // Don't call adView.refreshAd so this is never called. 
    } 

    public void onReceiveRefreshedAd(AdView adView) { 
    // Don't call adView.refreshAd so this is never called. 
    } 
} 

이 점점 onFailedToReceiveRefreshedAd위한 메커니즘이 실제로 TimerTask를하거나 정렬을 사용하여 설정 자신의 광고 간격 타이머를 할 수 있다는 것을 나에게 제안합니다. 자동 새로 고침을 사용 중지하는 동안이 작업을 수행했다면 내 운이 좋을 것입니다.

+0

심층 대응에 감사드립니다. 나는 onFailedToReceiveAd를 처음으로 광고 요청을 할 때 호출 할 수 없습니다. 나는 본체에 더 많은 코드를 게시 할 예정이다. – skaz

+0

나는이 일을 해 본 적이 없지만 모든 문제를 해결 한 AdWhirl로 바꿨다. :) – skaz

+0

누구나 adwhirl과 함께 onfailedtoreceivead 응답을 얻었습니까? 데모로 정말 감사 할 것입니다 ... –

0

또한 onFailedToReceiveRefreshedAd을 구현하는 시도 할 수를 확장합니다.

관련 문제