「Android Mopub Native」修訂間的差異
跳至導覽
跳至搜尋
imported>Wikiuser 小 |
imported>Wikiuser |
||
行 2: | 行 2: | ||
Class實作內容如下:<br> | Class實作內容如下:<br> | ||
package com.taiwanmobile.pt.adp.mediation; | package com.taiwanmobile.pt.adp.mediation; | ||
import android.app.Activity; | import android.app.Activity; | ||
import android.content.Context; | import android.content.Context; | ||
import android.util.Log; | import android.util.Log; | ||
import android.view.View; | import android.view.View; | ||
import com.mopub.nativeads.CustomEventNative; | import com.mopub.nativeads.CustomEventNative; | ||
import com.mopub.nativeads.NativeErrorCode; | import com.mopub.nativeads.NativeErrorCode; | ||
行 20: | 行 20: | ||
import java.util.Map; | import java.util.Map; | ||
<b>// 需將本class的完整類別名稱 com.taiwanmobile.pt.adp.mediation.TAMediaMopubNative 填入後台的Custom Event Class欄位</b> | |||
public class TAMediaMopubNative extends CustomEventNative { | public class TAMediaMopubNative extends CustomEventNative { | ||
private static final String TAG = "TAMediaMopubNative"; | private static final String TAG = "TAMediaMopubNative"; | ||
行 32: | 行 32: | ||
final Map<String, String> serverExtras) { | final Map<String, String> serverExtras) { | ||
Log.d(TAG, "loadNativeAd(" + serverExtras.get("adUnitId") + ") invoked!!"); | Log.d(TAG, "loadNativeAd(" + serverExtras.get("adUnitId") + ") invoked!!"); | ||
String adUnitId = serverExtras.get("adUnitId"); //後台設定的adUnitId會透過此Key值取得 | |||
String adUnitId = serverExtras.get("adUnitId"); | |||
nativeAd = new TWMNativeAd((Activity) context, adUnitId); | nativeAd = new TWMNativeAd((Activity) context, adUnitId); | ||
final TWMediaStaticNativeAd staticNativeAd = new TWMediaStaticNativeAd(nativeAd, customEventNativeListener); | final TWMediaStaticNativeAd staticNativeAd = new TWMediaStaticNativeAd(nativeAd, customEventNativeListener); | ||
nativeAd.setAdListener(staticNativeAd); | nativeAd.setAdListener(staticNativeAd); | ||
//String testId = Utility.getEncodedAndroidId(context); | |||
nativeAd.loadAd(new TWMAdRequest()); | nativeAd.loadAd(new TWMAdRequest()); | ||
} | } | ||
行 51: | 行 52: | ||
private String imageUrl; | private String imageUrl; | ||
private String targetUrl; | private String targetUrl; | ||
private String callToAction; | |||
public TWMediaStaticNativeAd(final TWMNativeAd nativeAD, final CustomEventNativeListener customEventNativeListener) { | public TWMediaStaticNativeAd(final TWMNativeAd nativeAD, final CustomEventNativeListener customEventNativeListener) { | ||
mCustomEventNativeListener = customEventNativeListener; | mCustomEventNativeListener = customEventNativeListener; | ||
nativeAd = nativeAD; | nativeAd = nativeAD; | ||
} | |||
@Override | |||
public void prepare(final View view) { | |||
super.prepare(view); | |||
// Set click event to all view. | |||
view.setOnClickListener(clickListener); | |||
} | |||
@Override | |||
public void clear(View view) { | |||
view.setOnClickListener(null); | |||
super.clear(view); | |||
} | } | ||
行 61: | 行 77: | ||
nativeAd.destroy(); | nativeAd.destroy(); | ||
super.destroy(); | super.destroy(); | ||
} | } | ||
行 87: | 行 90: | ||
imageUrl = (content.has("IMAGE1200X627")) ? content.getString("IMAGE1200X627") : null; | imageUrl = (content.has("IMAGE1200X627")) ? content.getString("IMAGE1200X627") : null; | ||
targetUrl = (content.has("nurl")) ? content.getString("nurl") : null; | targetUrl = (content.has("nurl")) ? content.getString("nurl") : null; | ||
callToAction = (content.has("CTA")) ? content.getString("CTA") : null; | |||
if(longSubject != null) setTitle(longSubject); | if(longSubject != null) setTitle(longSubject); | ||
if(body != null) setText(body); | if(body != null) setText(body); | ||
行 92: | 行 96: | ||
if(iconUrl != null) setIconImageUrl(iconUrl); | if(iconUrl != null) setIconImageUrl(iconUrl); | ||
if(targetUrl != null) setClickDestinationUrl(targetUrl); | if(targetUrl != null) setClickDestinationUrl(targetUrl); | ||
if(callToAction != null) setCallToAction(callToAction); | |||
if(mCustomEventNativeListener != null) | if(mCustomEventNativeListener != null) | ||
行 112: | 行 117: | ||
@Override | @Override | ||
public void onLeaveApplication(TWMAd twmAd) {} | public void onLeaveApplication(TWMAd twmAd) {} | ||
private View.OnClickListener clickListener = new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
notifyAdClicked(); | |||
nativeAd.handleClick(); | |||
} | |||
}; | |||
} | } | ||
} | } | ||
<br><br> | <br><br> | ||
[[Android Integeration with Mopub Mediation|回MoPub教學]]<br> | [[Android Integeration with Mopub Mediation|回MoPub教學]]<br> |
於 2018年6月11日 (一) 03:34 的修訂
請建立一個Class並繼承Mopub所提供的CustomEventNative
Class實作內容如下:
package com.taiwanmobile.pt.adp.mediation; import android.app.Activity; import android.content.Context; import android.util.Log; import android.view.View; import com.mopub.nativeads.CustomEventNative; import com.mopub.nativeads.NativeErrorCode; import com.taiwanmobile.pt.adp.view.TWMAd; import com.taiwanmobile.pt.adp.view.TWMAdRequest; import com.taiwanmobile.pt.adp.view.TWMAdViewListener; import com.taiwanmobile.pt.adp.view.TWMNativeAd; import org.json.JSONException; import org.json.JSONObject; import java.util.Map; // 需將本class的完整類別名稱 com.taiwanmobile.pt.adp.mediation.TAMediaMopubNative 填入後台的Custom Event Class欄位 public class TAMediaMopubNative extends CustomEventNative { private static final String TAG = "TAMediaMopubNative"; private TWMNativeAd nativeAd; @Override protected void loadNativeAd(final Context context, final CustomEventNativeListener customEventNativeListener, final Map<String, Object> localExtras, final Map<String, String> serverExtras) { Log.d(TAG, "loadNativeAd(" + serverExtras.get("adUnitId") + ") invoked!!"); String adUnitId = serverExtras.get("adUnitId"); //後台設定的adUnitId會透過此Key值取得 nativeAd = new TWMNativeAd((Activity) context, adUnitId); final TWMediaStaticNativeAd staticNativeAd = new TWMediaStaticNativeAd(nativeAd, customEventNativeListener); nativeAd.setAdListener(staticNativeAd); //String testId = Utility.getEncodedAndroidId(context); nativeAd.loadAd(new TWMAdRequest()); } static class TWMediaStaticNativeAd extends com.mopub.nativeads.StaticNativeAd implements TWMAdViewListener { private final CustomEventNativeListener mCustomEventNativeListener; private final TWMNativeAd nativeAd; // Native ad assets. private String longSubject; private String body; private String iconUrl; private String imageUrl; private String targetUrl; private String callToAction; public TWMediaStaticNativeAd(final TWMNativeAd nativeAD, final CustomEventNativeListener customEventNativeListener) { mCustomEventNativeListener = customEventNativeListener; nativeAd = nativeAD; } @Override public void prepare(final View view) { super.prepare(view); // Set click event to all view. view.setOnClickListener(clickListener); } @Override public void clear(View view) { view.setOnClickListener(null); super.clear(view); } @Override public void destroy() { nativeAd.destroy(); super.destroy(); } // TWMAdViewListener @Override public void onReceiveAd(TWMAd twmAd) { if (nativeAd.isReady()) { JSONObject content = nativeAd.getNativeAdContent(); try { longSubject = (content.has("LONGSUBJECT")) ? content.getString("LONGSUBJECT") : null; body = (content.has("BODY")) ? content.getString("BODY") : null; iconUrl = (content.has("ICONSQUARE")) ? content.getString("ICONSQUARE") : null; imageUrl = (content.has("IMAGE1200X627")) ? content.getString("IMAGE1200X627") : null; targetUrl = (content.has("nurl")) ? content.getString("nurl") : null; callToAction = (content.has("CTA")) ? content.getString("CTA") : null; if(longSubject != null) setTitle(longSubject); if(body != null) setText(body); if(imageUrl != null) setMainImageUrl(imageUrl); if(iconUrl != null) setIconImageUrl(iconUrl); if(targetUrl != null) setClickDestinationUrl(targetUrl); if(callToAction != null) setCallToAction(callToAction); if(mCustomEventNativeListener != null) mCustomEventNativeListener.onNativeAdLoaded(this); } catch (JSONException e) { Log.e(TAG, "Native Content Parse Error: " + e.getMessage()); if(mCustomEventNativeListener != null) mCustomEventNativeListener.onNativeAdFailed(NativeErrorCode.NETWORK_INVALID_STATE); } } } @Override public void onFailedToReceiveAd(TWMAd twmAd, TWMAdRequest.ErrorCode errorCode) { mCustomEventNativeListener.onNativeAdFailed(NativeErrorCode.NETWORK_NO_FILL); } @Override public void onPresentScreen(TWMAd twmAd) {} @Override public void onDismissScreen(TWMAd twmAd) {} @Override public void onLeaveApplication(TWMAd twmAd) {} private View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { notifyAdClicked(); nativeAd.handleClick(); } }; } }