Android Native, Close Ad - adxcorp/ADXLibrary_Integration GitHub Wiki

Native Ad Integration

Native Ad์˜ ๊ฒฝ์šฐ, ๊ด‘๊ณ ์— ์‚ฌ์šฉ ๋  layout์„ ์ง์ ‘ ๊ตฌ์„ฑํ•˜์‹œ๊ณ  ๋‹ค์Œ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์‚ฌ์šฉ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

1) layout ๊ตฌ์„ฑ

Native ๊ด‘๊ณ ์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ๋Š” Icon Image, Title Text, CTA Button, Sponsored(AD) Tag, Privacy Icon ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์š”์†Œ๋“ค์€ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•˜์—ฌ ๊ตฌ์„ฑํ•˜์—ฌ ์ฃผ์‹œ๊ณ , ๊ด‘๊ณ  ์ปจํ…์ธ ๋ฅผ ๋ฎ๋Š” ๋ ˆ์ด์–ด๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ…์ŠคํŠธ ๋ณ€๊ฒฝ, ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ, ํ„ฐ์น˜์‹œ ์•ก์…˜ ๋ณ€๊ฒฝ ๋“ฑ ๊ด‘๊ณ  ์ปจํ…์ธ ์— ๊ด€๋ จ๋œ ๋ถ€๋ถ„์„ ๊ฐ€๊ณตํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ƒ˜ํ”Œ ์†Œ์Šค์˜ layout_media_native_ad.xml, layout_native_ad.xml์„ ์ฐธ์กฐํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/adxcorp/ADXLibrary_Sample_Android

2) ํ•˜๋‚˜์˜ View๋กœ ์‚ฌ์šฉํ•˜์‹ค ๊ฒฝ์šฐ

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

          NativeAdFactory.init(this);

          // for Native Ad
          NativeAdFactory.setViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ViewBinder.Builder(R.layout.layout_native_ad)
                  .mainImageId(R.id.mainImageId)
                  .iconImageId(R.id.iconImageId)
                  .titleId(R.id.titleId)
                  .callToActionId(R.id.callToActionId)
                  .privacyInformationIconImageId(R.id.privacyInformationIconImageId)
                  .build());
          NativeAdFactory.setAdxViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ADXViewBinder.Builder(R.layout.layout_media_native_ad)
                .mediaViewContainerId(R.id.mediaContainerId)
                .adIconViewContainerId(R.id.adIconContainerId)
                .titleId(R.id.titleId)
                .adChoiceContainerId(R.id.adChoicesContainerId)
                .callToActionId(R.id.callToActionId)
                .build());

          NativeAdFactory.preloadAd(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}

Activity (or Fragment)

private View mAdView;
private NativeAd mNativeAd;
    
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_native_ad_factory);
    
    NativeAdFactory.addListener(mListener);
    NativeAdFactory.loadAd(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}
    
@Override
protected void onDestroy() {
    NativeAdFactory.removeListener(mListener);
    
    if(mNativeAd != null) {
        mNativeAd.destroy();
        mNativeAd = null;
    }
    
    super.onDestroy();
}
    
private NativeAdFactory.NativeAdListener mListener = new NativeAdFactory.NativeAdListener() {
    @Override
    public void onSuccess(String s, NativeAd nativeAd) {
        if(DefineAdUnitId.NATIVE_AD_UNIT_ID.equals(s)) {
            mNativeAd = nativeAd;
            mAdView = NativeAdFactory.getNativeAdView(NativeAdFactoryActivity.this, DefineAdUnitId.NATIVE_AD_UNIT_ID, mContentView, null);
            mContentView.addView(mAdView);
        }
    }
    
    @Override
    public void onFailure(String s) {
    }
}

3) RecyclerView๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

          NativeAdFactory.init(this);

          // for Native Ad
          NativeAdFactory.setViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ViewBinder.Builder(R.layout.layout_native_ad)
                  .mainImageId(R.id.mainImageId)
                  .iconImageId(R.id.iconImageId)
                  .titleId(R.id.titleId)
                  .callToActionId(R.id.callToActionId)
                  .privacyInformationIconImageId(R.id.privacyInformationIconImageId)
                  .build());
          NativeAdFactory.setAdxViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ADXViewBinder.Builder(R.layout.layout_media_native_ad)
                .mediaViewContainerId(R.id.mediaContainerId)
                .adIconViewContainerId(R.id.adIconContainerId)
                .titleId(R.id.titleId)
                .adChoiceContainerId(R.id.adChoicesContainerId)
                .callToActionId(R.id.callToActionId)
                .build());
          NativeAdFactory.preloadAd(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}

Activity (or Fragment)

private MoPubRecyclerAdapter mRecyclerAdapter;
private RecyclerView mRecyclerView;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_native_ad_recyclerview);

    mRecyclerView = (RecyclerView) findViewById(R.id.native_recycler_view);

    final RecyclerView.Adapter originalAdapter = new DemoRecyclerAdapter();

    mRecyclerAdapter = NativeAdFactory.getMoPubRecyclerAdapter(this, originalAdapter, DefineAdUnitId.NATIVE_AD_UNIT_ID);

    mRecyclerView.setAdapter(mRecyclerAdapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mRecyclerAdapter.loadAds(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mRecyclerAdapter.destroy();
}

Close Ad Integration

Close Ad ์šฉ์œผ๋กœ ๋ฐœ๊ธ‰๋“œ๋ฆฐ Unit ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

import com.adxcorp.nativead.CloseAdFactory;

public class AppWallActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_app_wall);
        ButterKnife.bind(this);


        CloseAdFactory.init(this, UNIT_ID, "Exit Message");
        CloseAdFactory.preloadAd();
    }

    @Override
    public void onBackPressed() {
        CloseAdFactory.showCloseAd(this, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Log.d("chiung.choi", "onClick positive button");

                finish();
            }
        }, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Log.d("chiung.choi", "onCancel");
            }
        });
    }

    @Override
    protected void onDestroy() {
        CloseAdFactory.destroy();

        super.onDestroy();
    }