【发布时间】:2022-06-17 09:13:55
【问题描述】:
我一直在尝试寻找一种在我的应用片段中加载插页式广告的方法。你们中的一些人会说,如果插页式广告在活动之间出现,为什么要这样做?那么在这个片段中,我有一个播放按钮,当我点击一个插页式广告时,会在收听之前弹出。我的应用程序一直在旧版本的 google ads 实现中,我之前在片段中使用了此代码:
loadInterstitialAd(); //when play pressed
@SuppressLint("MissingPermission")
private void loadInterstitialAd() {
if (Config.ENABLE_ADMOB_INTERSTITIAL_ON_PLAY) {
interstitialAd = new InterstitialAd(getActivity());
interstitialAd.setAdUnitId(getResources().getString(R.string.admob_interstitial_unit_id));
interstitialAd.loadAd(GDPR.getAdRequest(getActivity()));
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
interstitialAd.loadAd(GDPR.getAdRequest(getActivity()));
}
});
} else {
Log.d("INFO", "AdMob Interstitial is Disabled");
}
}
private void showInterstitialAd() {
if (Config.ENABLE_ADMOB_INTERSTITIAL_ON_PLAY) {
if (interstitialAd != null && interstitialAd.isLoaded()) {
if (counter == Config.ADMOB_INTERSTITIAL_ON_PLAY_INTERVAL) {
interstitialAd.show();
counter = 1;
} else {
counter++;
}
} else {
Log.d("INFO", "Interstitial Ad is Disabled");
}
} else {
Log.d("INFO", "AdMob Interstitial is Disabled");
}
}
在 20.0.something 版本中,此代码不再工作,我尝试实现其他代码但未成功。文档说必须进入的代码是:
public class MyActivity extends AppCompatActivity {
private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712";
private static final String TAG = "MyActivity";
private InterstitialAd interstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// Initialize the Mobile Ads SDK.
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {}
});
loadAd();
});
}
public void loadAd() {
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(
this,
AD_UNIT_ID,
adRequest,
new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// The mInterstitialAd reference will be null until
// an ad is loaded.
MyActivity.this.interstitialAd = interstitialAd;
Log.i(TAG, "onAdLoaded");
Toast.makeText(MyActivity.this, "onAdLoaded()", Toast.LENGTH_SHORT).show();
interstitialAd.setFullScreenContentCallback(
new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {
// Called when fullscreen content is dismissed.
// Make sure to set your reference to null so you don't
// show it a second time.
MyActivity.this.interstitialAd = null;
Log.d("TAG", "The ad was dismissed.");
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when fullscreen content failed to show.
// Make sure to set your reference to null so you don't
// show it a second time.
MyActivity.this.interstitialAd = null;
Log.d("TAG", "The ad failed to show.");
}
@Override
public void onAdShowedFullScreenContent() {
// Called when fullscreen content is shown.
Log.d("TAG", "The ad was shown.");
}
});
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error
Log.i(TAG, loadAdError.getMessage());
interstitialAd = null;
String error =
String.format(
"domain: %s, code: %d, message: %s",
loadAdError.getDomain(), loadAdError.getCode(), loadAdError.getMessage());
Toast.makeText(
MyActivity.this, "onAdFailedToLoad() with error: " + error, Toast.LENGTH_SHORT)
.show();
}
});
}
}
private void showInterstitial() {
if (interstitialAd != null) {
interstitialAd.show(this);
} else {
"Cancel or Stop"
}
}
private void play() {
if (interstitialAd == null) {
loadAd();
}
}
}
我认为问题在于它是一个片段,但正如我所展示的,在以前的版本中,这是可能的。我需要它在片段中。我无法从那里改变它
【问题讨论】:
-
提前感谢那些愿意帮助我的人,我有点挣扎,我是这方面的业余爱好者
标签: android android-fragments admob interstitial