Невозможно загрузить следующее объявление (обновить) родную рекламу Flurry в моем приложении для Android - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь реализовать нативную рекламу от Flurry в своем приложении для Android.В настоящее время мне удается показывать нативную рекламу.Проблема в том, что я не могу заставить его показывать следующее нативное объявление после того, как Flurry регистрирует текущее показ рекламы.

Псевдоподдержка Flurry говорит о том, что объявление не может быть настроено на самообновление, поэтому разработчику необходимо выполнить код обработки.отображать следующую нативную рекламу.Код, отображающий первое собственное объявление Flurry:

private FlurryAdNative mFlurryAdNative = null;
private static final String AD_ASSET_SUMMARY = "summary";
private static final String AD_ASSET_HEADLINE = "headline";
private static final String AD_ASSET_SOURCE = "source";
private static final String AD_ASSET_SEC_HQ_BRANDING_LOGO = "secHqBrandingLogo";
private static final String AD_ASSET_SEC_HQ_RATING_IMAGE = "secHqRatingImg";
private static final String AD_ASSET_SHOW_RATING = "showRating";
private static final String AD_ASSET_SEC_HQ_IMAGE = "secHqImage";
private static final String AD_ASSET_SEC_IMAGE = "secImage";
private static final String AD_ASSET_VIDEO_URL = "videoUrl";

    final TextView adSourceTxt = (TextView)findViewById(R.id.ad_source);
    final TextView adHeadlineTxt = (TextView)findViewById(R.id.ad_headline);
    final TextView adDescription = (TextView)findViewById(R.id.ad_description);
    final ViewGroup adVideo = (ViewGroup)findViewById(R.id.ad_video);
    final ImageView adImage = (ImageView)findViewById(R.id.ad_image);
    final ImageView adSponsorImg = (ImageView)findViewById(R.id.sponsored_image);
    final ImageView adAppRatingImg = (ImageView)findViewById(R.id.app_rating_image);

    mFlurryAdNative = new FlurryAdNative(this, mAdSpaceName);

    // allow us to get callbacks for ad events
    FlurryAdNativeListener nativeListener = new FlurryAdNativeListener() {

        //This method will be called when the ad has been received from the server
        @Override
        public void onFetched(FlurryAdNative adNative) {
            // for instance, you can parse the adNative for the assets returned and create the view to display the ad
            adNative.getAsset(AD_ASSET_SOURCE).loadAssetIntoView(adSourceTxt);
            adNative.getAsset(AD_ASSET_HEADLINE).loadAssetIntoView(adHeadlineTxt);
            adNative.getAsset(AD_ASSET_SUMMARY).loadAssetIntoView(adDescription);
            if (adNative.isVideoAd()) {
                adNative.getAsset(AD_ASSET_VIDEO_URL).loadAssetIntoView(adVideo);
            }
            if (adNative.getAsset(AD_ASSET_SEC_HQ_IMAGE) != null) {
                adNative.getAsset(AD_ASSET_SEC_HQ_IMAGE).loadAssetIntoView(adImage);
            } else if (adNative.getAsset(AD_ASSET_SEC_IMAGE) != null) {
                adNative.getAsset(AD_ASSET_SEC_IMAGE).loadAssetIntoView(adImage);
            }
            adNative.getAsset(AD_ASSET_SEC_HQ_BRANDING_LOGO).loadAssetIntoView(adSponsorImg);
            if (adNative.getAsset(AD_ASSET_SHOW_RATING) != null &&
                    adNative.getAsset(AD_ASSET_SHOW_RATING).equals("true")) {
                adNative.getAsset(AD_ASSET_SEC_HQ_RATING_IMAGE).loadAssetIntoView(adAppRatingImg);
            }

            adNative.setTrackingView(adLayout); //required to support ad tracking
        }

        //This method will be called when there is failure with fetch, render or click.
        @Override
        public void onError(FlurryAdNative adNative, FlurryAdErrorType adErrorType, int errorCode) {
            if (adErrorType.equals(FlurryAdErrorType.FETCH)) {
                //Log.i(kLogTag, "onFetchFailed " + errorCode);
                // you can deploy internal logic to determine whether to  fetch another ad here or not.
                // do not fetch more than x times in a row
            }
        }

        @Override
        public void onCloseFullscreen(FlurryAdNative adNative) {
            //Log.i(kLogTag, "onCloseFullscreen " );
        }

        @Override
        public void onShowFullscreen(FlurryAdNative adNative) {
            //Log.i(kLogTag, "onShowFullscreen " );
        }

        @Override
        public void onExpanded(FlurryAdNative adNative) {
            //Log.i(kLogTag, "onExpanded " );
        }

        @Override
        public void onAppExit(FlurryAdNative adNative) {
            ///Log.i(kLogTag, "onAppExit " );
        }

        @Override
        public void onCollapsed(FlurryAdNative adNative) {
            //Log.i(kLogTag, "onCollapsed " );
        }

        @Override
        public void onImpressionLogged(FlurryAdNative adNative) {
            //Log.i(kLogTag, "onImpressionLogged " );
            adNative.removeTrackingView();
            adNative.destroy(); // Not working to remove current view. Then how?
            adNative.fetchAd();
        }

        @Override
        public void onClicked(FlurryAdNative adNative) {
            //Log.i(kLogTag, "onClicked " );
        }

    };
    mFlurryAdNative.setListener(nativeListener);
    mFlurryAdNative.fetchAd();

onImpressionLogged (FlurryAdNative adNative) срабатывает после регистрации объявления и onFetched (FlurryAdNative adNative ) также отлично работает, когда показываемое объявление было получено и находится в памяти.Поэтому я пытаюсь стереть текущее нативное объявление в функции onImpressionLogged.Попробуйте:

adNative.removeTrackingView(); // Just unlinks the ad with the Flurry tracking
adNative.destroy(); // Not working to remove current view. Then how?
adNative.fetchAd(); // Would go to fetch the next ad, but the current ad is still displayed

Дополнительно обратите внимание, что loadAssetIntoView является частной функцией объекта FlurryAdNative для присоединения ViewGroup, ImageView или TextView.Но FlurryAdNative не имеет никаких инструкций, чтобы отменить такое вложение.Так как же стереть или отделить представления, которые являются получателями родной рекламы?Есть идеи?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...