Commit 27164712 authored by jyx's avatar jyx

添加OneWay激励视频

parent 96064363
......@@ -355,6 +355,8 @@ dependencies {
//愉悦赚
implementation(name: 'mduisdk_v3.1.0.18_support_msa_1.0.23', ext: 'aar')
implementation 'com.tencent.tbs.tbssdk:sdk:43903'
// OneWay
implementation(name: 'oneway-common-core-1.0.10', ext: 'aar')
// //芒果联盟
// implementation 'com.openppeace.mgmob:mgmob:1.3.5-alpha6'//MGMob
......
......@@ -16,6 +16,7 @@ import com.mints.goodmoney.manager.KsManager;
import com.mints.goodmoney.manager.LiebaoManager;
import com.mints.goodmoney.manager.MhManager;
import com.mints.goodmoney.manager.MiitHelper;
import com.mints.goodmoney.manager.OwManager;
import com.mints.goodmoney.manager.ReaderManager;
import com.mints.goodmoney.manager.RsNewsManager;
import com.mints.goodmoney.manager.TtCsjAdManager;
......@@ -114,7 +115,7 @@ public class MintsApplication extends MultiDexApplication {
private void thirdConfig() {
// 友盟SDK预初始化函数
// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验
UMConfigure.preInit(this,CommonUtils.getAppMetaData(MintsApplication.getContext(), "UMENG_KEY"), CommonUtils.getAppMetaData(MintsApplication.getContext(), "CHANNEL_NAME"));
UMConfigure.preInit(this, CommonUtils.getAppMetaData(MintsApplication.getContext(), "UMENG_KEY"), CommonUtils.getAppMetaData(MintsApplication.getContext(), "CHANNEL_NAME"));
// 初始化toast
initToast();
......@@ -137,6 +138,9 @@ public class MintsApplication extends MultiDexApplication {
// 枫岚广告
MhManager.INSTANCE.initMn(this);
// OneWay
OwManager.INSTANCE.init(this);
// 天卓珊瑚[INSTANCE是设置单例模式]
TzManager.INSTANCE.initTz(this);
......
package com.mints.goodmoney.ad.video
import android.app.Activity
import com.mints.goodmoney.ad.video.base.BaseVideoAd
import com.mints.goodmoney.ad.video.base.VideoAdStatusListener
import com.mints.goodmoney.common.AppConfig
import com.mints.goodmoney.common.Constant
import com.mints.goodmoney.manager.OwManager
import com.mints.goodmoney.manager.TrackManager
import mobi.oneway.export.Ad.OWRewardedAd
import mobi.oneway.export.AdListener.OWRewardedAdListener
import mobi.oneway.export.enums.OnewayAdCloseType
import mobi.oneway.export.enums.OnewaySdkError
private val TAG = OwVideoAdManager::class.java.simpleName
/**
* OneWay广告视频
*/
class OwVideoAdManager private constructor() :
BaseVideoAd() {
private var videoAdStatusListener: VideoAdStatusListener? = null
private var owRewardedAd: OWRewardedAd? = null
private var isClickScreen: Boolean = true
companion object {
private var _inst: OwVideoAdManager? = null
fun getInstance(): OwVideoAdManager? {
return if (_inst != null) {
_inst
} else {
_inst = OwVideoAdManager()
_inst
}
}
}
override fun loadAd(activity: Activity, curCoin: Int, carrierType: String, extraId: String?) {
isClickScreen = true
//创建激励视频事件监听器
val owRewardedAdListener: OWRewardedAdListener = object : OWRewardedAdListener {
override fun onAdReady() {
owRewardedAd?.show(activity)
}
override fun onAdShow(tag: String) {
TrackManager.getInstance().addCallImp(Constant.AD_SOURCE_OW, Constant.EVENT_TYPE_ZERO, "", "")
}
override fun onAdClick(tag: String) {
if (AppConfig.needReportClickAdEvent) {
TrackManager.getInstance().reportClickAdEvent()
}
TrackManager.getInstance().addCallImp(Constant.AD_SOURCE_OW, Constant.EVENT_TYPE_TWO, "", "")
if (isClickScreen) {
// 防止重复
TrackManager.getInstance().addCallImp(Constant.AD_SOURCE_OW, Constant.EVENT_TYPE_FOUR, "", "")
isClickScreen = false
}
videoAdStatusListener?.adDownload()
}
override fun onAdClose(tag: String, onewayVideoCloseType: OnewayAdCloseType) {
TrackManager.getInstance().reportAddCoinMsg(activity, getAdMapVO(carrierType, Constant.AD_SOURCE_OW, extraId, curCoin))
TrackManager.getInstance().addCallImp(Constant.AD_SOURCE_OW, Constant.EVENT_TYPE_THREE, "", "")
videoAdStatusListener?.adSuccess()
}
override fun onAdFinish(s: String, onewayAdCloseType: OnewayAdCloseType, s1: String) {
}
override fun onSdkError(onewaySdkError: OnewaySdkError, msg: String) {
TrackManager.getInstance().addCallImp(Constant.AD_SOURCE_OW, Constant.EVENT_TYPE_ONE, "999999","emun:"+onewaySdkError.name+"msg:"+ msg)
videoAdStatusListener?.adFail()
}
}
//创建激励视频对象
owRewardedAd = OWRewardedAd(activity, OwManager.REWARD_PID, owRewardedAdListener)
owRewardedAd?.loadAd()
}
fun setVideoAdStatusListener(videoAdStatusListener: VideoAdStatusListener?) {
this.videoAdStatusListener = videoAdStatusListener
}
override fun onDestroy() {
owRewardedAd?.destory()
owRewardedAd = null
}
}
\ No newline at end of file
......@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
import com.mints.goodmoney.ad.video.base.VideoAdStatusListener;
import com.mints.goodmoney.common.AppConfig;
import com.mints.goodmoney.common.Constant;
......@@ -15,6 +16,7 @@ import com.mints.goodmoney.mvp.model.WeightBean;
import com.mints.goodmoney.service.AppInstallService;
import com.mints.goodmoney.utils.AppUtil;
import com.mints.goodmoney.utils.LogUtil;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashSet;
......@@ -30,9 +32,6 @@ public class VideoAdingManager {
private static VideoAdingManager _inst;
// APP下载回调广播
private BroadcastReceiver mReceiverBroadcastReceiver = null;
private VideoAdingListener videoAdingListener;
private WnVideoAdManager wnVideoAdManager;
......@@ -42,7 +41,7 @@ public class VideoAdingManager {
private ShVideoAdManager shVideoAdManager;
private CsjFullVideoAdManager csjFullVideoAdManager;
private KsVideoAdManager ksVideoAdManager;
private RTAVideoAdManager rtaVideoAdManager;
private OwVideoAdManager owVideoAdManager;
private int wnWeight;
private int ylhWeight;
......@@ -51,19 +50,19 @@ public class VideoAdingManager {
private int shVideoWeight;
private int csjFullVideoWeight;
private int ksVideoWeight;
private int rtaVideoWeight;
private int owVideoWeight;
private ArrayList<WeightBean> weightList;
private ArrayList<String> currentRandomAdList;//当前随机出的广告渠道
private ArrayList<String> adList;//广告渠道
// 是否是高额视频任务
private boolean isHighWeight = false;
private Activity activity;
private boolean isVideoAdDownload = false;// 是否点击广告下载 true-点击
private ArrayList<String> currentRandomAdList;//当前随机出的广告渠道
private ArrayList<String> adList;//广告渠道
public static VideoAdingManager getInstance(Activity activity) {
if (_inst == null) {
WeakReference<Activity> activityWeakReference = new WeakReference<>(activity);
......@@ -79,21 +78,24 @@ public class VideoAdingManager {
/**
* 初始化广告manager
*
* @param activity _
* @param activity
*/
private void init(Activity activity) {
this.activity = activity;
csjVideoAdManager = CsjVideoAdManager.getInstance(activity);
ylhVideoAdManager = YlhVideoAdManager.getInstance();
csjFullVideoAdManager = CsjFullVideoAdManager.getInstance(activity);
wnVideoAdManager = WnVideoAdManager.Companion.getInstance(activity);
mhVideoAdManager = MhVideoAdManager.Companion.getInstance(activity);
shVideoAdManager = ShVideoAdManager.Companion.getInstance(activity);
csjFullVideoAdManager = CsjFullVideoAdManager.getInstance(activity);
ksVideoAdManager = KsVideoAdManager.Companion.getInstance(activity);
rtaVideoAdManager = RTAVideoAdManager.Companion.getInstance(activity);
owVideoAdManager = OwVideoAdManager.Companion.getInstance();
weightList = new ArrayList<>();
}
// APP下载回调广播
private BroadcastReceiver mReceiverBroadcastReceiver = null;
private void registerBroad() {
if (AppConfig.isSuperTask) {
return;
......@@ -133,10 +135,15 @@ public class VideoAdingManager {
/**
* 初始化广告权重
*/
public void initAdWeight(int csjVideoWeight, int ylhWeight,
int wnWeight, int flVideoWeight,
int shVideoWeight, int csjFullVideoWeight,
int ksVideoWeight, int rtaVideoWeight) {
public void initAdWeight(
int csjVideoWeight,
int ylhWeight,
int wnWeight,
int flVideoWeight,
int shVideoWeight,
int csjFullVideoWeight,
int ksVideoWeight,
int owVideoWeight) {
this.csjVideoWeight = csjVideoWeight;
this.ylhWeight = ylhWeight;
this.wnWeight = wnWeight;
......@@ -144,13 +151,13 @@ public class VideoAdingManager {
this.shVideoWeight = shVideoWeight;
this.csjFullVideoWeight = csjFullVideoWeight;
this.ksVideoWeight = ksVideoWeight;
this.rtaVideoWeight = rtaVideoWeight;
this.owVideoWeight = owVideoWeight;
}
/**
* 根据类型加载对应视频(第一次加载)
*
* @param bean _
* @param bean
*/
public void loadAding(Activity activity, VideoAdingBean bean) {
WeakReference<Activity> activityWeakReference = new WeakReference<>(activity);
......@@ -161,14 +168,28 @@ public class VideoAdingManager {
loadAdVideo(getVideoAdType(), bean);
}
/**
* 加载失败优先级对应视频
*
* @param bean
*/
public void loadFailAding(Activity activity, VideoAdingBean bean) {
WeakReference<Activity> activityWeakReference = new WeakReference<>(activity);
this.activity = activityWeakReference.get();
isVideoAdDownload = false;
loadAdVideo(getNextFailAdType(), bean);
}
/**
* 根据广告优先级获取下一个
* <p>
* 穿山甲>优量汇>穿山甲全屏>快手>珊瑚>闪电盒子>枫岚(兜底)
* <p>
* 穿山甲>优量汇>快手>oneway>闪电盒子>穿山甲全屏>珊瑚>枫岚(兜底)
*/
private String getNextFailAdType() {
// 高额任务时 会为空
if (adList == null || currentRandomAdList == null) {
if (isHighWeight || adList == null || currentRandomAdList == null) {
return getHighWeight();
}
......@@ -188,19 +209,6 @@ public class VideoAdingManager {
return nextAdType;
}
/**
* 加载失败优先级对应视频
*
* @param bean _
*/
public void loadFailAding(Activity activity, VideoAdingBean bean) {
WeakReference<Activity> activityWeakReference = new WeakReference<>(activity);
this.activity = activityWeakReference.get();
isVideoAdDownload = false;
loadAdVideo(getNextFailAdType(), bean);
}
/**
* 获取广告类型配置
*/
......@@ -280,7 +288,7 @@ public class VideoAdingManager {
/**
* 根据权重获取广告类型
*
* @return _
* @return
*/
private String getRandomWeight() {
if (currentRandomAdList == null) {
......@@ -296,8 +304,8 @@ public class VideoAdingManager {
weightList.clear();
}
int weight = 0;
// 穿山甲>优量汇>穿山甲全屏>快手>珊瑚>闪电盒子>枫岚(兜底)
// 若没有视频完成数,不加入权重计算范围内
// 穿山甲>优量汇>快手>oneway>闪电盒子>穿山甲全屏>珊瑚>枫岚(兜底)
if (AppConfig.csjVideoAdCount > 0) {
weightList.add(new WeightBean(csjVideoWeight, Constant.CSJ_VEDIO_AD));
weight = weight + csjVideoWeight;
......@@ -310,51 +318,51 @@ public class VideoAdingManager {
LogUtil.d(TAG, "权重值:ylhWeight:" + ylhWeight);
adList.add("b");
}
if (AppConfig.csjFullVideoAdCount > 0) {
weightList.add(new WeightBean(csjFullVideoWeight, Constant.CSJ_FULL_AD));
weight = weight + csjFullVideoWeight;
LogUtil.d(TAG, "权重值:csjFullVideoWeight:" + csjFullVideoWeight);
if (AppConfig.ksVideoAdCount > 0) {
weightList.add(new WeightBean(ksVideoWeight, Constant.KS_VEDIO_AD));
weight = weight + ksVideoWeight;
LogUtil.d(TAG, "权重值:ksWeight:" + ksVideoWeight);
adList.add("c");
}
if (AppConfig.owVideoAdCount > 0) {
weightList.add(new WeightBean(owVideoWeight, Constant.OW_VEDIO_AD));
weight = weight + owVideoWeight;
LogUtil.d(TAG, "权重值:owVideoWeight:" + owVideoWeight);
adList.add("d");
}
if (AppConfig.wnVideoAdCount > 0) {
weightList.add(new WeightBean(wnWeight, Constant.SDHZ_VEDIO_AD));
weight = weight + wnWeight;
LogUtil.d(TAG, "权重值:sdhzWeight:" + wnWeight);
adList.add("d");
adList.add("e");
}
if (AppConfig.csjFullVideoAdCount > 0) {
weightList.add(new WeightBean(csjFullVideoWeight, Constant.CSJ_FULL_AD));
weight = weight + csjFullVideoWeight;
LogUtil.d(TAG, "权重值:csjFullVideoWeight:" + csjFullVideoWeight);
adList.add("f");
}
if (AppConfig.shVideoAdCount > 0) {
weightList.add(new WeightBean(shVideoWeight, Constant.SH_VEDIO_AD));
weight = weight + shVideoWeight;
LogUtil.d(TAG, "权重值:shWeight:" + shVideoWeight);
adList.add("e");
}
if (AppConfig.ksVideoAdCount > 0) {
weightList.add(new WeightBean(ksVideoWeight, Constant.KS_VEDIO_AD));
weight = weight + ksVideoWeight;
LogUtil.d(TAG, "权重值:ksWeight:" + ksVideoWeight);
adList.add("f");
adList.add("g");
}
if (AppConfig.flVideoAdCount > 0) {
weightList.add(new WeightBean(flVideoWeight, Constant.FL_VEDIO_AD));
weight = weight + flVideoWeight;
LogUtil.d(TAG, "权重值:flVideoWeight:" + flVideoWeight);
adList.add("g");
}
if (AppConfig.rtaVideoAdCount > 0) {
weightList.add(new WeightBean(rtaVideoWeight, Constant.RTA_VEDIO_AD));
weight = weight + rtaVideoWeight;
LogUtil.d(TAG, "权重值:rtaWeight:" + rtaVideoWeight);
adList.add("h");
}
// 权重随机
if (weightList != null && weightList.size() > 0 && weight > 0) {
LogUtil.d(TAG, "1、权重总值:" + weight);
Random r = new Random();
int randomWeight = r.nextInt(weight) + 1;
LogUtil.d(TAG, "2、权重随机值:" + randomWeight);
// ToastUtil.show(MintsApplication.getContext(), "权重随机值:" + randomWeight);
// ToastUtil.show(MintsApplication.getContext(),"权重随机值:" + randomWeight);
for (WeightBean weightBean : weightList) {
randomWeight -= weightBean.getWeight();
if (randomWeight <= 0) {
......@@ -386,17 +394,12 @@ public class VideoAdingManager {
int wnAdCount = AppConfig.wnVideoAdCount;
int flVideoAdCount = AppConfig.flVideoAdCount;
int tzVideoAdCount = AppConfig.shVideoAdCount;
int csjFullVedioAdCount = AppConfig.csjFullVideoAdCount;
int ksVideoAdCount = AppConfig.ksVideoAdCount;
int csjFullVideoAdCount = AppConfig.csjFullVideoAdCount;
if (ylhAdCount <= 0 &&
csjVideoAdCount <= 0 &&
wnAdCount <= 0 &&
flVideoAdCount <= 0 &&
tzVideoAdCount <= 0 &&
csjFullVideoAdCount <= 0 &&
ksVideoAdCount <= 0) {
// showToast("今日视频已看完,请明天再来吧");
int owVideoAdCount = AppConfig.owVideoAdCount;
if (ylhAdCount <= 0 && csjVideoAdCount <= 0 && wnAdCount <= 0 && flVideoAdCount <= 0
&& tzVideoAdCount <= 0 && csjFullVedioAdCount <= 0 && ksVideoAdCount <= 0 && owVideoAdCount <= 0) {
return true;
}
return false;
......@@ -436,15 +439,10 @@ public class VideoAdingManager {
shVideoAdManager.onDestroy();
shVideoAdManager = null;
}
if (ksVideoAdManager != null) {
ksVideoAdManager.setVideoAdStatusListener(null);
ksVideoAdManager.onDestroy();
ksVideoAdManager = null;
}
if (rtaVideoAdManager != null) {
rtaVideoAdManager.setVideoAdStatusListener(null);
rtaVideoAdManager.onDestroy();
rtaVideoAdManager = null;
if (owVideoAdManager != null) {
owVideoAdManager.setVideoAdStatusListener(null);
owVideoAdManager.onDestroy();
owVideoAdManager = null;
}
if (mReceiverBroadcastReceiver != null) {
......@@ -760,30 +758,30 @@ public class VideoAdingManager {
});
ksVideoAdManager.loadAd(activity, bean.getCurCoin(), bean.getCarrierType(), bean.getExtraId());
} else if (TextUtils.equals(videoAdType, Constant.RTA_VEDIO_AD)) {
// RTA广告激励视频
if (rtaVideoAdManager == null) {
} else if (TextUtils.equals(videoAdType, Constant.OW_VEDIO_AD)) {
// oneway广告激励视频
if (owVideoAdManager == null) {
if (activity == null) {
if (videoAdingListener != null) {
videoAdingListener.videoAdingListenerError(Constant.RTA_VEDIO_AD);
videoAdingListener.videoAdingListenerError(Constant.OW_VEDIO_AD);
}
return;
}
rtaVideoAdManager = RTAVideoAdManager.Companion.getInstance(activity);
owVideoAdManager = OwVideoAdManager.Companion.getInstance();
}
rtaVideoAdManager.setVideoAdStatusListener(new VideoAdStatusListener() {
owVideoAdManager.setVideoAdStatusListener(new VideoAdStatusListener() {
@Override
public void adSuccess() {
AppConfig.rtaVideoAdCount--;
AppConfig.owVideoAdCount--;
if (videoAdingListener != null) {
videoAdingListener.videoAdingListenerSuccess(Constant.RTA_VEDIO_AD);
videoAdingListener.videoAdingListenerSuccess(Constant.OW_VEDIO_AD);
}
}
@Override
public void adFail() {
if (videoAdingListener != null) {
videoAdingListener.videoAdingListenerFail(Constant.RTA_VEDIO_AD);
videoAdingListener.videoAdingListenerFail(Constant.OW_VEDIO_AD);
}
}
......@@ -796,7 +794,7 @@ public class VideoAdingManager {
}
});
rtaVideoAdManager.loadAd(activity, bean.getCurCoin(), bean.getCarrierType(), bean.getExtraId());
owVideoAdManager.loadAd(activity, bean.getCurCoin(), bean.getCarrierType(), bean.getExtraId());
}
} catch (Exception e) {
e.printStackTrace();
......@@ -807,7 +805,8 @@ public class VideoAdingManager {
}
private String getCode(String adtype) {
String code = "g";
// 穿山甲>优量汇>快手>oneway>闪电盒子>穿山甲全屏>珊瑚>枫岚(兜底)
String code = "h";
switch (adtype) {
case Constant.CSJ_VEDIO_AD:
code = "a";
......@@ -815,23 +814,28 @@ public class VideoAdingManager {
case Constant.YLH_VEDIO_AD:
code = "b";
break;
case Constant.CSJ_FULL_AD:
case Constant.KS_VEDIO_AD:
code = "c";
break;
case Constant.SDHZ_VEDIO_AD:
case Constant.OW_VEDIO_AD:
code = "d";
break;
case Constant.SH_VEDIO_AD:
case Constant.SDHZ_VEDIO_AD:
code = "e";
break;
case Constant.KS_VEDIO_AD:
case Constant.CSJ_FULL_AD:
code = "f";
break;
case Constant.SH_VEDIO_AD:
code = "g";
break;
}
return code;
}
private String getAdtype(String code) {
//// 穿山甲>优量汇>快手>oneway>闪电盒子>穿山甲全屏>珊瑚>枫岚(兜底)
String adtype = Constant.FL_VEDIO_AD;
switch (code) {
case "a":
......@@ -841,16 +845,19 @@ public class VideoAdingManager {
adtype = Constant.YLH_VEDIO_AD;
break;
case "c":
adtype = Constant.CSJ_FULL_AD;
adtype = Constant.KS_VEDIO_AD;
break;
case "d":
adtype = Constant.SDHZ_VEDIO_AD;
adtype = Constant.OW_VEDIO_AD;
break;
case "e":
adtype = Constant.SH_VEDIO_AD;
adtype = Constant.SDHZ_VEDIO_AD;
break;
case "f":
adtype = Constant.KS_VEDIO_AD;
adtype = Constant.CSJ_FULL_AD;
break;
case "g":
adtype = Constant.SH_VEDIO_AD;
break;
}
return adtype;
......
......@@ -97,9 +97,14 @@ public class AppConfig {
*/
public static int ksVideoAdCount = 0;
/**
* rtaVideo 剩余广告播放数
* owVideo 剩余广告播放数
*/
public static int rtaVideoAdCount = 0;
public static int owVideoAdCount = 0;
// /**
// * rtaVideo 剩余广告播放数
// */
// public static int rtaVideoAdCount = 0;
/**
* 高额任务和超级翻倍 csjVideo 剩余广告播放数
*/
......
......@@ -155,6 +155,7 @@ object Constant {
const val AD_SOURCE_SH = "CORAL" //珊瑚天卓
const val AD_SOURCE_KS = "KS" //快手
const val AD_SOURCE_RTA = "RTA" //RTA
const val AD_SOURCE_OW = "OW" //OneWay
// 调用事件 0 成功 1失败 2点击 3-有效展示 4-去重
const val EVENT_TYPE_ZERO = "0"
......@@ -177,6 +178,8 @@ object Constant {
const val SH_VEDIO_AD = "SH_VEDIO_AD"
const val KS_VEDIO_AD = "KS_VEDIO_AD"
const val RTA_VEDIO_AD = "RTA_VEDIO_AD"
const val OW_VEDIO_AD = "OW_VEDIO_AD"
// 信息流广告类型
const val CSJ_EXPRESS_AD = "CSJ_EXPRESS_AD"
......
package com.mints.goodmoney.manager
import android.app.Application
import com.maplehaze.adsdk.MaplehazeSDK
import mobi.oneway.export.Ad.OnewaySdk
/**
* 描述:OneWay激励视频
* 作者:孟崔广
*/
object OwManager {
private const val PUBLISH_ID = ""
const val REWARD_PID = ""
/**
* 初始化
*/
fun init(application: Application) {
OnewaySdk.configure(application, PUBLISH_ID)
}
}
\ No newline at end of file
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