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();
}