私は多くのブログから物事を試しましたが、どれも段階的な解決策を提供しませんでした。 AdMobサイトで何かを編集する必要がありますか? [サイトとアプリ]タブの広告シート/アプリオプションからサイトを作成しました。
私はこのコードを使用しました:
interstitial = new InterstitialAd(this, "MyAdMobID");
// Set Ad Listener to use the callbacks below
interstitial.setAdListener(this);
// Create ad request
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
// Begin loading your interstitial
interstitial.loadAd(adRequest);
adRequest.setTesting(true);
最後のAndroidフレームワークを使用して、広告が閉じられるたびにload()関数を呼び出す必要があることを理解しました。
import com.google.Android.gms.ads.*;
import Android.os.Handler;
import Android.os.Looper;
import Android.app.Activity;
class MyActivity extends Activity implements AdListener {
private InterstitialAd adView; // The ad
private Handler mHandler; // Handler to display the ad on the UI thread
private Runnable displayAd; // Code to execute to perform this operation
@Override
public void onCreate(Bundle savedInstanceState) {
adView = new InterstitialAd(mContext);
adView.setAdUnitId("ca-app-pub-XXXXXXXXXX");
adView.setAdListener(this);
mHandler = new Handler(Looper.getMainLooper());
displayAd = new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (adView.isLoaded()) {
adView.show();
}
}
});
}
};
loadAd();
}
@Override
public void onAdClosed() {
loadAd(); // Need to reload the Ad when it is closed.
}
void loadAd() {
AdRequest adRequest = new AdRequest.Builder()
//.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
// Load the adView object witht he request
adView.loadAd(adRequest);
}
//Call displayInterstitial() once you are ready to display the ad.
public void displayInterstitial() {
mHandler.postDelayed(displayAd, 1);
}
}
バナーとは異なり、インスティスティシャル広告は、読み込まれると自動的に表示されません。 AdMobのonReceiveAd()
コールバックをリッスンする必要があり、そのコールバック内でinterstital.show()
を呼び出してインタースティシャルを表示します。
_public YourActivity extends Activity implements AdListener {
...
@Override
public void onReceiveAd(Ad ad) {
Log.d("OK", "Received ad");
if (ad == interstitial) {
interstitial.show();
}
}
}
_
コード例 here を確認してください。この例では、インタースティシャルが受信されるとすぐに表示されます。または、ゲームレベルの終了時など、インタースティシャルを表示する適切な時間まで待機し、interstitial.isReady()
をチェックして、インタースティシャルを表示できるかどうかを確認することもできます。
AdListenerはもう実装できません。私は次のように使用しました。
final InterstitialAd mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getResources().getString(R.string.interstitial_ad_unit_id));
AdRequest adRequestInter = new AdRequest.Builder().build();
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
mInterstitialAd.show();
}
});
mInterstitialAd.loadAd(adRequestInter);
独自のIDを、interstitial_ad_unit_idという名前のstrings.xmlに配置するか、
getResources().getString(R.string.interstitial_ad_unit_id)
あなたのIDで。
この例のコードが役立つと思います。
AdMobインタースティシャル広告をAndroid Apps に追加する方法
この例では、ソースコード全体を示しています。また、一般的なエラーのいくつかの解決策も提供します。たとえば、onFailedToReceiveAdエラーソリューションで、広告が返されないソリューション。そこからソースコードをダウンロードすることもできます。
アプリの開始時にこの関数を呼び出します:
InterstitialAd interstitial;
public void AdMob() {
AdRequest adRequest = new AdRequest.Builder().addTestDevice("YOUR_TEST_DEVICE_ID").build();
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId("YOUR_AD_ID");
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
//Ads loaded
}
@Override
public void onAdClosed() {
super.onAdClosed();
//Ads closed
}
@Override
public void onAdFailedToLoad(int errorCode) {
super.onAdFailedToLoad(errorCode);
//Ads couldn't loaded
}
});
interstitial.loadAd(adRequest);
}
次に、広告を表示できます。
if (interstitial.isLoaded()){
interstitial.show();
}
表示する前に広告を準備する必要があります。これには、デバイスのインターネット速度に応じて3〜5秒かかりました。
参考までに、interstitial.isReady()
メソッドはサポートされなくなりました。これは正しい方法です。
if (interstitial.isLoaded()) {
interstitial.show();
}
バナー広告とインタースティシャル広告を追加する:
AdView mAdView;
InterstitialAd interstitialAd;
ProgressDialog pd;
void showAds(){
if(interstitialAd.isLoaded()){
interstitialAd.show();
}
}
public void initAds(){
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
interstitialAd=new InterstitialAd(this);
interstitialAd.setAdUnitId(getResources().getString(R.string.inetial3));
AdRequest adRequest1=new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest1);
}
そしてXMLで:
<com.google.Android.gms.ads.AdView
xmlns:ads="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/adView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id2"
Android:layout_gravity="bottom|center">
</com.google.Android.gms.ads.AdView>
InterstitialAd mInterstitialAd;
//To load InterstitialAd ads
//app_id for test ca-app-pub-3940256099942544~3347511713
//full_id for test ca-app-pub-3940256099942544/1033173712
MobileAds.initialize(this, getString(R.string.app_id));
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getString(R.string.full_id));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Load the next interstitial
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
});
//To show ads
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
MainActivity.Javaでこれを試してください
private InterstitialAd interstitial;
// Initialize the Mobile Ads SDK
MobileAds.initialize(this, getString(R.string.admob_app_id));
AdRequest adIRequest = new AdRequest.Builder().build();
// Prepare the Interstitial Ad Activity
interstitial = new InterstitialAd(MainActivity.this);
// Insert the Ad Unit ID
//add admob_interstitial_id unit id in string file
interstitial.setAdUnitId(getString(R.string.admob_interstitial_id));
// Interstitial Ad load Request
interstitial.loadAd(adIRequest);
// Prepare an Interstitial Ad Listener
interstitial.setAdListener(new AdListener()
{
public void onAdLoaded()
{
// Call displayInterstitial() function when the Ad loads
displayInterstitial();
}
});
}
public void displayInterstitial()
{
// If Interstitial Ads are loaded then show else show nothing.
if (interstitial.isLoaded()) {
interstitial.show();
}
}