У меня есть приложение React-Native, в котором также установлен React-Native-Admob. Я вижу баннер в моем приложении без проблем. Однако у меня есть некоторые проблемы с отображением промежуточных или вознагражденных приложений.
Я предпочитаю показывать вознагражденное объявление, поэтому начну с этого. Пользователи могут загружать изображения и информацию в приложение бесплатно. При нажатии на кнопку отчета открывается модал, который спрашивает, хотят ли они платить, сделать это бесплатно. Если они выбирают бесплатно, модал должен закрыться и должно быть показано вознагражденное приложение. После просмотра загрузка должна начаться.
В соответствии с примером приложения я должен поместить их в ComponentdidMount, поэтому я решил поместить их в ловушку useEffect;
useEffect(() => {
AdMobRewarded.setTestDevices([AdMobRewarded.simulatorId]);
AdMobRewarded.setAdUnitID('ca-app-pub-3940256099942544/5224354917');
AdMobRewarded.addEventListener('rewarded', reward =>
console.log('AdMobRewarded => rewarded', reward),
);
AdMobRewarded.addEventListener('adLoaded', () =>
console.log('AdMobRewarded => adLoaded'),
);
AdMobRewarded.addEventListener('adFailedToLoad', error =>
console.warn(error),
);
AdMobRewarded.addEventListener('adOpened', () =>
console.log('AdMobRewarded => adOpened'),
);
AdMobRewarded.addEventListener('videoStarted', () =>
console.log('AdMobRewarded => videoStarted'),
);
AdMobRewarded.addEventListener('adClosed', () => {
console.log('AdMobRewarded => adClosed');
AdMobRewarded.requestAd().catch(error => console.warn(error));
});
AdMobRewarded.addEventListener('adLeftApplication', () =>
console.log('AdMobRewarded => adLeftApplication'),
);
AdMobRewarded.requestAd().catch(error => console.warn(error));
}, [])
Так что при нажатии на кнопку «бесплатно» в модальном режиме вызывается addUsingAdHandler;
const addUsingAdHandler = () => {
setIsAddMode(false)
console.log('Rewared video is shown')
AdMobRewarded.showAd().catch(error => console.warn(error));
Однако, когда я просматриваю эту страницу, я сразу же получаю предупреждение;
{"framesToPop":1, "code": "E_AD_FAILED_TO_LOAD","nativeStackIOS etc. etc.
Error: Cannot send request while another ad is being presented. Another rewarded ad may be requested after the current ad closes.
at createErrorFromErrorData (utils.js:6)
at RNAdMobRewarded.js:30
at RCTDeviceEventEmitter.emit (EventEmitter.js:189)
at MessageQueue.__callFunction (MessageQueue.js:366)
at MessageQueue.js:106
at MessageQueue.__guard (MessageQueue.js:314)
at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:105)
at RNDebuggerWorker.js:2
Если я проигнорирую это предупреждение и нажму кнопку «бесплатно», модальное окно будет закрыто, как и ожидалось, также будет показан мой журнал консоли. Однако после журнала ошибка: объявление не готово к показу.
Так что я подумал, что это потому, что я использовал тестовые идентификаторы от Admob без активации вознагражденного объявления в моей учетной записи / приложении онлайн. Поэтому я взял рекламное объявление, которое было активировано через несколько дней go. Это работает без каких-либо предупреждений. Однако, когда модальное окно закрыто и реклама должна отображаться, ничего не происходит.
Кто-нибудь может подсказать мне, чтобы мой Admob работал с вознагражденными? Если потребуется, я снова могу изменить свой код на промежуточный и проверить его для вас / показать код. React-native-cli: 2.0.1 React-native: 0.59.10 React-native-admob: 2.0.0-beta.6