Admob родной рекламы не появляется - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь добавить нативную рекламу в свое приложение, и, к сожалению, она не работает .. Я много раз искал - включая все сообщения stackoverflow - и не смог найти никакого решения

Это мой код

1- внутри onCreate ()

MobileAds.initialize(this);

        AdLoader adLoader = new AdLoader.Builder(this, getResources().getString(R.string.native_ad_id))
                .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
                    @Override
                    public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
                        //the native ad will be available inside this method  (unifiedNativeAd)

                        UnifiedNativeAdView unifiedNativeAdView = (UnifiedNativeAdView) getLayoutInflater().inflate(R.layout.native_ad_layout, null);
                        mapUnifiedNativeAdToLayout(unifiedNativeAd, unifiedNativeAdView);

                        FrameLayout nativeAdLayout = findViewById(R.id.id_native_ad);
                        nativeAdLayout.removeAllViews();
                        nativeAdLayout.addView(unifiedNativeAdView);
                    }
                })
                .build();
        adLoader.loadAd(new AdRequest.Builder().build());

2- снаружи onCreate ()

public void mapUnifiedNativeAdToLayout(UnifiedNativeAd adFromGoogle, UnifiedNativeAdView myAdView) {

        MediaView mediaView = myAdView.findViewById(R.id.ad_media);
        myAdView.setMediaView(mediaView);

        myAdView.setHeadlineView(myAdView.findViewById(R.id.ad_headline));
        myAdView.setBodyView(myAdView.findViewById(R.id.ad_body));
        myAdView.setCallToActionView(myAdView.findViewById(R.id.ad_call_to_action));
        myAdView.setIconView(myAdView.findViewById(R.id.ad_icon));
        myAdView.setPriceView(myAdView.findViewById(R.id.ad_price));
        myAdView.setStarRatingView(myAdView.findViewById(R.id.ad_rating));
        myAdView.setStoreView(myAdView.findViewById(R.id.ad_store));
        myAdView.setAdvertiserView(myAdView.findViewById(R.id.ad_advertiser));

        ((TextView) myAdView.getHeadlineView()).setText(adFromGoogle.getHeadline());

        if (adFromGoogle.getBody() == null) {
            myAdView.getBodyView().setVisibility(View.GONE);
        } else {
            ((TextView) myAdView.getBodyView()).setText(adFromGoogle.getBody());
        }

        if (adFromGoogle.getCallToAction() == null) {
            myAdView.getCallToActionView().setVisibility(View.GONE);
        } else {
            ((Button) myAdView.getCallToActionView()).setText(adFromGoogle.getCallToAction());
        }

        if (adFromGoogle.getIcon() == null) {
            myAdView.getIconView().setVisibility(View.GONE);
        } else {
            ((ImageView) myAdView.getIconView()).setImageDrawable(adFromGoogle.getIcon().getDrawable());
        }

        if (adFromGoogle.getPrice() == null) {
            myAdView.getPriceView().setVisibility(View.GONE);
        } else {
            ((TextView) myAdView.getPriceView()).setText(adFromGoogle.getPrice());
        }

        if (adFromGoogle.getStarRating() == null) {
            myAdView.getStarRatingView().setVisibility(View.GONE);
        } else {
            ((RatingBar) myAdView.getStarRatingView()).setRating(adFromGoogle.getStarRating().floatValue());
        }

        if (adFromGoogle.getStore() == null) {
            myAdView.getStoreView().setVisibility(View.GONE);
        } else {
            ((TextView) myAdView.getStoreView()).setText(adFromGoogle.getStore());
        }

        if (adFromGoogle.getAdvertiser() == null) {
            myAdView.getAdvertiserView().setVisibility(View.GONE);
        } else {
            ((TextView) myAdView.getAdvertiserView()).setText(adFromGoogle.getAdvertiser());
        }

        myAdView.setNativeAd(adFromGoogle);
    }

3- Собственная компоновка

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.gms.ads.formats.UnifiedNativeAdView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:orientation="vertical">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingVertical="10dp"
            >


            <com.google.android.gms.ads.formats.MediaView
                android:id="@+id/ad_media"
                android:layout_width="100dp"
                android:layout_height="90dp"
                android:visibility="gone"
                android:background="#fff"/>


            <ImageView
                android:id="@+id/ad_icon"
                android:padding="2dp"
                android:layout_marginStart="10dp"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:background="@drawable/native_border" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:gravity="top|start"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:layout_marginHorizontal="10dp"
                    android:weightSum="2"
                    >
                <TextView
                    android:id="@+id/ad_headline"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#323232"
                    android:lines="1"
                    android:textStyle="normal"
                    android:paddingHorizontal="10dp"
                    android:text="headline"
                    android:textColor="#ffffff"
                    android:layout_weight="1"
                    android:textSize="18sp" />

                <RatingBar
                    android:id="@+id/ad_rating"
                    style="?android:attr/ratingBarStyleSmall"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="10dp"
                    android:isIndicator="true"
                    android:layout_weight="1"
                    android:numStars="5"
                    android:padding="2dp"
                    android:stepSize="0.5" />
                </LinearLayout>

                <TextView
                    android:id="@+id/ad_advertiser"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="10dp"
                    android:padding="2dp"
                    android:lines="1"
                    android:textStyle="normal"
                    android:text="advertiser"
                    android:textColor="#323232"
                    android:textSize="22sp" />



                <Button
                    android:id="@+id/ad_call_to_action"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#323232"
                    android:text="Action"
                    android:paddingHorizontal="10dp"
                    android:textAllCaps="false"
                    android:layout_marginStart="10dp"
                    android:textColor="#fff"
                    android:textStyle="normal"
                    android:textSize="18sp" />

            </LinearLayout>
        </LinearLayout>


                <TextView
                    android:id="@+id/ad_body"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:padding="10dp"
                    android:text="body of ad"
                    android:textSize="18sp"
                    android:visibility="gone"
                    android:textColor="#323232" />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:visibility="gone"
            android:padding="10dp">

            <TextView
                android:id="@+id/ad_price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:text="price"
                android:textColor="#323232"
                android:textSize="16sp" />

            <TextView
                android:id="@+id/ad_store"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:text="store"
                android:textColor="#323232"
                android:textSize="16sp" />


        </LinearLayout>
    </LinearLayout>

</com.google.android.gms.ads.formats.UnifiedNativeAdView>

4- У макет активности, который будет содержать объявление

<FrameLayout
        android:id="@+id/id_native_ad"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="10dp"
        android:layout_marginTop="10dp"
        android:gravity="end"
        />

, где проблема в кодах выше!?

...