Android 如何在内容之间整合Mopub原生广告

Android 如何在内容之间整合Mopub原生广告,android,ads,mopub,Android,Ads,Mopub,我已经在listview中集成了Mopub本地广告,所有这些都很好,但我想在我的内容之间显示本地广告,而不是在listview中 我试过这个 MoPubNative.MoPubNativeNetworkListener moPubNativeListener = new MoPubNative.MoPubNativeNetworkListener() { @Override public void onNativeLoad(NativeAd nativeAd) {

我已经在listview中集成了Mopub本地广告,所有这些都很好,但我想在我的内容之间显示本地广告,而不是在listview中

我试过这个

MoPubNative.MoPubNativeNetworkListener moPubNativeListener = new MoPubNative.MoPubNativeNetworkListener() {
        @Override
        public void onNativeLoad(NativeAd nativeAd) {
            // ...
        }

        @Override
        public void onNativeFail(NativeErrorCode errorCode) {
            // ...
        }
    };

    MoPubNative moPubNative = new MoPubNative(SingleActivity.this, "ffb8734de73e4d62b93bae99c06db41f", moPubNativeListener);

    ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_ad_layout)
            .mainImageId(R.id.native_ad_main_image)
            .iconImageId(R.id.native_ad_icon_image)
            .titleId(R.id.native_ad_title)
            .privacyInformationIconImageId(R.id.native_ad_daa_icon_image)
            .textId(R.id.native_ad_text)
            .build();

    MoPubStaticNativeAdRenderer moPubStaticNativeAdRenderer = new MoPubStaticNativeAdRenderer(viewBinder);
    moPubNative.registerAdRenderer(moPubStaticNativeAdRenderer);

    Location exampleLocation = new Location("example_location");
    exampleLocation.setLatitude(23.1);
    exampleLocation.setLongitude(42.1);
    exampleLocation.setAccuracy(100);

    //Specify which native assets you want to use in your ad.
    EnumSet<RequestParameters.NativeAdAsset> assetsSet = EnumSet.of(RequestParameters.NativeAdAsset.TITLE,
            RequestParameters.NativeAdAsset.TEXT,
            RequestParameters.NativeAdAsset.CALL_TO_ACTION_TEXT,
            RequestParameters.NativeAdAsset.ICON_IMAGE);

    RequestParameters requestParameters = new RequestParameters.Builder()
            .keywords("gender:m,age:27")
            .location(exampleLocation)
            .desiredAssets(assetsSet)
            .build();

    moPubNative.makeRequest(requestParameters);
但是如何在我的内容和活动之间呈现这个布局呢

谢谢

Mopub本机手动广告集成示例

首先,定义视图native_advetisement.xml


然后准备组件

公共类AdverNative扩展线性布局{

private static String LOG_TAG = AdverNative.class.getName();
private Context mContext;
Activity activity;

public AdverNative(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.mContext = context;
    this.activity = (Activity) context;
    initView();
}


private void initView() {
    final ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_advetisement)
            .titleId(R.id.native_ad_title)
            .textId(R.id.native_ad_text)
            .mainImageId(R.id.native_ad_main_image)
            .iconImageId(R.id.native_ad_icon_image)
            .privacyInformationIconImageId(R.id.native_ad_daa_icon_image)
            .build();
    MoPubNative.MoPubNativeNetworkListener moPubNativeNetworkListener = new MoPubNative.MoPubNativeNetworkListener() {
        @Override
        public void onNativeLoad(NativeAd nativeAd) {


            AdapterHelper ah = new AdapterHelper(mContext, 0, 3);
            View v = ah.getAdView(null, AdverNative.this, nativeAd, viewBinder);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

            addView(v, params);
        }

        @Override
        public void onNativeFail(NativeErrorCode nativeErrorCode) {

        }
    };

    MoPubNative moPubNative = new MoPubNative(activity, Constants.CODE_NATIVE, moPubNativeNetworkListener);
    moPubNative.registerAdRenderer(new MoPubStaticNativeAdRenderer(viewBinder));
    EnumSet<RequestParameters.NativeAdAsset> assetsSet = EnumSet.of(
            RequestParameters.NativeAdAsset.TITLE,
            RequestParameters.NativeAdAsset.TEXT,
            RequestParameters.NativeAdAsset.CALL_TO_ACTION_TEXT,
            RequestParameters.NativeAdAsset.MAIN_IMAGE,
            RequestParameters.NativeAdAsset.ICON_IMAGE,
            RequestParameters.NativeAdAsset.STAR_RATING);

    Location exampleLocation = new Location("example_location");
    exampleLocation.setLatitude(23.1);
    exampleLocation.setLongitude(42.1);
    exampleLocation.setAccuracy(100);
    final String keywords = "";

    RequestParameters mRequestParameters = new     RequestParameters.Builder()
            .location(exampleLocation)
            .keywords(keywords)
            .desiredAssets(assetsSet)
            .build();

    moPubNative.makeRequest(mRequestParameters);
  }

}
private static String LOG_TAG=AdverNative.class.getName();
私有上下文;
活动;
公共提示(上下文、属性集属性){
超级(上下文,attrs);
this.mContext=上下文;
this.activity=(activity)上下文;
initView();
}
私有void initView(){
final ViewBinder ViewBinder=新建ViewBinder.Builder(R.layout.native\u Adveticement)
.titleId(R.id.native_ad_title)
.textId(R.id.native\u ad\u text)
.mainImageId(R.id.native\u ad\u main\u图像)
.iconImageId(R.id.native\u ad\u icon\u image)
.privacyInformationIconImageId(R.id.native\u ad\u daa\u icon\u image)
.build();
mopubinate.mopubinativenetworklistener mopubinativenetworklistener=新的mopubinate.mopubinativenetworklistener(){
@凌驾
NativeLoad(NativeAd NativeAd)上的公共无效{
AdapterHelper ah=新的AdapterHelper(mContext,0,3);
View v=ah.getAdView(null,advernavive.this,nativeAd,viewBinder);
LinearLayout.LayoutParams params=新的LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.MATCH_父级);
addView(v,params);
}
@凌驾
公共无效onNativeFail(NativeErrorCode NativeErrorCode){
}
};
mopubinate mopubinate=新的mopubinate(活动,常数.CODE_NATIVE,mopubinitenetworklistener);
registeradenderer(新的mosubstationativereadrenderer(viewBinder));
EnumSet assetset=EnumSet.of(
RequestParameters.NativeAdAsset.TITLE,
RequestParameters.NativeAdAsset.TEXT,
RequestParameters.NativeAdAsset.CALL_TO_ACTION_TEXT,
RequestParameters.NativeAdAsset.MAIN_图像,
RequestParameters.NativeAdAsset.ICON_图像,
RequestParameters.NativeAdAsset.STAR_评级);
位置示例位置=新位置(“示例位置”);
例如位置。设置纬度(23.1);
例如location.setLongitude(42.1);
例如定位精度(100);
最终字符串关键字=”;
RequestParameters mrrequestParameters=新建RequestParameters.Builder()
.位置(示例位置)
.关键词(关键词)
.desiredAssets(资产集)
.build();
makeRequest(mRequestParameters);
}
}
像这样使用


