yandexmobile / yandex-ads-flutter-plugin

Flutter plugin for Yandex Mobile Ads SDK. This plugin allows Flutter developers to easily integrate Yandex Mobile Ads SDK on Android and iOS apps.
Other
11 stars 2 forks source link

ios. Совсем не показывается рекламное объявление типа Rewarded в релиз сборке. Критично. #26

Closed stayf closed 9 months ago

stayf commented 10 months ago

Добрый день.

В релиз сборке не отображается rewardedAd. Похоже после вызова loadAd не дергается ни onAdFailedToLoad ни onAdLoaded. В дебаг сборке проблемы нет. И еще в релиз сборке rewardedAd начинает работать если перед этим показать рекламу InterstitialAd.

yandex_mobileads: ^6.2.0

yandx.RewardedAdLoader.create(
        onAdLoaded: (rewardedAd) {
          rewardedAd.setAdEventListener(
            eventListener: yandx.RewardedAdEventListener(
              onAdDismissed: () {
                if (!isClosed) Get.forceBack(withSnackBar: false);
              },
              onRewarded: (reward) => _onRewarded(),
            ),
          );
          rewardedYandexAd = rewardedAd;
          if (isClosed) {
            rewardedYandexAd?.destroy();
            rewardedYandexAd = null;
            return;
          }
          _toggleProgress(false);
          rewardedYandexAd?.show();
        },
        onAdFailedToLoad: (error) {
          _toggleProgress(false);
          if (!isClosed) Get.forceBack(result: "Error. Please check your internet connection.".tr, withSnackBar: false);
        },
      ).then((ad) {
        rewardedAdLoader = ad;
        ad.loadAd(adRequestConfiguration: yandx.AdRequestConfiguration(adUnitId: _adsProcedure.yandexRewardedAdUnitId));
      });
stayf commented 10 months ago

Добавлю, что баннерная реклама работает в релиз сборке без проблем.

stayf commented 10 months ago

В дебаг сборке вижу вот такое сообщение в логах при отображении RewardedAd: [AdPresentation] Validation visibility is failed. Ad must be bound. Please, ensure that you have bound the native ad.

stayf commented 10 months ago

По итогу получилось завести вот таким образом:

yandx.RewardedAdLoader.create(
        onAdLoaded: (rewardedAd) {
          rewardedAd.setAdEventListener(
            eventListener: yandx.RewardedAdEventListener(
              onAdDismissed: () {
                if (isAdDismissedCalled) return;
                isAdDismissedCalled = true;
                if (!isClosed) Get.forceBack(withSnackBar: false);
                rewardedYandexAd?.destroy();
                rewardedYandexAd = null;
                rewardedAdLoader?.destroy();
                rewardedAdLoader = null;
              },
              onRewarded: (reward) => _onRewarded(),
            ),
          );
          rewardedYandexAd = rewardedAd;
          if (isClosed) {
            rewardedYandexAd?.destroy();
            rewardedYandexAd = null;
            rewardedAdLoader?.destroy();
            rewardedAdLoader = null;
            return;
          }
          _toggleProgress(false);
          rewardedYandexAd?.show();
        },
        onAdFailedToLoad: (error) {
          rewardedAdLoader?.destroy();
          rewardedAdLoader = null;
          _toggleProgress(false);
          if (!isClosed) Get.forceBack(result: "Error. Please check your internet connection.".tr, withSnackBar: false);
        },
      ).then((ad) {
        rewardedAdLoader = ad;
        ad.loadAd(adRequestConfiguration: yandx.AdRequestConfiguration(adUnitId: _adsProcedure.yandexRewardedAdUnitId)).catchError((error) {});
      });

Мне не ясно почему. Но теперь на релиз сборке все работает корректно.

mobile-ads-github commented 10 months ago

Спасибо за Ваше обращение, для разбора создана задача с номером PCODESUP-2818. Мы ознакомимся и вернемся с ответом в течение 2 дней, возможно запросим дополнительную информацию.

Thank you for your message, a task with the number PCODESUP-2818 has been created for analysis. We will get acquainted and return with the answer within 2 days, we may request additional information.

mobile-ads-github commented 10 months ago

Добрый день! Не смогли воспроизвести проблему на своей стороне, но рады, что получилось найти решение самостоятельно!

vanyasem commented 5 months ago

@mobile-ads-github наблюдаю у себя такую проблему, если создать новый rewardedAdLoader и сразу же после его создания запросить загрузку рекламы Если rewardedAdLoader был создан заранее - то проблема не возникает