将来のアプリにAdMobバナーを表示していたので、インタースティシャル広告を試してみたいと思います。
AdMob SDKの実装を確認し、サンプルソースがコピーされたのは、それがまさに私が望むものであったためです(アクティビティの起動時に表示されるインタースティシャル)。
エミュレーターとGalaxyで試してみましたが、広告は表示されていません。
ソースコードは次のとおりです。
public class Asscreed extends Activity {
private InterstitialAd interstitial;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_asscreed);
// Create the interstitial.
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId("ca-app-pub-6046034785851961/xxxxxx");
// Create ad request.
AdRequest adRequest = new AdRequest.Builder().build();
// Begin loading your interstitial.
interstitial.loadAd(adRequest);
}
// Invoke displayInterstitial() when you are ready to display an interstitial.
public void displayInterstitial() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
}
インポートは問題なく、Google Play Servicesライブラリはもちろんインポートされます。
この例を使用します: AdMob Android Guides-Interstitial Ad 。
誰かが私のコードの何が悪いのか教えてもらえますか?
広告が読み込まれるのを待つ必要があります。そのときだけ、広告を表示するdisplayInterstial()メソッドを呼び出すことができます。
リスナーに登録することができます。これにより、ロードが完了したときに通知されます。
interstitial.setAdListener(new AdListener(){ public void onAdLoaded(){ displayInterstitial(); } })
これは私のためにそれをしました。
// Begin listening to interstitial & show ads.
interstitial.setAdListener(new AdListener(){
public void onAdLoaded(){
interstitial.show();
}
});
まだグーグルのすべての人が、ドットをたどった後にうまくいかない方向を実装するコードをアップロードするのはなぜだろうか。
同じ問題がありました。問題は、admobアクティビティがマニフェストで定義されていないことでした。マニフェストファイルに次のアクティビティタグがあることを確認してください
<activity
Android:name="com.google.Android.gms.ads.AdActivity"
Android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
Android:theme="@Android:style/Theme.Translucent" />
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("Your Interstitial Id ca-app-pub-46563563567356235/3452455");
AdRequest adRequest1 = new AdRequest.Builder()
.build();
mInterstitialAd.loadAd(adRequest1);
mInterstitialAd.setAdListener(new com.google.Android.gms.ads.AdListener() {
@Override
public void onAdLoaded() {
mInterstitialAd.show();
super.onAdLoaded();
}
});
OnCreateで初期化してみてください。ただし、ボタンクリックなどのイベントからのみshow()メソッドを呼び出してください。
このコードを使用すると、テストIDが機能します。
@Override
protected void onCreate(Bundle savedInstanceState) {
...
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); //test id
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); //test ad
mInterstitialAd.loadAd(new AdRequest.Builder().build());
btn_test.setOnClickListener(view -> {
showInterstitial();
});
...
}
private void showInterstitial()
{
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
}