2014-07-24 4 views
4

다른 사용자가 활동을 떠날 때 표시되는 Android 앱에 Admob 삽입 광고를 추가하려고했습니다.Admob 삽입 광고는로드되지만 화면이 비어 있습니다.

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 
import com.google.android.gms.ads.AdListener; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.InterstitialAd; 

public class Banner extends Activity { 

/** 
* Your ad unit id, you must replace it with your actual ad unit id Which 
* you can generate from Admob website 
* 
*/ 
private static final String AD_UNIT_ID = "MY ADD UNIT ID"; 
private static final String TAG = "ExampleActivity"; 
private InterstitialAd iAd; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.banner); 

    iAd = new InterstitialAd(this); 
    iAd.setAdUnitId(AD_UNIT_ID); 

    iAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      Log.d(TAG, "onAdLoaded"); 
      Toast.makeText(Banner.this, "Ad loaded successfully", 
        Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onAdFailedToLoad(int errorCode) { 
      String errorMessage = String.format("Failed to load add : " 
        + getErrorReason(errorCode)); 
      Log.d(TAG, errorMessage); 
      Toast.makeText(Banner.this, errorMessage, 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    loadInterstitial(); 
} 

public void loadInterstitial() { 
    AdRequest adRequest = new AdRequest.Builder() 
      .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
      .addTestDevice(
        "You can add you device id here, run code once and get id from logs") 
      .build(); 

    iAd.loadAd(adRequest); 
} 

public void showInterstitial() { 
    if (iAd.isLoaded()) { 
     iAd.show(); 
    } else { 
     Log.d(TAG, "Interstitial ad is not loaded yet"); 
    } 
} 

/** 
* Gets a string error reason from an error code 
* 
* @param errorCode 
* @return 
*/ 
private String getErrorReason(int errorCode) { 

    String errorReason = "unknown error"; 

    switch (errorCode) { 
    case AdRequest.ERROR_CODE_INTERNAL_ERROR: 
     errorReason = "internal error"; 
     break; 
    case AdRequest.ERROR_CODE_INVALID_REQUEST: 
     errorReason = "invalid request"; 
     break; 
    case AdRequest.ERROR_CODE_NETWORK_ERROR: 
     errorReason = "network Error"; 
     break; 
    case AdRequest.ERROR_CODE_NO_FILL: 
     errorReason = "no fill"; 
     break; 
    } 
    return errorReason; 
} 

@Override 
protected void onDestroy() { 
    showInterstitial(); 
    super.onDestroy(); 
} 

}

성공적으로 틈새로드하지만 난 빈 화면이 다음과 같이 (내가 1~2분하지만 여전히 어떤 광고 프로그램을 기다렸다) 얻을 : 나는 두 번

enter image description here

내 AD_UNIT_ID를 확인했습니다. 무엇이 문제 일 수 있습니까? 이게 정상인가? 아직 개발 단계에 있으므로 Play 스토어에서 내 앱을 업로드 할 때 수정 될 예정입니까?

+0

내가 틀렸다면 사용자가 활동을 종료하려고 할 때 광고를 표시하려고합니다. 이 경우 onDestroy 대신 onBackPressed를 사용해야하며 super.onBackPressed()는 AdListener의 onAdClosed()에 넣어야합니다. –

답변

1

당신은이 일을 결코 얻지 못할 것입니다.

활동이 파괴되는 시점에서 삽입 광고의 문맥이 없습니다. 대신 앱에서 자연적인 중단 점을 찾아서 삽입 광고를 표시하십시오. 이

Intent intent = new Intent(MainActivity.this, Banner.class); 
startActivityForResult(intent,0); 

같은

+0

활동 닫기 또는 앱 닫기 또는 앱 시작시 광고가 표시되면 빈 광고 표시 –

0

@Rushil 배너베이스 활동이 다음에 startActivityForResult를 사용하여 배너 활동을 시작하지 않은 경우() 메소드는 다음이 도움이 onActivityResult를 기능에

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode==0||resultCode==Activity.RESULT_OK) 
    { 
     if (iAd.isLoaded()) 
     { 
     iAd.show(); 
     } 
    } 
    super.onActivityResult(requestCode, resultCode, data); 

} 

희망 광고를 보여줍니다)

관련 문제