Я пытаюсь добавить нативную рекламу в свое приложение, и, к сожалению, она не работает .. Я много раз искал - включая все сообщения 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"
/>
, где проблема в кодах выше!?