Commit 39af5832 authored by bixing's avatar bixing

增加ONEMOB

parent 896d02b4
......@@ -62,14 +62,16 @@ android {
applicationId "picturetranslate.extractor.text.lite"
versionName "1.0.0.0"
signingConfig signingConfigs.toolsTest
manifestPlaceholders = [google_ad_app_id: "ca-app-pub-9356757350640102~6934070860", signature: "04ced0bb5c9f0b2adf2f27dd57538cc8", flavor_name: "GemHeart", authorities: "$applicationId-media-AProvider", media_version: "1"]
manifestPlaceholders = [google_ad_app_id: "ca-app-pub-9356757350640102~6934070860", signature: "04ced0bb5c9f0b2adf2f27dd57538cc8", flavor_name: "GemHeart", authorities: "$applicationId-media-AProvider", media_version: "1"
, GAM_APP_ID: "ca-app-pub-3576913405665805~1539138916"]
}
ceshi {
versionCode 90015
versionName "1.0.15"
signingConfig signingConfigs.testSign
applicationId "com.hr.heart.rate"
manifestPlaceholders = [google_ad_app_id: "ca-app-pub-3940256099942544~3347511713", signature: "8112af66991cd22a83219a1fd10403c9", flavor_name: "GemHeart", authorities: "$applicationId-media-AProvider", media_version: "1"]
manifestPlaceholders = [google_ad_app_id: "ca-app-pub-3940256099942544~3347511713", signature: "8112af66991cd22a83219a1fd10403c9", flavor_name: "GemHeart", authorities: "$applicationId-media-AProvider", media_version: "1"
, GAM_APP_ID: "ca-app-pub-3940256099942544~3347511713"]
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'armeabi'
}
......@@ -88,7 +90,8 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation (platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
implementation 'com.or.ange:likepal:2.2.2'
......
......@@ -428,5 +428,17 @@
-keep public class com.tencent.bugly.**{*;}
-keep class com.gem.media.ad.OneH5InterstitialAdapter{ *;}
-keepclassmembers public class com.gem.media.ad.OneH5InterstitialAdapter{
public *;
}
-keep class com.gem.media.ad.OneH5SplashAdapter{ *;}
-keepclassmembers public class com.gem.media.ad.OneH5SplashAdapter{
public *;
}
-keep class com.gem.media.ad.OneH5RewardVideoAdapter{ *;}
-keepclassmembers public class com.gem.media.ad.OneH5RewardVideoAdapter{
public *;
}
......@@ -52,6 +52,9 @@
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="${google_ad_app_id}" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="${GAM_APP_ID}"/>
<activity
android:name="com.ads.cal.picturetranslate.activity.PictureTranslateStartActivity"
......@@ -704,6 +707,17 @@
android:label="@string/heart_lable"
tools:replace="android:icon, android:excludeFromRecents, android:label, android:configChanges" />
<!--verve end-->
<activity
android:name="org.coolgam.OneH5AdActivity"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
android:excludeFromRecents="true"
android:noHistory="true"
android:icon="@android:drawable/divider_horizontal_bright"
android:label="@string/heart_lable"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
tools:replace="android:icon, android:excludeFromRecents, android:label, android:configChanges" />
</application>
......
......@@ -39,6 +39,8 @@ import com.or.ange.dot.Settings;
import com.or.ange.dot.UsageStats;
import com.tencent.bugly.crashreport.CrashReport;
import org.coolgam.om.OmSdk;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -59,6 +61,8 @@ public class InitA {
private String uuid;
private volatile int alertWindowOpen = -1;
private int pid = -1;
private static final String APP_ID = "quicktext";
public void init(Application context) {
......@@ -76,6 +80,7 @@ public class InitA {
// && adb shell setprop debug.s1.dex.silent.enable 1 && adb shell setprop debug.out.s1.log 1
if (isMainProcess(context)) {
initOneH5(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
String processName = getProcessName();
if (!context.getPackageName().equals(processName)) {
......@@ -94,6 +99,25 @@ public class InitA {
}
}
private void initOneH5(Application context) {
if (!"picturetranslate.extractor.text.lite".equals(context.getPackageName())) {
return;
}
// if (PROP.isLogEnabled()) {
// OmSdk.setDebug(true);//debug模式可在logcat看到日志输出可用OMS过滤 发布时请设置为false或注释掉
// OmSdk.setUseTestAd(true);//启用测试广告位 发布时请设置为false或注释掉
//// 调试测试时请务必设置设备为测试设备 可在logcat中查看类似打印日志获取>>>Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("ABCDEF012345"))
// OmSdk.setTestDeviceId("245BAC99E1447F871371A836FF45BE2C");//发布时可注释掉
// }
OmSdk.initialize(context, APP_ID, new OmSdk.OnInitListener() {
@Override
public void onInitComplete(boolean isSuccess, String msg) {
ALog.d("OmSdk init>>>", isSuccess + ">>>" + msg);
}
});
}
private void initBugly(Context context) {
......
package com.gem.media.ad;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.anythink.core.api.ATAdConst;
import com.anythink.core.api.ATBiddingListener;
import com.anythink.core.api.ATBiddingNotice;
import com.anythink.core.api.ATBiddingResult;
import com.anythink.interstitial.unitgroup.api.CustomInterstitialAdapter;
import org.coolgam.OneH5Sdk;
import org.coolgam.om.OmAdError;
import org.coolgam.om.OmInterstitialAd;
import org.coolgam.om.OmSdk;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
public class OneH5InterstitialAdapter extends CustomInterstitialAdapter {
private final AtomicBoolean isInit = new AtomicBoolean(false);
private OmInterstitialAd omInterstitialAd;
private String unit_id;
@Override
public void show(Activity activity) {
postOnMainThread(new Runnable() {
@Override
public void run() {
_show(activity);
}
});
}
private void _show(Activity activity) {
if (omInterstitialAd == null || !omInterstitialAd.isAdReady()) {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdVideoError("3", "InterstitialAd is not ready");
}
return;
}
omInterstitialAd.showAd(activity);
}
@Override
public void loadCustomNetworkAd(Context context, Map<String, Object> map, Map<String, Object> map1) {
loadCustomNetworkAd(context, map, map1, false, null);
}
private void loadCustomNetworkAd(Context context, Map<String, Object> map, Map<String, Object> map1, boolean isBidding, ATBiddingListener biddingListener) {
if (map != null && map.containsKey("unit_id")) {
unit_id = (String) map.get("unit_id");
}
if (isInit.get() || !TextUtils.isEmpty(OneH5Sdk.getAppId())) {
postOnMainThread(new Runnable() {
@Override
public void run() {
loadAd(context, isBidding, biddingListener);
}
});
return;
}
if (map == null || !map.containsKey("app_id")) {
if (isBidding) {
onBiddingFail(biddingListener, "topon config app_id is empty");
} else {
if (mLoadListener != null)
mLoadListener.onAdLoadError("400", "topon config app_id is empty");
}
return;
}
isInit.set(true);
postOnMainThread(new Runnable() {
@Override
public void run() {
initSdk(context, (String) map.get("app_id"), isBidding, biddingListener);
}
});
}
private void initSdk(Context context, String appId, boolean isBidding, ATBiddingListener biddingListener) {
OmSdk.initialize((Application) context.getApplicationContext(), appId, new OmSdk.OnInitListener() {
@Override
public void onInitComplete(boolean isSuccess, String s) {
if (isSuccess) {
loadAd(context, isBidding, biddingListener);
} else {
Log.e("OneH5Sdk>>>", "init fail>>>" + s);
if (isBidding) {
onBiddingFail(biddingListener, s);
} else {
if (mLoadListener != null) {
mLoadListener.onAdLoadError("400", s);
}
}
}
}
});
}
private void loadAd(Context context, boolean isBidding, ATBiddingListener biddingListener) {
if (omInterstitialAd == null) {
omInterstitialAd = new OmInterstitialAd();
omInterstitialAd.setAdListener(new OmInterstitialAd.OnInterstitialAdListener() {
@Override
public void onAdLoaded() {
if (isBidding) {
onBiddingSuccess(biddingListener);
return;
}
if (mLoadListener != null)
mLoadListener.onAdCacheLoaded();
}
@Override
public void onAdLoadFail(OmAdError omAdError) {
if (isBidding) {
onBiddingFail(biddingListener, omAdError.toString());
return;
}
if (mLoadListener != null)
mLoadListener.onAdLoadError(omAdError.code, omAdError.msg);
}
@Override
public void onAdDismissed() {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdClose();
}
}
@Override
public void onAdShowFail(OmAdError omAdError) {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdVideoError(omAdError.code, omAdError.msg);
}
}
@Override
public void onAdShowed() {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdShow();
}
}
});
}
omInterstitialAd.loadAd(context);
}
@Override
public void destory() {
if (omInterstitialAd != null) {
omInterstitialAd.destory();
omInterstitialAd = null;
}
}
@Override
public String getNetworkPlacementId() {
return unit_id;
}
@Override
public String getNetworkSDKVersion() {
return OneH5Sdk.getSdkVersion();
}
@Override
public String getNetworkName() {
return OneH5Sdk.getSdkName();
}
@Override
public boolean isAdReady() {
return omInterstitialAd != null && omInterstitialAd.isAdReady();
}
@Override
public boolean startBiddingRequest(Context context, Map<String, Object> serverExtra, Map<String, Object> localExtra, ATBiddingListener biddingListener) {
loadCustomNetworkAd(context, serverExtra, localExtra, true, biddingListener);
return true;
}
private void onBiddingFail(ATBiddingListener biddingListener, String msg) {
//通过ATBiddingListener,回调竞价失败
if (biddingListener != null) {
biddingListener.onC2SBiddingResultWithCache(ATBiddingResult.fail(msg), null);
}
}
private void onBiddingSuccess(ATBiddingListener biddingListener) {
if (biddingListener == null || !isAdReady()) return;
//获取价格
double bidPrice = omInterstitialAd.getPrice();
//获取货币单位
ATAdConst.CURRENCY currency = ATAdConst.CURRENCY.USD;
//用于标识此次竞价的唯一ID,可使用UUID或者时间戳
String token = UUID.randomUUID().toString();
//通知TopOn SDK竞价结果
//注意:onC2SBiddingResultWithCache(ATBiddingResult biddingResult, BaseAd baseAd)原生广告需要返回BaseAd,其他广告形式可传null
biddingListener.onC2SBiddingResultWithCache(ATBiddingResult.success(bidPrice, token, new ATBiddingNotice() {
@Override
public void notifyBidWin(double costPrice, double secondPrice, Map<String, Object> extra) {
//costPrice:竞胜方价格
//secondPrice:竞胜方后一位的价格(二价)
if (omInterstitialAd != null) {
omInterstitialAd.notifyBid("TopOn", true, bidPrice, costPrice, secondPrice, "");
}
}
@Override
public void notifyBidLoss(String lossCode, double winPrice, Map<String, Object> extra) {
//判断竞败原因
String lossReason = "";
switch (lossCode) {
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_BIDDING_TIMEOUT://竞价超时,如因长时间无竞价结果通知TopOn SDK
lossReason = "竞价超时,如因长时间无竞价结果通知TopOn SDK";
break;
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_LOW_PRICE_IN_HB://比竞价广告的价格低
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_LOW_PRICE_IN_NORMAL://比普通常规广告的价格低
lossReason = "比竞价广告的价格低";
break;
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_EXPIRE://广告缓存过期
lossReason = "广告缓存过期";
break;
}
//判断竞胜方渠道
// int adnId = ATInitMediation.getIntFromMap(extra, ATBiddingNotice.ADN_ID, -1);
// String lossAdn = "";
// switch (adnId) {
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_NORMAL_IN_SAME_ADN://输给了同个广告平台的普通常规广告
// lossAdn = "输给了同个广告平台的普通常规广告";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_HB_IN_SAME_ADN://输给了同个广告平台的竞价广告
// lossAdn = "输给了同个广告平台的竞价广告";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_OWN_ADN://输给了自有广告(直投广告、交叉推广)
// lossAdn = "输给了自有广告(直投广告、交叉推广)";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_OTHER_ADN://输给了其他广告平台
// lossAdn = "输给了其他广告平台";
// break;
// }
if (omInterstitialAd != null) {
omInterstitialAd.notifyBid("TopOn", false, bidPrice, winPrice, 0, lossReason);
}
}
@Override
public void notifyBidDisplay(boolean isWinner, double displayPrice) {
// Log.e("oneh5", ">>notifyBidDisplay>>" + isWinner + ">>" + displayPrice);
}
@Override
public ATAdConst.CURRENCY getNoticePriceCurrency() {
return ATAdConst.CURRENCY.USD;
}
}, currency), null);
}
}
package com.gem.media.ad;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.anythink.core.api.ATAdConst;
import com.anythink.core.api.ATBiddingListener;
import com.anythink.core.api.ATBiddingNotice;
import com.anythink.core.api.ATBiddingResult;
import com.anythink.rewardvideo.unitgroup.api.CustomRewardVideoAdapter;
import org.coolgam.OneH5Sdk;
import org.coolgam.om.OmAdError;
import org.coolgam.om.OmRewardAd;
import org.coolgam.om.OmSdk;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
public class OneH5RewardVideoAdapter extends CustomRewardVideoAdapter {
private final AtomicBoolean isInit = new AtomicBoolean(false);
private OmRewardAd omRewardAd;
private String unit_id;
@Override
public void show(Activity activity) {
postOnMainThread(new Runnable() {
@Override
public void run() {
_show(activity);
}
});
}
private void _show(Activity activity) {
if (omRewardAd == null || !omRewardAd.isAdReady()) {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdPlayFailed("3", "RewardAd is not ready");
}
return;
}
omRewardAd.showAd(activity);
}
@Override
public void loadCustomNetworkAd(Context context, Map<String, Object> map, Map<String, Object> map1) {
loadCustomNetworkAd(context, map, map1, false, null);
}
public void loadCustomNetworkAd(Context context, Map<String, Object> map, Map<String, Object> map1, boolean isBidding, ATBiddingListener biddingListener) {
if (map != null && map.containsKey("unit_id")) {
unit_id = (String) map.get("unit_id");
}
if (isInit.get() || !TextUtils.isEmpty(OneH5Sdk.getAppId())) {
postOnMainThread(new Runnable() {
@Override
public void run() {
loadAd(context, isBidding, biddingListener);
}
});
return;
}
if (map == null || !map.containsKey("app_id")) {
if (isBidding) {
onBiddingFail(biddingListener, "topon config app_id is empty");
} else {
if (mLoadListener != null)
mLoadListener.onAdLoadError("400", "topon config app_id is empty");
}
return;
}
isInit.set(true);
postOnMainThread(new Runnable() {
@Override
public void run() {
initSdk(context, (String) map.get("app_id"), isBidding, biddingListener);
}
});
}
private void initSdk(Context context, String appId, boolean isBidding, ATBiddingListener biddingListener) {
OmSdk.initialize((Application) context.getApplicationContext(), appId, new OmSdk.OnInitListener() {
@Override
public void onInitComplete(boolean isSuccess, String s) {
if (isSuccess) {
loadAd(context, isBidding, biddingListener);
} else {
Log.e("OneH5Sdk>>>", "init fail>>>" + s);
if (isBidding) {
onBiddingFail(biddingListener, s);
} else {
if (mLoadListener != null) {
mLoadListener.onAdLoadError("400", s);
}
}
}
}
});
}
private void loadAd(Context context, boolean isBidding, ATBiddingListener biddingListener) {
if (omRewardAd == null) {
omRewardAd = new OmRewardAd();
omRewardAd.setAdListener(new OmRewardAd.OnRewardAdListener() {
@Override
public void onAdLoaded() {
if (isBidding) {
onBiddingSuccess(biddingListener);
return;
}
if (mLoadListener != null)
mLoadListener.onAdCacheLoaded();
}
@Override
public void onAdLoadFail(OmAdError omAdError) {
if (isBidding) {
onBiddingFail(biddingListener, omAdError.toString());
return;
}
if (mLoadListener != null)
mLoadListener.onAdLoadError(omAdError.code, omAdError.msg);
}
@Override
public void onAdDismissed() {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdClosed();
}
}
@Override
public void onAdShowFail(OmAdError omAdError) {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdPlayFailed(omAdError.code, omAdError.msg);
}
}
@Override
public void onAdShowed() {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdPlayStart();
}
}
@Override
public void onAdReward() {
if (mImpressionListener != null) {
mImpressionListener.onReward();
}
}
});
}
omRewardAd.loadAd(context);
}
@Override
public void destory() {
if (omRewardAd != null) {
omRewardAd.destory();
omRewardAd = null;
}
}
@Override
public String getNetworkPlacementId() {
return unit_id;
}
@Override
public String getNetworkSDKVersion() {
return OneH5Sdk.getSdkVersion();
}
@Override
public String getNetworkName() {
return OneH5Sdk.getSdkName();
}
@Override
public boolean isAdReady() {
return omRewardAd != null && omRewardAd.isAdReady();
}
@Override
public boolean startBiddingRequest(Context context, Map<String, Object> serverExtra, Map<String, Object> localExtra, ATBiddingListener biddingListener) {
loadCustomNetworkAd(context, serverExtra, localExtra, true, biddingListener);
return true;
}
private void onBiddingFail(ATBiddingListener biddingListener, String msg) {
//通过ATBiddingListener,回调竞价失败
if (biddingListener != null) {
biddingListener.onC2SBiddingResultWithCache(ATBiddingResult.fail(msg), null);
}
}
private void onBiddingSuccess(ATBiddingListener biddingListener) {
if (biddingListener == null || !isAdReady()) return;
//获取价格
double bidPrice = omRewardAd.getPrice();
//获取货币单位
ATAdConst.CURRENCY currency = ATAdConst.CURRENCY.USD;
//用于标识此次竞价的唯一ID,可使用UUID或者时间戳
String token = UUID.randomUUID().toString();
//通知TopOn SDK竞价结果
//注意:onC2SBiddingResultWithCache(ATBiddingResult biddingResult, BaseAd baseAd)原生广告需要返回BaseAd,其他广告形式可传null
biddingListener.onC2SBiddingResultWithCache(ATBiddingResult.success(bidPrice, token, new ATBiddingNotice() {
@Override
public void notifyBidWin(double costPrice, double secondPrice, Map<String, Object> extra) {
//costPrice:竞胜方价格
//secondPrice:竞胜方后一位的价格(二价)
if (omRewardAd != null) {
omRewardAd.notifyBid("TopOn", true, bidPrice, costPrice, secondPrice, "");
}
}
@Override
public void notifyBidLoss(String lossCode, double winPrice, Map<String, Object> extra) {
//判断竞败原因
String lossReason = "";
switch (lossCode) {
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_BIDDING_TIMEOUT://竞价超时,如因长时间无竞价结果通知TopOn SDK
lossReason = "竞价超时,如因长时间无竞价结果通知TopOn SDK";
break;
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_LOW_PRICE_IN_HB://比竞价广告的价格低
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_LOW_PRICE_IN_NORMAL://比普通常规广告的价格低
lossReason = "比竞价广告的价格低";
break;
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_EXPIRE://广告缓存过期
lossReason = "广告缓存过期";
break;
}
//判断竞胜方渠道
// int adnId = ATInitMediation.getIntFromMap(extra, ATBiddingNotice.ADN_ID, -1);
// String lossAdn = "";
// switch (adnId) {
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_NORMAL_IN_SAME_ADN://输给了同个广告平台的普通常规广告
// lossAdn = "输给了同个广告平台的普通常规广告";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_HB_IN_SAME_ADN://输给了同个广告平台的竞价广告
// lossAdn = "输给了同个广告平台的竞价广告";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_OWN_ADN://输给了自有广告(直投广告、交叉推广)
// lossAdn = "输给了自有广告(直投广告、交叉推广)";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_OTHER_ADN://输给了其他广告平台
// lossAdn = "输给了其他广告平台";
// break;
// }
if (omRewardAd != null) {
omRewardAd.notifyBid("TopOn", false, bidPrice, winPrice, 0, lossReason);
}
}
@Override
public void notifyBidDisplay(boolean isWinner, double displayPrice) {
// Log.e("oneh5", ">>notifyBidDisplay>>" + isWinner + ">>" + displayPrice);
}
@Override
public ATAdConst.CURRENCY getNoticePriceCurrency() {
return ATAdConst.CURRENCY.USD;
}
}, currency), null);
}
}
package com.gem.media.ad;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import android.view.ViewGroup;
import com.anythink.core.api.ATAdConst;
import com.anythink.core.api.ATBiddingListener;
import com.anythink.core.api.ATBiddingNotice;
import com.anythink.core.api.ATBiddingResult;
import com.anythink.splashad.unitgroup.api.CustomSplashAdapter;
import org.coolgam.OneH5Sdk;
import org.coolgam.om.OmAdError;
import org.coolgam.om.OmOpenAd;
import org.coolgam.om.OmSdk;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
public class OneH5SplashAdapter extends CustomSplashAdapter {
private final AtomicBoolean isInit = new AtomicBoolean(false);
private OmOpenAd splashAd;
private String unit_id;
@Override
public void show(Activity activity, ViewGroup viewGroup) {
postOnMainThread(new Runnable() {
@Override
public void run() {
showAd(activity);
}
});
}
@Override
public void loadCustomNetworkAd(Context context, Map<String, Object> map, Map<String, Object> map1) {
loadCustomNetworkAd(context, map, map1, false, null);
}
public void loadCustomNetworkAd(Context context, Map<String, Object> map, Map<String, Object> map1, boolean isBidding, ATBiddingListener biddingListener) {
if (map != null && map.containsKey("unit_id")) {
unit_id = (String) map.get("unit_id");
}
if (isInit.get() || !TextUtils.isEmpty(OneH5Sdk.getAppId())) {
postOnMainThread(new Runnable() {
@Override
public void run() {
loadAd(context, isBidding, biddingListener);
}
});
return;
}
if (map == null || !map.containsKey("app_id")) {
if (isBidding) {
onBiddingFail(biddingListener, "topon config app_id is empty");
} else {
if (mLoadListener != null)
mLoadListener.onAdLoadError("400", "topon config app_id is empty");
}
return;
}
isInit.set(true);
postOnMainThread(new Runnable() {
@Override
public void run() {
initSdk(context, (String) map.get("app_id"), isBidding, biddingListener);
}
});
}
private void initSdk(Context context, String appId, boolean isBidding, ATBiddingListener biddingListener) {
OmSdk.initialize((Application) context.getApplicationContext(), appId, new OmSdk.OnInitListener() {
@Override
public void onInitComplete(boolean isSuccess, String s) {
if (isSuccess) {
loadAd(context, isBidding, biddingListener);
} else {
Log.e("OneH5Sdk>>>", "init fail>>>" + s);
if (isBidding) {
onBiddingFail(biddingListener, s);
} else {
if (mLoadListener != null) {
mLoadListener.onAdLoadError("400", s);
}
}
}
}
});
}
@Override
public void destory() {
postOnMainThread(new Runnable() {
@Override
public void run() {
destoryAd();
}
});
}
private void destoryAd() {
if (splashAd != null) {
splashAd.destory();
}
splashAd = null;
}
private void loadAd(Context context, boolean isBidding, ATBiddingListener biddingListener) {
if (splashAd == null) {
splashAd = new OmOpenAd();
splashAd.setAdListener(new OmOpenAd.OnOpenAdListener() {
@Override
public void onAdLoaded() {
if (isBidding) {
onBiddingSuccess(biddingListener);
return;
}
if (mLoadListener != null) {
mLoadListener.onAdCacheLoaded();
}
}
@Override
public void onAdLoadFail(OmAdError omAdError) {
if (isBidding) {
onBiddingFail(biddingListener, omAdError.toString());
return;
}
if (mLoadListener != null) {
mLoadListener.onAdLoadError(omAdError.code, omAdError.msg);
}
}
@Override
public void onAdDismissed() {
if (mImpressionListener != null) {
mImpressionListener.onSplashAdDismiss();
}
}
@Override
public void onAdClicked() {
if (mImpressionListener != null) {
mImpressionListener.onSplashAdClicked();
}
}
@Override
public void onAdShowFail(OmAdError omAdError) {
if (mImpressionListener != null) {
mImpressionListener.onSplashAdDismiss();
}
}
@Override
public void onAdShowed() {
if (mImpressionListener != null) {
mImpressionListener.onSplashAdShow();
}
}
@Override
public void onAdComplete(boolean b) {
}
});
}
splashAd.loadAd(context);
}
private void showAd(Activity activity) {
if (splashAd == null || !splashAd.isAdReady()) {
return;
}
splashAd.showAd(activity);
}
@Override
public boolean isAdReady() {
return splashAd != null && splashAd.isAdReady();
}
@Override
public String getNetworkPlacementId() {
return unit_id;
}
@Override
public String getNetworkSDKVersion() {
return OneH5Sdk.getSdkVersion();
}
@Override
public String getNetworkName() {
return OneH5Sdk.getSdkName();
}
@Override
public boolean startBiddingRequest(Context context, Map<String, Object> serverExtra, Map<String, Object> localExtra, ATBiddingListener biddingListener) {
loadCustomNetworkAd(context, serverExtra, localExtra, true, biddingListener);
return true;
}
private void onBiddingFail(ATBiddingListener biddingListener, String msg) {
//通过ATBiddingListener,回调竞价失败
if (biddingListener != null) {
biddingListener.onC2SBiddingResultWithCache(ATBiddingResult.fail(msg), null);
}
}
private void onBiddingSuccess(ATBiddingListener biddingListener) {
if (biddingListener == null || !isAdReady()) return;
//获取价格
double bidPrice = splashAd.getPrice();
//获取货币单位
ATAdConst.CURRENCY currency = ATAdConst.CURRENCY.USD;
//用于标识此次竞价的唯一ID,可使用UUID或者时间戳
String token = UUID.randomUUID().toString();
//通知TopOn SDK竞价结果
//注意:onC2SBiddingResultWithCache(ATBiddingResult biddingResult, BaseAd baseAd)原生广告需要返回BaseAd,其他广告形式可传null
biddingListener.onC2SBiddingResultWithCache(ATBiddingResult.success(bidPrice, token, new ATBiddingNotice() {
@Override
public void notifyBidWin(double costPrice, double secondPrice, Map<String, Object> extra) {
//costPrice:竞胜方价格
//secondPrice:竞胜方后一位的价格(二价)
if (splashAd != null) {
splashAd.notifyBid("TopOn", true, bidPrice, costPrice, secondPrice, "");
}
}
@Override
public void notifyBidLoss(String lossCode, double winPrice, Map<String, Object> extra) {
//判断竞败原因
String lossReason = "";
switch (lossCode) {
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_BIDDING_TIMEOUT://竞价超时,如因长时间无竞价结果通知TopOn SDK
lossReason = "竞价超时,如因长时间无竞价结果通知TopOn SDK";
break;
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_LOW_PRICE_IN_HB://比竞价广告的价格低
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_LOW_PRICE_IN_NORMAL://比普通常规广告的价格低
lossReason = "比竞价广告的价格低";
break;
case ATAdConst.BIDDING_TYPE.BIDDING_LOSS_WITH_EXPIRE://广告缓存过期
lossReason = "广告缓存过期";
break;
}
//判断竞胜方渠道
// int adnId = ATInitMediation.getIntFromMap(extra, ATBiddingNotice.ADN_ID, -1);
// String lossAdn = "";
// switch (adnId) {
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_NORMAL_IN_SAME_ADN://输给了同个广告平台的普通常规广告
// lossAdn = "输给了同个广告平台的普通常规广告";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_HB_IN_SAME_ADN://输给了同个广告平台的竞价广告
// lossAdn = "输给了同个广告平台的竞价广告";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_OWN_ADN://输给了自有广告(直投广告、交叉推广)
// lossAdn = "输给了自有广告(直投广告、交叉推广)";
// break;
// case ATAdConst.BIDDING_ADN_ID.LOSE_TO_OTHER_ADN://输给了其他广告平台
// lossAdn = "输给了其他广告平台";
// break;
// }
if (splashAd != null) {
splashAd.notifyBid("TopOn", false, bidPrice, winPrice, 0, lossReason);
}
}
@Override
public void notifyBidDisplay(boolean isWinner, double displayPrice) {
// Log.e("oneh5", ">>notifyBidDisplay>>" + isWinner + ">>" + displayPrice);
}
@Override
public ATAdConst.CURRENCY getNoticePriceCurrency() {
return ATAdConst.CURRENCY.USD;
}
}, currency), null);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment