React-Native-Admob Промежуточная и вознагражденная реклама не показывается, как ожидалось - PullRequest
0 голосов
/ 08 января 2020

У меня есть приложение 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

...