首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在内容之间集成Mopub原生广告

如何在内容之间集成Mopub原生广告
EN

Stack Overflow用户
提问于 2016-03-10 13:29:30
回答 2查看 1.2K关注 0票数 0

我已经在列表视图中集成了Mopub原生广告,所有工作都很好,但我想在我的内容之间显示原生广告,而不是在列表视图中。

我试过了

代码语言:javascript
复制
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);

但正如您所看到的,我正在加载布局

代码语言:javascript
复制
  ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_ad_layout)

而是如何在细节活动中呈现我的内容之间的布局。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-05-02 21:43:00

Mopub原生手动广告集成示例

首先定义你的视图native_advetisement.xml

代码语言:javascript
复制
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white">

    <ImageView
        android:id="@+id/native_ad_main_image"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        />

    <ImageView
        android:id="@+id/native_ad_icon_image"
        android:layout_width="20dp"
        android:layout_height="20dp"
        />

    <ImageView
        android:id="@+id/native_ad_daa_icon_image"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_below="@+id/native_ad_main_image"/>

    <TextView
        android:id="@+id/native_ad_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/red"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/native_ad_daa_icon_image"
        android:textSize="12dp"
       android:layout_below="@+id/native_ad_main_image"/>

    <TextView
        android:id="@+id/native_ad_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/black"
        android:layout_toRightOf="@+id/native_ad_daa_icon_image"
        android:textSize="11dp"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/native_ad_title"
        android:layout_marginBottom="10dp"/>


</RelativeLayout>

</LinearLayout>

,然后准备您的组件。

公共类AdverNative扩展了LinearLayout {

代码语言:javascript
复制
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);
  }

}

并像这样使用

代码语言:javascript
复制
<AdverNative
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

</AdverNative>
票数 0
EN

Stack Overflow用户

发布于 2017-08-17 22:20:56

这就是做这件事的方法,至少在最新最好的MoPub SDK中是这样的。

代码语言:javascript
复制
    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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35908326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档