【发布时间】:2020-11-13 12:21:32
【问题描述】:
我的广告不显示。
我正在开发一个需要广告的应用。目前为了测试,我在 Google Play 控制台的内部测试轨道中有应用程序进行封闭测试。因此,我无法将其链接到 Admob 的 Play 商店中的应用。
因此,为了测试它们,我一直在测试广告单元,特别是插页式和奖励视频广告。它们加载良好。
今天,我决定切换到生产广告,因为我想发布该应用程序。因此,我为奖励广告和插页式广告创建了新的广告单元。将测试广告 ID 单元替换为生产广告单元 ID。我看到“广告加载失败:0”。
我没有使用示例广告单元,而是尝试将我的设备设置为测试设备。我看到了以下日志
I/Ads:此请求是从测试设备发送的。 I/Ads:广告加载失败:0
我不确定问题是什么。我仍在内部测试轨道中。有问题吗?制作广告是否仅在链接到 Google Play 中的应用时才有效?
请让我知道我哪里出错了。请参阅 Admob 广告单元的附件图片
代码如下:
Manifest.xml:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx" />
build.gradle:
implementation 'com.google.android.gms:play-services-ads:19.2.0'
实施 AdMob:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Rest of the code
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
Log.w(TAG, " initialized mobile ad");
}
});
List<String> testDeviceIds = Arrays.asList("xxxxxxxxxxxxxxxxxxxxxxxxx");
RequestConfiguration configuration =
new RequestConfiguration.Builder().setTestDeviceIds(testDeviceIds).build();
MobileAds.setRequestConfiguration(configuration);
}
public void loadInterstitialAd(){
mInterstitialAd = new InterstitialAd(this);
this.rewardedAd = new RewardedAd(this, "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx");
//mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
}
@Override
public void onAdClosed() {
Log.w(TAG, "Interstitial ad cloed ");
onInterstitialshowed();
}
});
}
public void loadRewardedAd(){
this.rewardedAd = new RewardedAd(this, "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx");
//this.rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917");
RewardedAdLoadCallback callback = new RewardedAdLoadCallback(){
@Override
public void onRewardedAdFailedToLoad(int i) {
super.onRewardedAdFailedToLoad(i);
}
@Override
public void onRewardedAdLoaded() {
super.onRewardedAdLoaded();
showRewardedAd();
}
};
this.rewardedAd.loadAd(new AdRequest.Builder().build(), callback);
}
public void showRewardedAd(){
if(rewardedAd.isLoaded()){
RewardedAdCallback callback = new RewardedAdCallback() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
Log.w(TAG, "onUserEarnedReward");
}
@Override
public void onRewardedAdOpened() {
super.onRewardedAdOpened();
Log.w(TAG, "OnRewardAdOpened");
}
@Override
public void onRewardedAdClosed() {
super.onRewardedAdClosed();
onRewardedAdLoadedOnClick();
}
@Override
public void onRewardedAdFailedToShow(int i) {
super.onRewardedAdFailedToShow(i);
Log.w(TAG, "onRewardedAdFailedToShow");
}
};
this.rewardedAd.show(this, callback);
}else{
Log.i(TAG, "Ad not loaded");
}
}
【问题讨论】: