다른 사용자가 활동을 떠날 때 표시되는 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분하지만 여전히 어떤 광고 프로그램을 기다렸다) 얻을 : 나는 두 번
내 AD_UNIT_ID를 확인했습니다. 무엇이 문제 일 수 있습니까? 이게 정상인가? 아직 개발 단계에 있으므로 Play 스토어에서 내 앱을 업로드 할 때 수정 될 예정입니까?
내가 틀렸다면 사용자가 활동을 종료하려고 할 때 광고를 표시하려고합니다. 이 경우 onDestroy 대신 onBackPressed를 사용해야하며 super.onBackPressed()는 AdListener의 onAdClosed()에 넣어야합니다. –