Admob показывает только тестовые объявления с посредничеством
РЕДАКТИРОВАТЬ: кажется, появляется эта ошибка всякий раз, когда он пытается загрузить объявление с вознаграждением AdColony:
W/AdColonyMediationAdapter: 100: SDK AdColony вернул обратный вызов при ошибке
и эта ошибка для facebook:
W/FacebookAdapter: не удалось загрузить объявление с вознаграждением: 1203: формат отображения в запросе объявления не соответствует формату отображения, указанному для этого места размещения. Каждое место размещения можно использовать только с одним форматом отображения. Вы можете создать несколько мест размещения, чтобы использовать несколько форматов отображения.
Adcolony использует полноэкранные рекламные объявления с вознаграждением, facebook использует межстраничные объявления, так как не существует формата вознагражденных объявлений.
По какой-то причине я реализовал весь код и SDK для рекламы admob, facebook и adcolony. Я следовал руководствам Google о том, как все это сделать, и, похоже, в режиме тестирования он работал нормально, однако, когда я затем опубликовал приложение, реклама не появлялась. Я проверял на разных устройствах, и кажется, что реклама работает только в тестовом режиме.
public class summonSimulator extends AppCompatActivity implements RewardedVideoAdListener {
RewardedVideoAd mAd;
TextView getSummons;
protected void onCreate(Bundle savedInstanceState) {
Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler(this));
super.onCreate(savedInstanceState);
setContentView(R.layout.summon_simulator);
AdColony.configure(this, "/*APPID*/", "/*ZONEID*/");
AdColonyAppOptions appOptions = AdColonyMediationAdapter.getAppOptions();
appOptions.setGDPRConsentString("1");
appOptions.setGDPRRequired(true);
AudienceNetworkAds.initialize(this);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(this);
mAd.loadAd("/*The ad unit id, double checked and is correct*/)", new AdRequest.Builder().build());
getSummons = findViewById(R.id.loadAd);
getSummons.setVisibility(View.INVISIBLE);
getSummons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAd.isLoaded()){
mAd.show();
} else {
Toast.makeText(summonSimulator.this, "Ad failed to load, have 10 summons on me", Toast.LENGTH_SHORT).show();
}
}
});
}
Затем полный рекламный код
@Override
public void onRewardedVideoAdLoaded() {
Log.i("tag", "onRewardedVideoAdLoaded");
getSummons.setVisibility(View.VISIBLE);
}
@Override
public void onRewardedVideoAdOpened() {
Log.i("tag", "onRewardedVideoAdOpened");
getSummons.setVisibility(View.INVISIBLE);
}
@Override
public void onRewardedVideoStarted() {
Log.i("tag", "onRewardedVideoStarted");
}
@Override
public void onRewardedVideoAdClosed() {
Log.i("tag", "onRewardedVideoAdClosed");
mAd.loadAd("/*The ad unit id, double checked and is correct*/", new AdRequest.Builder().build());
}
@Override
public void onRewarded(RewardItem rewardItem) {
Log.i("tag", "onRewarded");
Toast.makeText(summonSimulator.this, "You received " + rewardItem.getAmount() + " " + rewardItem.getType(), Toast.LENGTH_SHORT).show();
summonsLeft = summonsLeft + 20;
summonsLeftText.setText("Summons Left: " + summonsLeft);
SharedPreferences.Editor editor = settings2.edit();
editor.putInt("summonsLeft", summonsLeft);
editor.apply();
}
@Override
public void onRewardedVideoAdLeftApplication() {
Log.i("tag", "onRewardedVideoAdLeftApplication");
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Log.i("tag", "onRewardedVideoAdFailedToLoad");
mAd.loadAd("/*The ad unit id, double checked and is correct*/", new AdRequest.Builder().build());
getSummons.setVisibility(View.VISIBLE);
}
@Override
public void onRewardedVideoCompleted() {
Log.i("tag", "onRewardedVideoCompleted");
}