至少在最新和最伟大的MoPub SDK中,这是实现这一点的方法

    public void onNativeLoad(NativeAd nativeAd) {

        RelativeLayout adParent = findViewById(R.id.ad_holder);
        View adView = nativeAd.createAdView(getActivity(), adParent);
        nativeAd.prepare(adView);
        nativeAd.renderAdView(adView);
        adParent.addView(adView);
    }
private static String LOG_TAG = AdverNative.class.getName();
private Context mContext;
Activity activity;

public AdverNative(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.mContext = context;
    this.activity = (Activity) context;
    initView();
}


private void initView() {
    final ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_advetisement)
            .titleId(R.id.native_ad_title)
            .textId(R.id.native_ad_text)
            .mainImageId(R.id.native_ad_main_image)
            .iconImageId(R.id.native_ad_icon_image)
            .privacyInformationIconImageId(R.id.native_ad_daa_icon_image)
            .build();
    MoPubNative.MoPubNativeNetworkListener moPubNativeNetworkListener = new MoPubNative.MoPubNativeNetworkListener() {
        @Override
        public void onNativeLoad(NativeAd nativeAd) {


            AdapterHelper ah = new AdapterHelper(mContext, 0, 3);
            View v = ah.getAdView(null, AdverNative.this, nativeAd, viewBinder);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

            addView(v, params);
        }

        @Override
        public void onNativeFail(NativeErrorCode nativeErrorCode) {

        }
    };

    MoPubNative moPubNative = new MoPubNative(activity, Constants.CODE_NATIVE, moPubNativeNetworkListener);
    moPubNative.registerAdRenderer(new MoPubStaticNativeAdRenderer(viewBinder));
    EnumSet<RequestParameters.NativeAdAsset> assetsSet = EnumSet.of(
            RequestParameters.NativeAdAsset.TITLE,
            RequestParameters.NativeAdAsset.TEXT,
            RequestParameters.NativeAdAsset.CALL_TO_ACTION_TEXT,
            RequestParameters.NativeAdAsset.MAIN_IMAGE,
            RequestParameters.NativeAdAsset.ICON_IMAGE,
            RequestParameters.NativeAdAsset.STAR_RATING);

    Location exampleLocation = new Location("example_location");
    exampleLocation.setLatitude(23.1);
    exampleLocation.setLongitude(42.1);
    exampleLocation.setAccuracy(100);
    final String keywords = "";

    RequestParameters mRequestParameters = new     RequestParameters.Builder()
            .location(exampleLocation)
            .keywords(keywords)
            .desiredAssets(assetsSet)
            .build();

    moPubNative.makeRequest(mRequestParameters);
  }

}
<AdverNative
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

</AdverNative>
    public void onNativeLoad(NativeAd nativeAd) {

        RelativeLayout adParent = findViewById(R.id.ad_holder);
        View adView = nativeAd.createAdView(getActivity(), adParent);
        nativeAd.prepare(adView);
        nativeAd.renderAdView(adView);
        adParent.addView(adView);
    }