Android 如何在没有MediaView的情况下实现本机广告

Android 如何在没有MediaView的情况下实现本机广告,android,admob,ads,native-ads,Android,Admob,Ads,Native Ads,我想在没有MediaView的情况下在RecyclerView中实现本机广告,因此在接下来的讨论中,我成功地在RecyclerView中实现了本机广告,但我需要的是只加载图标、标题、广告商和行动按钮,而不是MediaView等 因此,我从实现中删除了MediView和其他元素代码,之后代码如下所示 UnifiedNativeReadViewHolder.java package com.mishracodes.myapplication; import android.view.View; i

我想在没有MediaView的情况下在RecyclerView中实现本机广告,因此在接下来的讨论中,我成功地在RecyclerView中实现了本机广告,但我需要的是只加载图标、标题、广告商和行动按钮,而不是MediaView等

因此,我从实现中删除了MediView和其他元素代码,之后代码如下所示

UnifiedNativeReadViewHolder.java

package com.mishracodes.myapplication;

import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.ads.formats.UnifiedNativeAdView;
public class UnifiedNativeAdViewHolder extends RecyclerView.ViewHolder {
    private UnifiedNativeAdView adView;
    public UnifiedNativeAdView getAdView() {
        return adView;
    }
    UnifiedNativeAdViewHolder(View view) {
        super(view);
        adView = view.findViewById(R.id.ad_view);
        adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
        adView.setCallToActionView(adView.findViewById(R.id.ad_call_to_action));
        adView.setIconView(adView.findViewById(R.id.ad_icon));
        adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
    }
}
在RecycleServiceAdapter.java中,是管理NativeAdView的代码部分

private void populateNativeAdView(UnifiedNativeAd nativeAd,
                                      UnifiedNativeAdView adView) {
        ((TextView) adView.getHeadlineView()).setText(nativeAd.getHeadline());
        ((Button) adView.getCallToActionView()).setText(nativeAd.getCallToAction());
        NativeAd.Image icon = nativeAd.getIcon();

        if (icon == null) {
            adView.getIconView().setVisibility(View.INVISIBLE);
        } else {
            ((ImageView) adView.getIconView()).setImageDrawable(icon.getDrawable());
            adView.getIconView().setVisibility(View.VISIBLE);
        }
        if (nativeAd.getAdvertiser() == null) {
            adView.getAdvertiserView().setVisibility(View.INVISIBLE);
        } else {
            ((TextView) adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
            adView.getAdvertiserView().setVisibility(View.VISIBLE);
        }
        adView.setNativeAd(nativeAd);
    }
在MainActivity.java中加载本机Ad函数


    private void loadNativeAds() {

        AdLoader.Builder builder = new AdLoader.Builder(this, getString(R.string.ad_unit_id));
        adLoader = builder.forUnifiedNativeAd(
                new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
                    @Override
                    public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
                        mNativeAds.add(unifiedNativeAd);
                        if (!adLoader.isLoading()) {
                            insertAdsInMenuItems();
                        }
                    }
                }).withAdListener(
                new AdListener() {
                    @Override
                    public void onAdFailedToLoad(int errorCode) {
                        Log.d("MainActivity", "The previous native ad failed to load. Attempting to"
                                + " load another.");
                        if (!adLoader.isLoading()) {
                            insertAdsInMenuItems();
                        }
                    }
                }).build();
        adLoader.loadAds(new AdRequest.Builder().build(), NUMBER_OF_ADS);
    }
现在,在完成这项工作之后,我使用本机Ad验证器来验证ads是否正确实现 结果:

但经过一段时间的测试,我发现了这个错误

详细警告

那么有没有办法调用加载本地广告,以便只调用那些没有媒体视图的广告呢。正如我所看到的,许多应用程序使用像这样的本地广告,而没有媒体视图。

我们可以,但之前是有可能的,因为谷歌强制添加
MediaView
。这也是一个好主意,因为你的收入会增加,但可能会影响用户体验。最后,您不能这样做,因为如果您将其上传到play store,Google将向您发送警告通知,说明您没有添加
MediaView
。这可能会影响您的收入。

您能告诉我您是如何使用AdMob本机ads验证程序的吗?因为我搜索了很多次,但找不到它,所以请告诉我您是如何使用的,因为我也想验证我的本机ads验证程序ad@TECHSMASH在AndroidManifest.xmlThank中添加此内部应用程序标记,但是它不起作用,你能解释一下吗?@mishracodes,你能解释一下我应该怎么做来验证本地广告吗。。。仅在启用本机\u AD\u调试器\u的情况下添加元数据是不够的。。。这方面的文档太差了。非常感谢。