MD5 校验值:c9acc583577d8b1a394e7959c947bec3
AppLovinNativeAdImpl.java 文件包含反编译后的源代码,请注意,该内容仅供学习和参考使用,不得用于非法用途。
package com.applovin.impl.sdk.nativeAd; import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import com.applovin.impl.sdk.AppLovinAdBase; import com.applovin.impl.sdk.array.ArrayService; import com.applovin.impl.sdk.n; import com.applovin.impl.sdk.network.i; import com.applovin.impl.sdk.utils.JsonUtils; import com.applovin.impl.sdk.utils.StringUtils; import com.applovin.impl.sdk.utils.Utils; import com.applovin.impl.sdk.utils.h; import com.applovin.impl.sdk.utils.k; import com.applovin.impl.sdk.v; import com.applovin.sdk.AppLovinSdkUtils; import com.google.android.gms.common.internal.ImagesContract; import com.iab.omid.library.applovin.adsession.VerificationScriptResource; import com.safedk.android.internal.partials.AppLovinNetworkBridge; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import org.json.JSONArray; import org.json.JSONObject; public class AppLovinNativeAdImpl extends AppLovinAdBase implements AppLovinNativeAd { private static final String AD_RESPONSE_TYPE_APPLOVIN = "applovin"; private static final String AD_RESPONSE_TYPE_ORTB = "ortb"; private static final String AD_RESPONSE_TYPE_UNDEFINED = "undefined"; private static final String DEFAULT_APPLOVIN_PRIVACY_URL = "https://www.applovin.com/privacy/"; private final com.applovin.impl.sdk.a.e adEventTracker; private final String advertiser; private final String body; private final String callToAction; private final Uri clickDestinationBackupUri; private final Uri clickDestinationUri; private final a clickHandler; private final List<String> clickTrackingUrls; private AppLovinNativeAdEventListener eventListener; private Uri iconUri; private final List<i> impressionRequests; private final AtomicBoolean impressionTracked; private final List<String> jsTrackers; private Uri mainImageUri; private AppLovinMediaView mediaView; private ViewGroup nativeAdView; private final b onAttachStateChangeHandler; private AppLovinOptionsView optionsView; private Uri privacyDestinationUri; private Uri privacyIconUri; private final List<View> registeredViews; private final String tag; private final String title; private final com.applovin.impl.b.a vastAd; private final List<i> viewableMRC100Requests; private final List<i> viewableMRC50Requests; private final List<i> viewableVideo50Requests; public static class Builder { private final JSONObject adObject; private String advertiser; private String body; private String callToAction; private Uri clickDestinationBackupUri; private Uri clickDestinationUri; private List<String> clickTrackingUrls; private final JSONObject fullResponse; private Uri iconUri; private List<i> impressionRequests; private List<String> jsTrackers; private Uri mainImageUri; private Uri privacyDestinationUri; private Uri privacyIconUri; private final n sdk; private String title; private com.applovin.impl.b.a vastAd; private List<i> viewableMRC100Requests; private List<i> viewableMRC50Requests; private List<i> viewableVideo50Requests; public Builder(JSONObject jSONObject, JSONObject jSONObject2, n nVar) { this.adObject = jSONObject; this.fullResponse = jSONObject2; this.sdk = nVar; } public AppLovinNativeAdImpl build() { return new AppLovinNativeAdImpl(this); } public Builder setAdvertiser(String str) { this.advertiser = str; return this; } public Builder setBody(String str) { this.body = str; return this; } public Builder setCallToAction(String str) { this.callToAction = str; return this; } public Builder setClickDestinationBackupUri(Uri uri) { this.clickDestinationBackupUri = uri; return this; } public Builder setClickDestinationUri(Uri uri) { this.clickDestinationUri = uri; return this; } public Builder setClickTrackingUrls(List<String> list) { this.clickTrackingUrls = list; return this; } public Builder setIconUri(Uri uri) { this.iconUri = uri; return this; } public Builder setImpressionRequests(List<i> list) { this.impressionRequests = list; return this; } public Builder setJsTrackers(List<String> list) { this.jsTrackers = list; return this; } public Builder setMainImageUri(Uri uri) { this.mainImageUri = uri; return this; } public Builder setPrivacyDestinationUri(Uri uri) { this.privacyDestinationUri = uri; return this; } public Builder setPrivacyIconUri(Uri uri) { this.privacyIconUri = uri; return this; } public Builder setTitle(String str) { this.title = str; return this; } public Builder setVastAd(com.applovin.impl.b.a aVar) { this.vastAd = aVar; return this; } public Builder setViewableMRC100Requests(List<i> list) { this.viewableMRC100Requests = list; return this; } public Builder setViewableMRC50Requests(List<i> list) { this.viewableMRC50Requests = list; return this; } public Builder setViewableVideo50Requests(List<i> list) { this.viewableVideo50Requests = list; return this; } } public static class a implements View.OnClickListener { private final AppLovinNativeAdImpl a; public a(AppLovinNativeAdImpl appLovinNativeAdImpl) { this.a = appLovinNativeAdImpl; } public void a(AppLovinNativeAdImpl appLovinNativeAdImpl, Context context) { v D; String str; StringBuilder sb; Uri uri; if (Utils.openUri(context, appLovinNativeAdImpl.clickDestinationUri, appLovinNativeAdImpl.sdk)) { appLovinNativeAdImpl.sdk.D(); if (!v.a()) { return; } D = appLovinNativeAdImpl.sdk.D(); str = appLovinNativeAdImpl.tag; sb = new StringBuilder(); sb.append("Opening URL: "); uri = appLovinNativeAdImpl.clickDestinationUri; } else { if (!Utils.openUri(context, appLovinNativeAdImpl.clickDestinationBackupUri, appLovinNativeAdImpl.sdk)) { return; } appLovinNativeAdImpl.sdk.D(); if (!v.a()) { return; } D = appLovinNativeAdImpl.sdk.D(); str = appLovinNativeAdImpl.tag; sb = new StringBuilder(); sb.append("Opening backup URL: "); uri = appLovinNativeAdImpl.clickDestinationBackupUri; } sb.append(uri); D.b(str, sb.toString()); } public AppLovinNativeAdImpl a() { return this.a; } protected boolean a(Object obj) { return obj instanceof a; } public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof a)) { return false; } a aVar = (a) obj; if (!aVar.a((Object) this)) { return false; } AppLovinNativeAdImpl a = a(); AppLovinNativeAdImpl a2 = aVar.a(); return a != null ? a.equals(a2) : a2 == null; } public int hashCode() { AppLovinNativeAdImpl a = a(); return 59 + (a == null ? 43 : a.hashCode()); } @Override public void onClick(final View view) { this.a.sdk.D(); if (v.a()) { this.a.sdk.D().b(this.a.tag, "Handle view clicked"); } this.a.sdk.v().maybeSubmitPersistentPostbacks(this.a.getDirectClickTrackingPostbacks()); Iterator it = this.a.clickTrackingUrls.iterator(); while (it.hasNext()) { this.a.sdk.aa().dispatchPostbackAsync((String) it.next(), null); } k.a(this.a.eventListener, this.a); if (this.a.isDirectDownloadEnabled()) { this.a.sdk.aq().startDirectInstallOrDownloadProcess(this.a, new ArrayService.DirectDownloadListener() { @Override public void onAppDetailsDismissed() { } @Override public void onAppDetailsDisplayed() { } @Override public void onFailure() { a aVar = a.this; aVar.a(aVar.a, view.getContext()); } }); } else { a(this.a, view.getContext()); } } public String toString() { return "AppLovinNativeAdImpl.ClickHandler(ad=" + a() + ")"; } } public static class b implements View.OnAttachStateChangeListener { private final AppLovinNativeAdImpl a; public b(AppLovinNativeAdImpl appLovinNativeAdImpl) { this.a = appLovinNativeAdImpl; } public AppLovinNativeAdImpl a() { return this.a; } protected boolean a(Object obj) { return obj instanceof b; } public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof b)) { return false; } b bVar = (b) obj; if (!bVar.a(this)) { return false; } AppLovinNativeAdImpl a = a(); AppLovinNativeAdImpl a2 = bVar.a(); return a != null ? a.equals(a2) : a2 == null; } public int hashCode() { AppLovinNativeAdImpl a = a(); return 59 + (a == null ? 43 : a.hashCode()); } @Override public void onViewAttachedToWindow(View view) { this.a.maybeHandleOnAttachedToWindow(view); } @Override public void onViewDetachedFromWindow(View view) { } public String toString() { return "AppLovinNativeAdImpl.OnAttachStateChangeHandler(ad=" + a() + ")"; } } private AppLovinNativeAdImpl(Builder builder) { super(builder.adObject, builder.fullResponse, builder.sdk); Uri parse; this.impressionTracked = new AtomicBoolean(); this.registeredViews = new ArrayList(); this.clickHandler = new a(this); this.onAttachStateChangeHandler = new b(this); this.adEventTracker = new com.applovin.impl.sdk.a.e(this); this.title = builder.title; this.advertiser = builder.advertiser; this.body = builder.body; this.callToAction = builder.callToAction; this.iconUri = builder.iconUri; this.mainImageUri = builder.mainImageUri; this.privacyIconUri = builder.privacyIconUri; this.vastAd = builder.vastAd; this.clickDestinationUri = builder.clickDestinationUri; this.clickDestinationBackupUri = builder.clickDestinationBackupUri; this.clickTrackingUrls = builder.clickTrackingUrls; this.jsTrackers = builder.jsTrackers; this.impressionRequests = builder.impressionRequests; if (builder.privacyDestinationUri == null) { parse = (!isDspAd() || getSdk().N().a()) ? Uri.parse(DEFAULT_APPLOVIN_PRIVACY_URL) : parse; this.viewableMRC50Requests = builder.viewableMRC50Requests; this.viewableMRC100Requests = builder.viewableMRC100Requests; this.viewableVideo50Requests = builder.viewableVideo50Requests; this.tag = "AppLovinNativeAd:" + getAdIdNumber(); } parse = builder.privacyDestinationUri; this.privacyDestinationUri = parse; this.viewableMRC50Requests = builder.viewableMRC50Requests; this.viewableMRC100Requests = builder.viewableMRC100Requests; this.viewableVideo50Requests = builder.viewableVideo50Requests; this.tag = "AppLovinNativeAd:" + getAdIdNumber(); } public List<com.applovin.impl.sdk.d.a> getDirectClickTrackingPostbacks() { List<com.applovin.impl.sdk.d.a> postbacks; synchronized (this.adObjectLock) { postbacks = Utils.getPostbacks("click_tracking_urls", this.adObject, getClCode(), getStringFromAdObject("click_tracking_url", null), this.sdk); } return postbacks; } private boolean isDspAd() { return AD_RESPONSE_TYPE_ORTB.equalsIgnoreCase(getType()); } public void maybeHandleOnAttachedToWindow(View view) { if (this.impressionTracked.compareAndSet(false, true)) { List<String> list = this.jsTrackers; if (list != null && list.size() > 0) { if (((Boolean) this.sdk.a(com.applovin.impl.sdk.c.b.fz)).booleanValue()) { Iterator<String> it = this.jsTrackers.iterator(); while (it.hasNext()) { this.sdk.ai().a(it.next()); } } else { String str = this.jsTrackers.get(0); if (StringUtils.isValidString(str)) { final com.applovin.impl.adview.d dVar = new com.applovin.impl.adview.d(null, this.sdk, view.getContext()); AppLovinNetworkBridge.webviewLoadData(dVar, str, "text/html", "UTF-8"); AppLovinSdkUtils.runOnUiThreadDelayed(new Runnable() { @Override public void run() { dVar.stopLoading(); } }, TimeUnit.SECONDS.toMillis(5L)); } } } Iterator<i> it2 = this.impressionRequests.iterator(); while (it2.hasNext()) { this.sdk.aa().dispatchPostbackRequest(it2.next(), null); } this.adEventTracker.a(view); this.adEventTracker.d(); } } @Override public void destroy() { unregisterViewsForInteraction(); this.eventListener = null; this.adEventTracker.e(); } public com.applovin.impl.sdk.a.e getAdEventTracker() { return this.adEventTracker; } @Override public long getAdIdNumber() { return getLongFromAdObject("ad_id", -1L); } @Override public String getAdvertiser() { return this.advertiser; } @Override public String getBody() { return this.body; } public String getCachePrefix() { return getStringFromAdObject("cache_prefix", null); } @Override public String getCallToAction() { return this.callToAction; } public a getClickHandler() { return this.clickHandler; } @Override public Bundle getDirectDownloadParameters() { JSONObject jsonObjectFromAdObject = getJsonObjectFromAdObject("ah_parameters", null); if (jsonObjectFromAdObject != null) { return JsonUtils.toBundle(jsonObjectFromAdObject); } return null; } @Override public String getDirectDownloadToken() { return getStringFromAdObject("ah_dd_token", null); } @Override public Uri getIconUri() { return this.iconUri; } public Uri getMainImageUri() { return this.mainImageUri; } @Override public AppLovinMediaView getMediaView() { return this.mediaView; } @Override public String getOpenMeasurementContentUrl() { return getStringFromAdObject("omid_content_url", null); } @Override public String getOpenMeasurementCustomReferenceData() { return getStringFromAdObject("omid_custom_ref_data", ""); } @Override public List<VerificationScriptResource> getOpenMeasurementVerificationScriptResources() { ArrayList arrayList = new ArrayList(); synchronized (this.adObjectLock) { JSONArray jSONArray = JsonUtils.getJSONArray(this.adObject, "omid_verification_script_resources", null); if (jSONArray != null) { for (int i = 0; i < jSONArray.length(); i++) { JSONObject jSONObject = JsonUtils.getJSONObject(jSONArray, i, (JSONObject) null); try { URL url = new URL(JsonUtils.getString(jSONObject, ImagesContract.URL, null)); String string = JsonUtils.getString(jSONObject, "vendor_key", null); String string2 = JsonUtils.getString(jSONObject, "parameters", null); arrayList.add((StringUtils.isValidString(string) && StringUtils.isValidString(string2)) ? VerificationScriptResource.createVerificationScriptResourceWithParameters(string, url, string2) : VerificationScriptResource.createVerificationScriptResourceWithoutParameters(url)); } catch (Throwable th) { this.sdk.D(); if (v.a()) { this.sdk.D().b(this.tag, "Failed to parse OMID verification script resource", th); } } } } } return arrayList; } @Override public AppLovinOptionsView getOptionsView() { return this.optionsView; } public Uri getPrivacyDestinationUri() { return this.privacyDestinationUri; } public Uri getPrivacyIconUri() { return this.privacyIconUri; } @Override public String getTitle() { return this.title; } public String getType() { return getStringFromAdObject("type", AD_RESPONSE_TYPE_UNDEFINED); } public com.applovin.impl.b.a getVastAd() { return this.vastAd; } @Override public boolean isDirectDownloadEnabled() { return StringUtils.isValidString(getDirectDownloadToken()); } @Override public boolean isOpenMeasurementEnabled() { return getBooleanFromAdObject("omsdk_enabled", false); } @Override public void registerViewsForInteraction(List<View> list, ViewGroup viewGroup) { v D; String str; StringBuilder sb; String str2; this.nativeAdView = viewGroup; if (!(h.c() && this.nativeAdView.isAttachedToWindow()) && (h.c() || this.nativeAdView.getParent() == null)) { this.nativeAdView.addOnAttachStateChangeListener(this.onAttachStateChangeHandler); } else { maybeHandleOnAttachedToWindow(this.nativeAdView); } this.sdk.D(); if (v.a()) { this.sdk.D().b(this.tag, "Registered ad view for impressions: " + this.nativeAdView); } if (this.clickDestinationUri == null && this.clickDestinationBackupUri == null) { this.sdk.D(); if (v.a()) { this.sdk.D().b(this.tag, "Skipping click registration - no click URLs provided"); return; } return; } for (View view : list) { if (view.hasOnClickListeners()) { this.sdk.D(); if (v.a()) { this.sdk.D().e(this.tag, "View has an onClickListener already - " + view); } } if (!view.isClickable()) { this.sdk.D(); if (v.a()) { this.sdk.D().e(this.tag, "View is not clickable - " + view); } } if (!view.isEnabled()) { this.sdk.D(); if (v.a()) { this.sdk.D().e(this.tag, "View is not enabled - " + view); } } if (view instanceof Button) { this.sdk.D(); if (v.a()) { D = this.sdk.D(); str = this.tag; sb = new StringBuilder(); str2 = "Registering click for button: "; sb.append(str2); sb.append(view); D.b(str, sb.toString()); view.setOnClickListener(this.clickHandler); this.registeredViews.add(view); } else { view.setOnClickListener(this.clickHandler); this.registeredViews.add(view); } } else { this.sdk.D(); if (v.a()) { D = this.sdk.D(); str = this.tag; sb = new StringBuilder(); str2 = "Registering click for view: "; sb.append(str2); sb.append(view); D.b(str, sb.toString()); view.setOnClickListener(this.clickHandler); this.registeredViews.add(view); } else { view.setOnClickListener(this.clickHandler); this.registeredViews.add(view); } } } this.sdk.D(); if (v.a()) { this.sdk.D().b(this.tag, "Registered views: " + this.registeredViews); } } public void setEventListener(AppLovinNativeAdEventListener appLovinNativeAdEventListener) { this.eventListener = appLovinNativeAdEventListener; } public void setIconUri(Uri uri) { this.iconUri = uri; } public void setMainImageUri(Uri uri) { this.mainImageUri = uri; } public void setPrivacyIconUri(Uri uri) { this.privacyIconUri = uri; } public void setUpNativeAdViewComponents() { this.mediaView = new AppLovinMediaView(this, this.sdk, this.sdk.P()); if (this.privacyDestinationUri != null) { this.optionsView = new AppLovinOptionsView(this, this.sdk, this.sdk.P()); } } public boolean shouldInjectOpenMeasurementScriptDuringCaching() { return false; } public String toString() { return "AppLovinNativeAd{adIdNumber=" + getAdIdNumber() + " - " + getTitle() + "}"; } @Override public void unregisterViewsForInteraction() { Iterator<View> it = this.registeredViews.iterator(); while (it.hasNext()) { it.next().setOnClickListener(null); } this.sdk.D(); if (v.a()) { this.sdk.D().b(this.tag, "Unregistered views: " + this.registeredViews); } this.registeredViews.clear(); ViewGroup viewGroup = this.nativeAdView; if (viewGroup != null) { viewGroup.removeOnAttachStateChangeListener(this.onAttachStateChangeHandler); this.nativeAdView = null; } AppLovinMediaView appLovinMediaView = this.mediaView; if (appLovinMediaView != null) { appLovinMediaView.destroy(); } AppLovinOptionsView appLovinOptionsView = this.optionsView; if (appLovinOptionsView != null) { appLovinOptionsView.destroy(); } } }