Commit 1602490b authored by wangxuewei's avatar wangxuewei

[提交人]:王雪伟

[提交简述] :幸福农场
[实现方案] :luckyfarm_1.0.4
1.加入瑞狮,sigmob广告平台,接入小满
2.title 钱数加入元单位
3,加速剂给的数量改为后台控制
4.调整土地倒计时,位置上移。
5.加入加速显示缩减时间动画
parent 834a3929
......@@ -36,5 +36,25 @@
<option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://maven.aliyun.com/repository/google" />
</remote-repository>
<remote-repository>
<option name="id" value="maven2" />
<option name="name" value="maven2" />
<option name="url" value="https://maven.aliyun.com/repository/jcenter" />
</remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://maven.aliyun.com/repository/gradle-plugin" />
</remote-repository>
<remote-repository>
<option name="id" value="maven5" />
<option name="name" value="maven5" />
<option name="url" value="http://test.vlion.cn:8081/nexus/content/repositories/inland/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
......@@ -5,8 +5,10 @@ import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import com.bx.adsdk.AdSdk
import com.game.luckyfarm.UnityPlayerActivity
import com.umeng.analytics.MobclickAgent
import com.ym.admodule.rs.RSADUtils
import com.ym.game.activity.SplashActivity
import com.ym.game.activity.WxLoginActivity
import com.ym.game.listener.IDialogViewCloseCallback
......@@ -18,6 +20,7 @@ import com.ym.game.view.TurntableDialog
import com.ym.library.AppliContext
import com.ym.library.Constant
import com.ym.library.config.AdManager
import com.ym.library.config.ZXADCallback
import com.ym.library.config.ZXADRewardVideo
import com.ym.library.down.UpdateVersionManager
import com.ym.library.listener.ZXADVideoListener
......@@ -28,6 +31,7 @@ import com.ym.library.net.RxSchedulers
import com.ym.library.net.UserInfoEntity
import com.ym.library.router.RounterApi
import com.ym.library.router.RounterBus
import com.ym.library.sm.SMADUtils
import com.ym.library.utils.*
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
......@@ -43,7 +47,6 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
private var mOrderString = "";
private val mContext = AppliContext.get()
private var mRefreshLoginObservable: Observable<Boolean>? = null
@SuppressLint("CheckResult")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventUtils.onEvent("tab_imp", "幸运农场")
......@@ -69,6 +72,12 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
}, {
})
//小满上报
if (Constant.isReportXiaoman) {
AdSdk.exposure("2654", SettingPreference.getToken())
Constant.isReportXiaoman = false
}
}
override fun onDestroy() {
......@@ -88,7 +97,7 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
super.onResume()
MobclickAgent.onResume(this)
Log.d("wxw","onResume")
callUnity("Form_land", "getLandList", "")
// callUnity("Form_land", "getLandList", "")
}
override fun onPause() {
......@@ -125,6 +134,14 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
return false
}
/**
* 小满入口
*/
fun gotoXiaoManActivity(){
EventUtils.onEvent("XiaoManClick","小满入口点击");
JumpUtils.jumpXiaomanActivity("天天领现金")
}
/**
* 跳转提现页
*/
......@@ -132,6 +149,7 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
if(type==1){
JumpUtils.h5Jump("跳转提现页", Constant.Param.WithDraw2, false,act)
}else{
EventUtils.onEvent("WithDrawClick","提现入口点击");
JumpUtils.h5Jump("跳转提现页", Constant.Param.WithDraw, false,act)
}
}
......@@ -140,16 +158,16 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
* 上榜赚钱
*/
fun ranklistClick() {
Log.d("wxw", "上榜赚钱")
//JumpUtils.h5Jump("上榜赚钱", Constant.Param.RankList)
JumpUtils.h5Jump("水滴排行榜", Constant.Param.RankList, false,act)
EventUtils.onEvent("PaiHangBangClick","上榜入口点击");
JumpUtils.h5Jump("排行榜", Constant.Param.RankList, false,act)
}
/**
* 每日福利
*/
fun oneveryDayWelfareClick() {
Log.d("wxw", "每日福利")
EventUtils.onEvent("MeiRiFuLiClick","每日福利入口点击");
JumpUtils.h5Jump("每日福利", Constant.Param.WelfareCenter, false,act)
}
......@@ -158,7 +176,7 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
* 打卡提现
*/
fun clockInMakeMoney() {
Log.d("wxw", "打卡提现")
EventUtils.onEvent("DaKaTiXianClick","打卡提现入口点击");
JumpUtils.h5Jump("打卡提现", Constant.Param.PunchRecord, false,act)
}
......@@ -166,6 +184,7 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
* 幸运转盘
*/
fun luckyTurntable() {
EventUtils.onEvent("ZhuanPanClick","转盘入口点击");
this.runOnUiThread(object : Runnable {
override fun run() {
if (Utils.isFastClick()) {
......@@ -180,6 +199,7 @@ class GameActivity : UnityPlayerActivity(), IDialogViewCloseCallback {
* 领金币
*/
fun getCoin() {
EventUtils.onEvent("RenWuClick","领金币任务入口点击");
this.runOnUiThread(object : Runnable {
override fun run() {
SiginDropsPopupwindow().init(this@GameActivity, this@GameActivity)
......
......@@ -10,6 +10,7 @@ import com.bytedance.sdk.openadsdk.TTSplashAd
import com.gyf.immersionbar.BarHide
import com.gyf.immersionbar.ImmersionBar
import com.umeng.analytics.MobclickAgent
import com.ym.admodule.rs.RSADUtils
import com.ym.game.GameActivity
import com.ym.xync.R
import com.ym.library.Constant
......@@ -17,9 +18,13 @@ import com.ym.library.module.ReportEntity
import com.ym.library.net.SplashPresenter.Companion.PERMISSIONS
import com.ym.game.utils.CenterDialog
import com.ym.library.config.AdManager
import com.ym.library.config.ZXADCallback
import com.ym.library.config.ZXADRewardVideo
import com.ym.library.listener.ZXADSplashListener
import com.ym.library.listener.ZXADVideoListener
import com.ym.library.module.NewsEntity
import com.ym.library.net.*
import com.ym.library.sm.SMADUtils
import com.ym.library.utils.*
import com.ym.library.wechat.UserApiClient
import org.jetbrains.anko.act
......@@ -37,7 +42,8 @@ class SplashActivity : BaseActivity(), SplashContract.View {
finish()
return
}
Constant.ReportSessionId = "" + System.currentTimeMillis() + ReportUtils.getRandom(10)//上报使用的sessionId
Constant.ReportSessionId =
"" + System.currentTimeMillis() + ReportUtils.getRandom(10)//上报使用的sessionId
EventUtils.onEvent("app_start")
ImmersionBar.with(this)
.hideBar(BarHide.FLAG_HIDE_NAVIGATION_BAR)
......@@ -66,8 +72,46 @@ class SplashActivity : BaseActivity(), SplashContract.View {
override fun jumpPage() {
if (!SettingPreference.getIsShowGuide()) {
EventUtils.onEvent("SplashActivity_loadSplash")
// var newsEntity = NewsEntity()
// newsEntity.codeId = "26329"
// RSADUtils.loadSplashAd(
// newsEntity,
// this,
// splash_container!!,
// object : ZXADSplashListener {
// override fun onSuccessResult() {
// }
//
// },
// tv_skipview,
// object : ZXADCallback {
// override fun onAdSuccess() {
// }
//
// override fun onAdFail() {
// }
//
// })
// var newsEntity2 = NewsEntity()
// newsEntity2.codeId = "e95e6a55551"
// SMADUtils.loadSplashAd(newsEntity2,this,splash_container!!,object :ZXADSplashListener{
// override fun onSuccessResult() {
// }
// },tv_skipview,object :ZXADCallback{
// override fun onAdSuccess() {
// }
//
// override fun onAdFail() {
// }
//
// })
AdManager.loadSplashAd(this,
ADConfig.AD_SPLASH, tv_skipview, splash_container!!,object : ZXADSplashListener {
ADConfig.AD_SPLASH, tv_skipview, splash_container!!, object : ZXADSplashListener {
override fun onSuccessResult() {
Log.e("huang", "onSuccessResult()")
}
......@@ -130,11 +174,11 @@ class SplashActivity : BaseActivity(), SplashContract.View {
startTime = System.currentTimeMillis()
// startActivity(Intent(this@SplashActivity, GameActivity::class.java))
val token = SettingPreference.getToken()
if (token.isEmpty()){
if (token.isEmpty()) {
EventUtils.onEvent("login_token_null", "未登录")
startActivity(Intent(this@SplashActivity, WxLoginActivity::class.java))
finish()
}else{
} else {
EventUtils.onEvent("login_token_not_null", "已登录")
startActivity(Intent(this@SplashActivity, GameActivity::class.java))
finish()
......@@ -204,13 +248,19 @@ class SplashActivity : BaseActivity(), SplashContract.View {
override fun onResume() {
super.onResume()
EventUtils.onEvent("page_status", Utils.obj2Str(ReportEntity(Constant.ReportSessionId, "SplashActivity", "onResume")))
EventUtils.onEvent(
"page_status",
Utils.obj2Str(ReportEntity(Constant.ReportSessionId, "SplashActivity", "onResume"))
)
MobclickAgent.onResume(this)
}
override fun onPause() {
super.onPause()
EventUtils.onEvent("page_status", Utils.obj2Str(ReportEntity(Constant.ReportSessionId, "SplashActivity", "onPause")))
EventUtils.onEvent(
"page_status",
Utils.obj2Str(ReportEntity(Constant.ReportSessionId, "SplashActivity", "onPause"))
)
MobclickAgent.onPause(this)
}
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import android.util.Log
import android.webkit.WebView
import androidx.multidex.MultiDex
import androidx.multidex.MultiDexApplication
import com.bx.adsdk.AdSdk
import com.tencent.bugly.crashreport.CrashReport
import com.umeng.commonsdk.UMConfigure
import com.umeng.socialize.PlatformConfig
......@@ -30,18 +31,19 @@ class BaseApplication : MultiDexApplication() {
super.onCreate()
//第一步初始化 application
AppliContext.init(this)
// Config.init(this)
// Config.init(this)
NetConfig.setBase_Url(NetConfig.Environment.PRODUCT)// TODO 上线之后提成成 NetConfig.Environment.PRODUCT
Constant.appLs = "a03d5320d905cf3b"//appls
AdManager.init(//TODO 替换id
Constant.appLs = "a03d5320d905cf3b"//applsq
AdManager.init(//替换id
this, ZXADConfig
.csjId("5113760")
.gdtId("1111127526")
// .bdId("ba584026")
// .signMob("5105", "9d597f774eb14956")
.signMob("6066", "f81de7f854836db4")
.ksId("533500009")
.ylbId("10000160")
.rsId("31140")
.Build()
);
//TODO Android 9及以上必须设置 (聚合快手时必须添加)
......@@ -78,8 +80,9 @@ class BaseApplication : MultiDexApplication() {
// ToponManager.init(this,isDebug)
//小满
// AdSdk.setDebug(isDebug)//打开日志
// AdSdk.init(this, "qmcgw-az-hdgj_eatxht", "lRu7697I4cHV913y")//初始化 需要在Applicaiton 中
AdSdk.setDebug(isDebug)//打开日志
AdSdk.init(this, "xygy-az-hdgj_depamr", "5R0K7vkJPsoE088c")//初始化 需要在Applicaiton 中
}
override fun attachBaseContext(base: Context?) {
......
......@@ -32,6 +32,25 @@ public class LandListEntity {
private int ownNum;
private int cloudSecond;
private int acceleratorsSecond;
public int getCloudSecond() {
return cloudSecond;
}
public void setCloudSecond(int cloudSecond) {
this.cloudSecond = cloudSecond;
}
public int getAcceleratorsSecond() {
return acceleratorsSecond;
}
public void setAcceleratorsSecond(int acceleratorsSecond) {
this.acceleratorsSecond = acceleratorsSecond;
}
public int getOwnNum() {
return ownNum;
}
......
......@@ -15,6 +15,15 @@ public class StatusEntity {
private int needCoin;
private int videoNum;
private int awardNum;//加速剂数量
public int getAwardNum() {
return awardNum;
}
public void setAwardNum(int awardNum) {
this.awardNum = awardNum;
}
public int getNeedCoin() {
return needCoin;
......
......@@ -347,7 +347,7 @@ object TurntableDialog : TurntableUtils(), TurntableContract.View {
btnTurntableLottery?.isEnabled = true
tvTurntableCount?.text = "剩余次数: ${mLotteryResult?.lotteryNum}"
RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_UPDATE_HOME_INFO)
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_UPDATE_HOME_INFO)
var type = mLotteryResult?.awardType
if (type != null) {
if (type != 6) {
......
PACKAGE_NAME=com.ym.xync
VERSION_CODE=4
VERSION_NAME=1.0.3
\ No newline at end of file
VERSION_CODE=5
VERSION_NAME=1.0.4
\ No newline at end of file
......@@ -6,7 +6,6 @@ buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
......@@ -25,6 +24,9 @@ allprojects {
maven {
url "http://47.97.184.214:8081/nexus/content/groups/public"
}
maven {
url "http://test.vlion.cn:8081/nexus/content/repositories/inland/"
}
}
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -59,7 +59,7 @@ repositories {
dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
api fileTree(include: ['*.aar'], dir: 'libs')
api 'androidx.appcompat:appcompat:1.1.0'
api 'androidx.appcompat:appcompat:1.2.0-alpha02'
api 'com.android.support:design:28.0.0'
api 'com.android.support:support-v4:28.0.0'
api 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72'
......@@ -91,6 +91,27 @@ dependencies {
api 'com.tencent.bugly:crashreport:latest.release'
api 'com.tencent.bugly:nativecrashreport:latest.release'
api('cn.vlion.inland:inlandmix:9.8.2') {
exclude group: 'cn.vlion.inland', module: 'inlandb'
exclude group: 'cn.vlion.inland', module: 'inlandg'
exclude group: 'cn.vlion.inland', module: 'inlands'
exclude group: 'cn.vlion.inland', module: 'inlandt'
exclude group: 'cn.vlion.inland', module: 'inlandtf'
exclude group: 'pl.droidsonroids.gif'
exclude group: 'cn.vlion.inland', module: 'inlandk'
exclude group: 'cn.vlion.inland', module: 'inlandimb'
exclude group: 'com.squareup.picasso'
exclude group: 'cn.vlion.inland', module: 'inlanddk'
exclude group: 'com.github.bumptech.glide'
exclude group: 'com.tuia'
exclude group: 'cn.vlion.inland', module: 'inlandhy'
exclude group: 'com.mintegral.msdk'
exclude group: 'cn.vlion.inlandsh'
}
api "com.bx:adsdk:1.3.3"
}
......
......@@ -18,6 +18,7 @@
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<permission android:name="android.permission.DELETE_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.READ_LOGS" />
......@@ -66,25 +67,6 @@
android:usesCleartextTraffic="true">
<!-- <activity-->
<!-- android:name="com.baidu.mobads.AppActivity"-->
<!-- android:configChanges="screenSize|keyboard|keyboardHidden|orientation"-->
<!-- android:theme="@android:style/Theme.Translucent.NoTitleBar" />-->
<!--<provider
android:name="com.baidu.mobads.openad.BdFileProvider"
android:authorities="${applicationId}.bd.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/bd_file_path" />
</provider>-->
<activity
android:name=".net.PermissionsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
......@@ -92,75 +74,6 @@
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--全屏广告,激励视频-->
<!--<activity
android:name="com.qq.e.ads.PortraitADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity
android:name="com.qq.e.ads.LandscapeADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="landscape" />-->
<!-- <uses-library-->
<!-- android:name="org.apache.http.legacy"-->
<!-- android:required="false" />-->
<!-- 声明SDK所需要的组件 -->
<!-- <service
android:name="com.qq.e.comm.DownloadService"
android:exported="false" />-->
<!-- 请开发者注意字母的大小写,ADActivity,而不是AdActivity -->
<!-- <activity-->
<!-- android:name="com.qq.e.ads.ADActivity"-->
<!-- android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />-->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<!--<provider
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>-->
<!-- <provider-->
<!-- android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"-->
<!-- android:authorities="${applicationId}.TTMultiProvider"-->
<!-- android:exported="false" />-->
<!--广告展示Activity -->
<!--<activity
android:name="com.sigmob.sdk.base.common.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.DeviceDefault" />
<provider
android:name="com.sigmob.sdk.SigmobXFileProvider"
android:authorities="${applicationId}.sigprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/sigmob_provider_paths" />
</provider>-->
<activity
android:name=".activity.WebViewActivity"
android:exported="true"
......@@ -206,153 +119,101 @@
</intent-filter>
</activity>
<activity
android:name=".activity.XiaoManActivity"
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="xiaoman"
android:scheme="luckyfarm" />
</intent-filter>
</activity>
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<!-- network type: china/network_sdk/pangle/AndroidManifest.xml-->
<provider
android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
android:authorities="${applicationId}.TTMultiProvider"
android:exported="false" />
<provider
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:name="com.baidu.mobads.openad.BdFileProvider"
android:authorities="${applicationId}.bd.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/anythink_bk_tt_file_path" />
android:resource="@xml/bd_file_path" />
</provider>
<!-- network type: china/network_sdk/gdt/AndroidManifest.xml-->
<service
android:name="com.qq.e.comm.DownloadService"
android:exported="false" />
<activity
android:name="com.qq.e.ads.ADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />
<!--全屏广告,激励视频-->
<activity
android:name="com.qq.e.ads.PortraitADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity
android:name="com.qq.e.ads.LandscapeADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="landscape" />
<!--&lt;!&ndash; <uses-permission android:name="android.permission.INTERNET" />-->
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />-->
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />-->
<!-- <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />-->
<!-- <uses-permission android:name="android.permission.GET_TASKS" />-->
<!-- <uses-permission android:name="android.permission.WAKE_LOCK" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
<!--<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
<!-- &lt;!&ndash; <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />&ndash;&gt;-->
<!-- &lt;!&ndash; <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />&ndash;&gt;-->
<!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />-->
<!-- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />&ndash;&gt;-->
<!-- network type: china/network_sdk/mintegral/AndroidManifest.xml-->
<!-- <activity-->
<!-- android:name="com.mintegral.msdk.activity.MTGCommonActivity"-->
<!-- android:configChanges="keyboard|orientation"-->
<!-- android:exported="false"-->
<!-- android:screenOrientation="portrait"-->
<!-- android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>-->
<!-- <receiver android:name="com.mintegral.msdk.click.AppReceiver">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.PACKAGE_ADDED" />-->
<!-- <data android:scheme="package" />-->
<!-- </intent-filter>-->
<!-- </receiver>-->
<!-- <service android:name="com.mintegral.msdk.shell.MTGService">-->
<!-- <intent-filter>-->
<!-- <action android:name="com.mintegral.msdk.download.action" />-->
<!-- </intent-filter>-->
<!-- </service>-->
<!-- <activity-->
<!-- android:name="com.mintegral.msdk.reward.player.MTGRewardVideoActivity"-->
<!-- android:configChanges="orientation|keyboardHidden|screenSize"-->
<!-- android:exported="false"-->
<!-- android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />-->
<!-- <activity-->
<!-- android:name="com.mintegral.msdk.interstitial.view.MTGInterstitialActivity"-->
<!-- android:configChanges="orientation|screenSize"-->
<!-- android:exported="false"-->
<!-- android:screenOrientation="portrait" />-->
<!-- <provider-->
<!-- android:name="com.mintegral.msdk.base.utils.MTGFileProvider"-->
<!-- android:authorities="${applicationId}.mtgFileProvider"-->
<!-- android:exported="false"-->
<!-- android:grantUriPermissions="true">-->
<!-- <meta-data-->
<!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
<!-- android:resource="@xml/anythink_bk_mtg_file_path" />-->
<!-- </provider>-->
<!-- network type: china/network_sdk/baidu/AndroidManifest.xml-->
<!-- 非信息广告必须添加 -->
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<!-- 声明SDK所需要的组件 -->
<service
android:name="com.qq.e.comm.DownloadService"
android:exported="false" />
<!-- 请开发者注意字母的大小写,ADActivity,而不是AdActivity -->
<activity
android:name="com.baidu.mobads.AppActivity"
android:configChanges="screenSize|keyboard|keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
android:name="com.qq.e.ads.ADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />
<provider
android:name="com.baidu.mobads.openad.BdFileProvider"
android:authorities="${applicationId}.bd.provider"
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/anythink_bk_baidu_file_path" />
android:resource="@xml/file_paths" />
</provider>
<!-- network type: china/network_sdk/sigmob/AndroidManifest.xml-->
<!-- targetSDKVersion >= 24时才需要添加这个provider。
provider的authorities属性的值为${applicationId}.sigprovider -->
<provider
android:name="com.sigmob.sdk.SigmobFileProvider"
android:authorities="${applicationId}.sigprovider"
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:exported="false"
android:grantUriPermissions="true"
tools:ignore="Instantiatable">
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/anythink_bk_sigmob_file_path" />
android:resource="@xml/file_paths" />
</provider>
<provider
android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
android:authorities="${applicationId}.TTMultiProvider"
android:exported="false" />
<!--广告展示Activity -->
<activity
android:name="com.sigmob.sdk.base.common.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.DeviceDefault" />
<provider
android:name="com.sigmob.sdk.SigmobXFileProvider"
android:authorities="${applicationId}.sigprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/sigmob_provider_paths" />
</provider>
<provider
android:name="com.wannuosili.sdk.ad.component.WNFileProvider"
android:authorities="${applicationId}.WNFileProvider"
......@@ -363,7 +224,25 @@
android:resource="@xml/wn_file_paths" />
</provider>
<provider
android:name="com.meishu.sdk.core.service.MeishuFileProvider"
android:authorities="${applicationId}.MeishuFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/meishu_file_path" />
</provider>
<meta-data
android:name="TZ_APP_KEY"
android:value="qwqwq381fa7970a045342b004c42d5e" />
<meta-data
android:name="TZ_APP_SECRET"
android:value="c5c1a932c4749cd1be1db53419c97457" />
<meta-data
android:name="TZ_APP_CHANNEL"
android:value="TZ-001" />
</application>
......
......@@ -591,4 +591,5 @@ public class Constant {
}
public static String ReportSessionId = "";
public static boolean isReportXiaoman = true;
}
......@@ -595,7 +595,7 @@ abstract class JavaInterface {
val data = Utils.str2Obj(str, NewsEntity::class.java) as NewsEntity?
if (data != null) {
JumpUtils.adJump(data,act)
JumpUtils.adJump(data, act)
}
}
......@@ -880,7 +880,7 @@ abstract class JavaInterface {
fun jumpWebActivity(json: String) {
act?.runOnUiThread(Runnable {
val newsEntity: NewsEntity = Utils.str2Obj(json, NewsEntity::class.java) as NewsEntity
JumpUtils.adJump(newsEntity,act)
JumpUtils.adJump(newsEntity, act)
/*JumpUtils.webH5Jump(
newsEntity.title,
newsEntity.url,
......@@ -910,7 +910,7 @@ abstract class JavaInterface {
@JavascriptInterface
fun h5Jump(h5: String) {
act?.finish()
JumpUtils.h5Jump("", h5, false,act)
JumpUtils.h5Jump("", h5, false, act)
// mWebView?.loadUrl(h5)
}
......@@ -920,16 +920,15 @@ abstract class JavaInterface {
*/
@JavascriptInterface
fun showDialog(waterDropCount: Int, type: Int) {
if (act == null) return
mWebView.context.runOnUiThread {
CenterDialog.showgetWaterDrop(
mWebView.context,
act,
type,
waterDropCount,
object : DialogInterface.OnCancelListener {
override fun onCancel(p0: DialogInterface?) {
mWebView.context.runOnUiThread {
mWebView?.loadUrl("javascript:onResume()")
}
DialogInterface.OnCancelListener {
mWebView.context.runOnUiThread {
mWebView?.loadUrl("javascript:onResume()")
}
},
mWebView
......
package com.ym.library.activity
import android.util.Log
import com.bx.adsdk.CampaignCallback
import com.bx.adsdk.CampaignFragment
import com.bytedance.sdk.openadsdk.*
import com.google.gson.Gson
import com.qq.e.ads.rewardvideo.RewardVideoAD
import com.qq.e.ads.rewardvideo.RewardVideoADListener
import com.qq.e.comm.managers.GDTADManager
import com.qq.e.comm.util.AdError
import com.umeng.analytics.MobclickAgent
import com.ym.library.Constant
import com.ym.library.R
import com.ym.library.module.ReportEntity
import com.ym.library.net.*
import com.ym.library.utils.EventUtils
import com.ym.library.utils.SettingPreference
import com.ym.library.utils.Utils
import kotlinx.android.synthetic.main.activity_xiaoman.*
class XiaoManActivity : BaseActivity() {
override fun layoutID(): Int = R.layout.activity_xiaoman
private var campaignFragment: CampaignFragment? = null
private var rewardVideoAD: RewardVideoAD? = null
override fun init() {
id_tv_title.text = intent.data?.getQueryParameter("title")
/**
* @param userId 用户id,必传,不能为空,不能为0
* @param placeId 资源位id:必传
* @param callback CampaignCallback 回调
*/
campaignFragment = CampaignFragment.newInstance(SettingPreference.getToken())
campaignFragment?.setPlaceId("2654")
campaignFragment?.setCallback(object : CampaignCallback() {
override fun showAd(params: String) {
super.showAd(params)
val bridgeBean: XiaoManEntity = Gson().fromJson(params, XiaoManEntity::class.java)
val adType: String = bridgeBean.adType.toString()
val pId: String = bridgeBean.pid.toString()
val requestId: String = bridgeBean.requestId.toString()
if (adType.equals("1")) {
showTTAd("5113760", pId, requestId)
} else {
showGDTAd("1111127526", pId, requestId)
}
}
})
// campaignFragment?.canGoBack()//webview 是否可以返回上一页
// campaignFragment?.goBack()//webview 返回上一页
supportFragmentManager.beginTransaction().add(R.id.id_activity_fragment_content, campaignFragment!!).commitAllowingStateLoss()
id_iv_back.setOnClickListener {
finish()
}
}
/**
* 穿山甲广告
*/
fun showTTAd(appId: String, pId: String, requestId: String) {
//强烈建议在应用对应的Application#onCreate()方法中调用,避免出现content为null的异常
TTAdSdk.init(
this@XiaoManActivity,
TTAdConfig.Builder()
.appId(appId)
.useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView
.appName(this@XiaoManActivity.getString(R.string.app_name))
.titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
.allowShowNotify(true) //是否允许sdk展示通知栏提示
.allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页
.debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
.directDownloadNetworkType(
TTAdConstant.NETWORK_STATE_WIFI,
TTAdConstant.NETWORK_STATE_3G
) //允许直接下载的网络状态集合
.supportMultiProcess(false) //是否支持多进程,true支持
//.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
.build()
)
val mTTAdNative = TTAdSdk.getAdManager().createAdNative(this@XiaoManActivity)
val adSlot = AdSlot.Builder()
.setCodeId(pId)
.setSupportDeepLink(true)
.setAdCount(2) //个性化模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可
.setExpressViewAcceptedSize(500f, 500f)
.setImageAcceptedSize(1080, 1920)
.setRewardName("金币") //奖励的名称
.setRewardAmount(0) //奖励的数量
//必传参数,表来标识应用侧唯一用户;若非服务器回调模式或不需sdk透传
//可设置为空字符串
.setUserID("")//userId
.setOrientation(TTAdConstant.VERTICAL) //设置期望视频播放的方向,为TTAdConstant.HORIZONTAL或TTAdConstant.VERTICAL
// .setMediaExtra("media_extra") //用户透传的信息,可不传
.build()
mTTAdNative.loadRewardVideoAd(adSlot, object : TTAdNative.RewardVideoAdListener {
override fun onError(code: Int, message: String) {
campaignFragment?.setVideoError(requestId)
}
//视频广告加载后的视频文件资源缓存到本地的回调
override fun onRewardVideoCached() {}
//视频广告素材加载到,如title,视频url等,不包括视频文件
override fun onRewardVideoAdLoad(ad: TTRewardVideoAd) {
ad.setRewardAdInteractionListener(object :
TTRewardVideoAd.RewardAdInteractionListener {
override fun onAdShow() {
campaignFragment?.setVideoLoad(requestId)
EventUtils.onEvent("XIAO_MAN_CSJ_SHOW","小满穿山甲广告展示")
}
override fun onAdVideoBarClick() {
EventUtils.onEvent("XIAO_MAN_CSJ_CLICK","小满穿山甲广告点击")
}
override fun onAdClose() {
EventUtils.onEvent("XIAO_MAN_CSJ_CLOSE_CLICK","小满穿山甲广告关闭点击")
campaignFragment?.setVideoClose(requestId)
}
override fun onVideoError() {
campaignFragment?.setVideoError(requestId)
}
override fun onVideoComplete() {
campaignFragment?.setVideoComplete(requestId)
}
override fun onRewardVerify(rewardVerify: Boolean, rewardAmount: Int, rewardName: String?) {}
override fun onSkippedVideo() {}
})
ad.setDownloadListener(object : TTAppDownloadListener {
override fun onIdle() {}
override fun onDownloadActive(totalBytes: Long, currBytes: Long, fileName: String, appName: String) {}
override fun onDownloadPaused(totalBytes: Long, currBytes: Long, fileName: String, appName: String) {}
override fun onDownloadFailed(totalBytes: Long, currBytes: Long, fileName: String, appName: String) {}
override fun onDownloadFinished(totalBytes: Long, fileName: String, appName: String) {}
override fun onInstalled(fileName: String, appName: String) {}
})
ad.showRewardVideoAd(this@XiaoManActivity)
}
})
}
/**
* 广点通广告
*/
fun showGDTAd(appID: String, pId: String, requestId: String) {
GDTADManager.getInstance().initWith(this@XiaoManActivity, requestId)
rewardVideoAD = RewardVideoAD(this, appID, pId, object : RewardVideoADListener {
override fun onADLoad() {
if (rewardVideoAD != null) rewardVideoAD?.showAD()
campaignFragment?.setVideoLoad(requestId)
}
override fun onVideoCached() {}
override fun onADShow() {
EventUtils.onEvent("XIAO_MAN_GDT_SHOW","小满广点通广告展示")
}
override fun onADExpose() {}
override fun onReward() {}
override fun onADClick() {
EventUtils.onEvent("XIAO_MAN_GDT_CLICK","小满广点通广告点击")
}
override fun onVideoComplete() {
campaignFragment?.setVideoComplete(requestId)
}
override fun onADClose() {
EventUtils.onEvent("XIAO_MAN_GDT_CLOSE_CLICK","小满广点通广告关闭点击")
campaignFragment?.setVideoClose(requestId)
}
override fun onError(adError: AdError) {
campaignFragment?.setVideoError(requestId)
}
})
rewardVideoAD?.loadAD()
}
override fun onResume() {
super.onResume()
EventUtils.onEvent("page_status", Utils.obj2Str(ReportEntity(Constant.ReportSessionId, "XiaoManActivity", "onResume")))
MobclickAgent.onResume(this)
}
override fun onPause() {
super.onPause()
EventUtils.onEvent("page_status", Utils.obj2Str(ReportEntity(Constant.ReportSessionId, "XiaoManActivity", "onPause")))
MobclickAgent.onPause(this)
}
class XiaoManEntity {
var adType: String? = ""
var requestId: String? = ""
var pid: String? = ""
}
/**
* 看视频上报
*/
fun videoClick() {
// ApiClient.userApi.videoReport().compose(
// RxSchedulers.observableIO2Main()).subscribe(object : BaseObserver<String>() {
// override fun onSuccess(result: String?) {}
// override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {}
// })
}
fun videoShow(){
}
fun videoCloseClick(){
}
}
\ No newline at end of file
......@@ -23,7 +23,7 @@ import com.ym.library.utils.EventUtils
import com.ym.library.utils.LogHelper
object BDADUtils {
private const val TAG = "AdManager"
//开屏
fun loadSplashAd(newsEntity: NewsEntity, activity: Activity, container: ViewGroup, zxadListener: ZXADSplashListener?, skipView: TextView?,zxadCallback: ZXADCallback) {
// 广告展现前先调用sdk初始化方法,可以有效缩短广告第一次展现所需时间
......@@ -35,18 +35,18 @@ object BDADUtils {
// 增加lp页面关闭回调,不需要该回调的继续使用原来接口就可以
val listener: SplashLpCloseListener = object : SplashLpCloseListener {
override fun onLpClosed() {
Toast.makeText(activity, "lp页面关闭", Toast.LENGTH_SHORT).show()
// Toast.makeText(activity, "lp页面关闭", Toast.LENGTH_SHORT).show()
zxadListener?.onAdSkip()
Log.d(TAG,"百度 开屏 onLpClosed")
}
override fun onAdDismissed() {
Log.i("RSplashActivity", "onAdDismissed")
zxadListener?.onAdSkip()
Log.d(TAG,"百度 开屏 onAdDismissed")
}
override fun onAdFailed(arg0: String) {
Log.i("RSplashActivity", arg0)
Log.d(TAG,"百度 开屏 onAdFailed" + arg0)
zxadListener?.onAdSkip()
zxadCallback.onAdFail()
......@@ -54,12 +54,12 @@ object BDADUtils {
}
override fun onAdPresent() {
Log.i("RSplashActivity", "onAdPresent")
Log.d(TAG,"百度 开屏 onAdPresent")
container.setVisibility(View.GONE)
}
override fun onAdClick() {
Log.i("RSplashActivity", "onAdClick")
Log.d(TAG,"百度 开屏 onAdClick")
// 设置开屏可接受点击时,该回调可用
zxadListener?.onAdClicked(newsEntity)
......@@ -128,9 +128,9 @@ object BDADUtils {
) {
// 激励视屏产品可以选择是否使用SurfaceView进行渲染视频
var mRewardVideoAd = RewardVideoAd(
var mRewardVideoAd = RewardVideoAd(
activity,
newsEntity.codeId, object :RewardVideoAd.RewardVideoAdListener{
newsEntity.codeId, object :RewardVideoAd.RewardVideoAdListener{
override fun onAdFailed(p0: String?) {
callback.onAdFail()
listener.onError()
......@@ -166,14 +166,14 @@ object BDADUtils {
val handler = object : Handler() {
override fun handleMessage(msg: Message?) {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
if (mRewardVideoAd != null) {
mRewardVideoAd.show()
removeCallbacksAndMessages(null)
} else{
sendEmptyMessageDelayed(1,20)
}
}
}
......@@ -182,70 +182,6 @@ object BDADUtils {
}
//激励视频
fun loadReward2VideoAd(
activity: Activity,
newsEntity: NewsEntity,
listener: ZXADVideoListener,
callback: ZXADCallback
) {
// 激励视屏产品可以选择是否使用SurfaceView进行渲染视频
var mRewardVideoAd = RewardVideoAd(
activity,
newsEntity.codeId, object :RewardVideoAd.RewardVideoAdListener{
override fun onAdFailed(p0: String?) {
callback.onAdFail()
}
override fun playCompletion() {
}
override fun onAdShow() {
// AdUpload.onAdImpression(newsEntity)
}
override fun onAdClick() {
// AdUpload.onAdClick(newsEntity)
}
override fun onAdClose(p0: Float) {
}
override fun onVideoDownloadSuccess() {
}
override fun onVideoDownloadFailed() {
}
}, true)
mRewardVideoAd.load()
listener.onLoadVideoAd(ZXADRewardVideo(mRewardVideoAd))
// val handler = object : Handler() {
// override fun handleMessage(msg: Message?) {
// if (mRewardVideoAd != null) {
// mRewardVideoAd.show()
// removeCallbacksAndMessages(null)
// } else{
// sendEmptyMessageDelayed(1,50)
// }
//
// }
//
// }
// handler.sendEmptyMessageDelayed(1,50)
}
//信息流 原生
fun loadFeedNativeAd(activity:Activity,newsEntity: NewsEntity,zxadCallback: ZXADCallback){
......
......@@ -7,6 +7,7 @@ import android.util.Log
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.TextView
import cn.vlion.ad.core.ADManager
import com.baidu.mobads.AdView
import com.baidu.mobads.rewardvideo.RewardVideoAd
import com.bytedance.sdk.openadsdk.TTAdConfig
......@@ -24,6 +25,7 @@ import com.tz.sdk.core.engine.ADEngineConfig
import com.wannuosili.sdk.WNAdConfig
import com.wannuosili.sdk.WNAdSdk
import com.ym.admodule.listener.ZXADDrawListener
import com.ym.admodule.rs.RSADUtils
import com.ym.library.bd.BDADUtils
import com.ym.library.csj.TTADUtils
import com.ym.library.gdt.GDTAdUtils
......@@ -111,6 +113,7 @@ object AdManager {
//.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
.build()
)
}
......@@ -128,33 +131,43 @@ object AdManager {
//TODO 珊瑚 2.1
ADEngine.getInstance(context)
.start(
ADEngineConfig.Builder(context)
.allowAutoNetworkSwitch(true) //是否允许切换至流量继续下载广告,默认true
.log(true) //日志输出,默认false
.verbose(true) //日志输出唠叨模式(信息更详细),默认false
.forTest(false) //是否连接测试环境(如果上游支持),默认false
.build()
)
//TODO 珊瑚广告 需要珊瑚配置后才能调用
// TMSDKContext.setTMSDKLogEnable(true)
// TMSDKContext.init(context, object : AbsTMSConfig() {
// override fun getServerAddress(): String {
// return TCP_SERVER
// }
//
// })
// TMSDKContext.setAutoConnectionSwitch(context,true)
//
// //初始化广告和下载回调
// //初始化广告和下载回调
// ShanHuAD.init(
// TMSDKContext.getApplicationContext(),
// H5Browser(),
// TMSDKContext.getCoinProductId()
// )
/* ADEngine.getInstance(context)
.start(
ADEngineConfig.Builder(context)
.allowAutoNetworkSwitch(true) //是否允许切换至流量继续下载广告,默认true
.log(true) //日志输出,默认false
.verbose(true) //日志输出唠叨模式(信息更详细),默认false
.forTest(false) //是否连接测试环境(如果上游支持),默认false
.build(),object :IADEngineState {
override fun onIdle() {}
override fun onFailed(code: Int, msg: String?) {
Log.e(TAG, "ADEngine failed: code=${code},msg=${msg}")
}
override fun onStarting() {}
override fun onStarted() {
Log.d(TAG, "珊瑚 ADEngine started")
}
}
)
//TODO 珊瑚广告 需要珊瑚配置后才能调用
TMSDKContext.setTMSDKLogEnable(true)
TMSDKContext.init(context, object : AbsTMSConfig() {
override fun getServerAddress(): String {
return TCP_SERVER
}
})
TMSDKContext.setAutoConnectionSwitch(context,true)
//初始化广告和下载回调
//初始化广告和下载回调
ShanHuAD.init(
TMSDKContext.getApplicationContext(),
H5Browser(),
TMSDKContext.getCoinProductId()
)*/
//SignMob广告 初始化
......@@ -179,16 +192,23 @@ object AdManager {
}
if(!TextUtils.isEmpty(adconfig.KS_APP_ID)) {
//快手初始化
KsAdSDK.init(
context, SdkConfig.Builder()
com.kwad.sdk.api.KsAdSDK.init(
context, com.kwad.sdk.api.SdkConfig.Builder()
.appId(adconfig.KS_APP_ID) // 测试aapId,请联系快⼿平台申请正式AppId,必填
.appName("幸运农场") // 测试appName,请填写您应⽤的名称,
.appName("") // 测试appName,请填写您应⽤的名称,
.showNotification(true) // 是否展示下载通知栏
.debug(adconfig.IS_DEUG) // 是否开启sdk 调试⽇志 可选
.build()
);
}
//瑞狮
if (!TextUtils.isEmpty(adconfig.RS_APP_ID)) {
ADManager.getInstance()
.init(context,adconfig.RS_APP_ID)
.setException(true)
}
}
......@@ -342,14 +362,14 @@ object AdManager {
fun loadRewardVideoAd(slotName: String, mActivity: Activity, listener: ZXADVideoListener) {
if (AdCache.rewardList.get(slotName)==null||AdCache.rewardList.get(slotName)?.size!! <=0) {
Log.e("huang","请求服务器 获取广告数据")
Log.e(TAG,"请求服务器 获取广告数据")
ZXADClient.adApi.getAd(slotName).compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<List<NewsEntity>>() {
override fun onSuccess(result: List<NewsEntity>) {
if (result != null && result.isNotEmpty()) {
AdCache.rewardList.put(slotName,result)
Log.e("huang","请求服务器 获取广告数据 放入缓存中"+result.size )
Log.e(TAG,"请求服务器 获取广告数据 放入缓存中"+result.size )
loadCacheRewardVideoAd(mActivity, listener, result,slotName)
} else {
listener.onFail()
......@@ -377,7 +397,7 @@ object AdManager {
result: List<NewsEntity>,
slotName: String
) {
Log.d("huang", "RewardVideo size = result:" + result.size)
Log.d(TAG, "RewardVideo size = result:" + result.size)
var arrayList = result as ArrayList
if(arrayList.size==0){
return
......@@ -392,14 +412,14 @@ object AdManager {
var callback: ZXADCallback = object : ZXADCallback {
override fun onAdSuccess() {
Log.d("huang", "onAdSuccess")
Log.d(TAG, "onAdSuccess")
result.remove(newsEntity)
AdCache.rewardList.put(slotName,result)
Utils.showToast(mActivity,"看完视频即可获得奖励")
}
override fun onAdFail() {
Log.d("huang", "onAdFail totalEntity.size" + totalEntity.size)
Log.d(TAG, "onAdFail totalEntity.size" + totalEntity.size)
if (totalEntity.size > 0) {
var newsEntitys = totalEntity[0]
......@@ -483,7 +503,6 @@ object AdManager {
}
//加载 DrawFeedVideoAd
fun loadDrawFeedVideoAd(slotName: String, mActivity: Activity, listener: ZXADDrawListener) {
ZXADClient.adApi.getAd(slotName).compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<List<NewsEntity>>() {
......@@ -506,7 +525,6 @@ object AdManager {
//个性化 draw视频
fun loadExpressDrawFeedAd(slotName: String, mActivity: Activity, listener: ZXADDrawListener) {
ZXADClient.adApi.getAd(slotName).compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<List<NewsEntity>>() {
......@@ -613,47 +631,29 @@ object AdManager {
) {
when (newsEntity.adPlatform) {
ZXADType.PLANTFORM_AD_GDT -> {
GDTAdUtils.loadSplashAd(
newsEntity,
activity,
container,
zxadListener,
skipview,
callback
)
GDTAdUtils.loadSplashAd(newsEntity, activity, container, zxadListener, skipview, callback)
}
ZXADType.PLANTFORM_AD_TT -> {
TTADUtils.loadSplashAd(newsEntity, activity, container, zxadListener, callback)
}
ZXADType.PLANTFORM_SH_AD -> {
SHADUtils.loadSplashAd(
newsEntity,
activity,
container,
zxadListener,
skipview,
callback
)
ZXADType.PLANTFORM_AD_SH -> {
SHADUtils.loadSplashAd(newsEntity, activity, container, zxadListener, skipview, callback)
}
//百度广告
ZXADType.PLANTFORM_AD_BD -> {
BDADUtils.loadSplashAd(
newsEntity,
activity,
container,
zxadListener,
skipview,
callback
)
BDADUtils.loadSplashAd(newsEntity, activity, container, zxadListener, skipview, callback)
}
//快手
ZXADType.PLANTFORM_AD_KUS -> {
KSADUtils.loadSplashAd(newsEntity,
activity,
container,
zxadListener,
skipview,
callback)
KSADUtils.loadSplashAd(newsEntity, activity, container, zxadListener, skipview, callback)
}
//快手
ZXADType.PLANTFORM_AD_SIGNMOB -> {
SMADUtils.loadSplashAd(newsEntity, activity, container, zxadListener, skipview, callback)
}
//瑞狮
ZXADType.PLANTFORM_AD_RS -> {
RSADUtils.loadSplashAd(newsEntity, activity, container, zxadListener, skipview, callback)
}
}
......@@ -719,6 +719,10 @@ object AdManager {
// ZXADType.PLANTFORM_AD_BD ->{
// BDADUtils.loadFeedAd(activity,newsEntity,zxadModelConfig,zxadExpressListener,container,callback)
// }
//瑞狮
ZXADType.PLANTFORM_AD_RS ->{
RSADUtils.loadFeedAd(activity,newsEntity,zxadModelConfig,zxadExpressListener,container,callback)
}
}
}
......@@ -763,7 +767,7 @@ object AdManager {
listener: ZXADVideoListener,
callback: ZXADCallback
) {
Log.e("huang","entity.adPlatform: "+entity.adPlatform)
Log.e(TAG,"entity.adPlatform: "+entity.adPlatform)
when (entity.adPlatform) {
ZXADType.PLANTFORM_AD_GDT -> {
GDTAdUtils.loadRewardVideoAd(activity, entity, listener, callback)
......@@ -771,7 +775,7 @@ object AdManager {
ZXADType.PLANTFORM_AD_TT -> {
TTADUtils.loadRewardVideoAd(activity, entity, listener, callback)
}
ZXADType.PLANTFORM_SH_AD -> {
ZXADType.PLANTFORM_AD_SH -> {
SHADUtils.loadRewardVideoAd(activity, entity, listener, callback)
}
ZXADType.PLANTFORM_AD_SIGNMOB -> {
......@@ -788,39 +792,14 @@ object AdManager {
ZXADType.PLANTFORM_AD_KUS -> {
KSADUtils.loadRewardVideoAd(activity, entity, listener, callback)
}
}
}
//激励视频广告
private fun loadReward2VideoAd(
activity: Activity,
entity: NewsEntity,
listener: ZXADVideoListener,
callback: ZXADCallback
) {
when (entity.adPlatform) {
ZXADType.PLANTFORM_AD_GDT -> {
GDTAdUtils.loadReward2VideoAd(activity, entity, listener, callback)
}
ZXADType.PLANTFORM_AD_TT -> {
TTADUtils.loadReward2VideoAd(activity, entity, listener, callback)
}
ZXADType.PLANTFORM_SH_AD -> {
SHADUtils.loadRewardVideoAd(activity, entity, listener, callback)
}
ZXADType.PLANTFORM_AD_SIGNMOB -> {
SMADUtils.loadRewardVideoAd(activity, entity, listener, callback)
}
ZXADType.PLANTFORM_AD_BD -> {
BDADUtils.loadReward2VideoAd(activity, entity, listener, callback)
//瑞狮
ZXADType.PLANTFORM_AD_RS -> {
RSADUtils.loadRewardVideoAd(activity, entity, listener, callback)
}
}
}
//TODO 全屏视频广告 只有穿山甲 所以不需要重试
private fun loadScreenVideoAd(
entity: NewsEntity,
......
......@@ -24,6 +24,9 @@ object ZXADConfig {
//快手 appId
var KS_APP_ID = ""
//瑞狮 appId
var RS_APP_ID = ""
//是否使用 TextureView
var useTextureView = false
......@@ -101,6 +104,10 @@ object ZXADConfig {
KS_APP_ID = appid
return zxadConfig
}
fun rsId(appid:String): ZXADConfig {
RS_APP_ID = appid
return zxadConfig
}
fun useTextureView(useTextureView: Boolean): ZXADConfig {
ZXADConfig.useTextureView = useTextureView
return zxadConfig
......
......@@ -7,29 +7,26 @@ object ZXADType {
// 1. 穿山甲 2.广点通 3. 快手 4. 搜狗 5.科大讯飞
/**
* 新
* 1001 chuanshanjia 穿山甲 1
1002 kuaishou 快手 1
1003 guangdiantong 广点通 1
1004 youliangbao 优量宝 1
1002 kuaishou 快手 1
1003 guangdiantong 广点通 1
1004 youliangbao 优量宝 1
*/
const val PLANTFORM_AD_TT = "chuanshanjia" //穿山甲
const val PLANTFORM_AD_GDT = "guangdiantong" //广点通
const val PLANTFORM_AD_KUS = "kuaishou" //快手
const val PLANTFORM_SH_YLB = "youliangbao"//优量宝
const val PLANTFORM_AD_SIGNMOB = "sigmob" //sign Mob
const val PLANTFORM_AD_BD = "baidu" //百度
const val PLANTFORM_AD_SH = "shanhu"//珊瑚
const val PLANTFORM_AD_RS = "ruishi"//瑞狮
const val PLANTFORM_AD_SG = 4 //搜狗
const val PLANTFORM_AD_KDXF = 5 //科大讯飞
const val PLANTFORM_AD_SIGNMOB = "signMob" //sign Mob
const val PLANTFORM_AD_BD = "baidu" //百度
const val PLANTFORM_SH_AD = "shanhu"//珊瑚
// =====================================================================stop
......@@ -74,5 +71,4 @@ object ZXADType {
const val AD_ID_SEL = "1104"
const val AD_ID_KUS = "1105"
}
\ No newline at end of file
......@@ -31,7 +31,7 @@ import com.ym.library.widget.DislikeDialog
* 穿山甲广告
*/
object TTADUtils {
private val TAG = "AdManager"
//TODO 插屏广告
fun loadInteractionAd(
......@@ -82,6 +82,7 @@ object TTADUtils {
ttNativeExpressAd.setExpressInteractionListener(object :ExpressAdInteractionListener{
override fun onAdClicked(p0: View?, p1: Int) {
// AdUpload.onAdClick(newsEntity)
}
override fun onAdShow(p0: View?, p1: Int) {
......@@ -110,6 +111,7 @@ object TTADUtils {
}
// TODO 开屏 重要
fun loadSplashAd(
data: NewsEntity,
activity: Activity,
......@@ -127,12 +129,13 @@ object TTADUtils {
override fun onError(i: Int, s: String) {
zxadListener.onErrorResult(s)
zxadCallback.onAdFail()
Log.d(TAG,"穿山甲 开屏 onError s=" +s)
}
override fun onTimeout() {
zxadListener.onTimeout()
zxadCallback.onAdFail()
Log.d(TAG,"穿山甲 开屏 onTimeout")
}
override fun onSplashAdLoad(ad: TTSplashAd) {
......@@ -145,23 +148,30 @@ object TTADUtils {
override fun onAdClicked(view: View, i: Int) {
// AdUpload.onAdClick(data)
zxadListener.onAdClicked(data)
EventUtils.apiClient(data?.clk_tracking[0])
EventUtils.onEventUM("ad_splash_click","穿山甲开屏")
Log.d(TAG,"穿山甲 开屏 onAdClicked")
EventUtils.onEventClick(data)
EventUtils.onEventUM("ad_splash_click","穿山甲 开屏广告")
}
override fun onAdShow(view: View, i: Int) {
zxadListener.onAdShow(data)
// AdUpload.onAdImpression(data)
EventUtils.apiClient(data?.imp_tracking[0])
EventUtils.onEventUM("ad_splash_show","穿山甲开屏")
// EventUtils.apiClient(data?.imp_tracking[0])
Log.d(TAG,"穿山甲 开屏 onAdShow")
EventUtils.onEventShow(data)
EventUtils.onEventUM("ad_splash_show","穿山甲 开屏广告")
}
override fun onAdSkip() {
zxadListener.onAdSkip()
Log.d(TAG,"穿山甲 开屏 onAdSkip")
}
override fun onAdTimeOver() {
zxadListener.onAdTimeOver()
Log.d(TAG,"穿山甲 开屏 onAdTimeOver")
}
})
......@@ -267,15 +277,19 @@ object TTADUtils {
override fun onAdClicked(view: View, type: Int) {
zxadExpressListener.onAdClicked(entity)
// AdUpload.onAdClick(entity)
EventUtils.apiClient(entity?.clk_tracking[0])
EventUtils.onEventUM("ad_feed_click","穿山甲大图")
Log.d(TAG,"穿山甲 大图 onAdClicked")
EventUtils.onEventClick(entity)
EventUtils.onEventUM("ad_feed_click","穿山甲 大图广告")
}
override fun onAdShow(view: View, type: Int) {
zxadExpressListener.onAdShow(entity)
callback.onAdSuccess()
EventUtils.apiClient(entity?.imp_tracking[0])
EventUtils.onEventUM("ad_feed_show","穿山甲大图")
Log.d(TAG,"穿山甲 大图 onAdShow")
EventUtils.onEventShow(entity)
EventUtils.onEventUM("ad_feed_show","穿山甲 大图广告")
}
override fun onRenderFail(
......@@ -283,10 +297,7 @@ object TTADUtils {
msg: String,
code: Int
) {
Log.e(
"ExpressView",
"render fail:" + (System.currentTimeMillis() - startTime)
)
Log.e(TAG, "穿山甲 大图 render fail:" + (System.currentTimeMillis() - startTime))
// TToast.show(mContext, "$msg code:$code")
......@@ -302,8 +313,8 @@ object TTADUtils {
height: Float
) {
Log.e(
"ExpressView",
"render suc:" + (System.currentTimeMillis() - startTime)
TAG,
"窗扇加 大图 render suc:" + (System.currentTimeMillis() - startTime)
)
//返回view的宽高 单位 dp
// TToast.show(mContext, "渲染成功")
......@@ -442,7 +453,7 @@ object TTADUtils {
// .setExpressViewAcceptedSize(500f, 500f)
.setImageAcceptedSize(1080, 1920)
.setRewardName("金币") //奖励的名称
.setRewardAmount(3) //奖励的数量
.setRewardAmount(3) //奖励的数量
//必传参数,表来标识应用侧唯一用户;若非服务器回调模式或不需sdk透传
//可设置为空字符串
.setUserID("")//userId
......@@ -470,144 +481,19 @@ object TTADUtils {
mttRewardVideoAd.setRewardAdInteractionListener(object :
RewardAdInteractionListener {
override fun onAdShow() {
EventUtils.apiClient(entity?.imp_tracking[0])
listener.setRewardAdInteractionListener()
EventUtils.onEventUM("ad_reward_video_show","穿山甲激励视频")
// AdUpload.onAdImpression(entity)
}
override fun onAdVideoBarClick() {
EventUtils.apiClient(entity?.clk_tracking[0])
listener.onAdVideoBarClick(entity)
EventUtils.onEventUM("ad_reward_video_click","穿山甲激励视频")
}
override fun onAdClose() {
listener.onAdClose()
}
override fun onVideoError() {
listener.onVideoError()
}
override fun onVideoComplete() {
listener.onVideoComplete()
}
override fun onRewardVerify(
rewardVerify: Boolean,
rewardAmount: Int,
rewardName: String
) {
listener.onRewardVerify()
}
override fun onSkippedVideo() {
listener.onSkippedVideo()
}
})
mttRewardVideoAd.setDownloadListener(object : TTAppDownloadListener {
override fun onIdle() {}
override fun onDownloadActive(
totalBytes: Long,
currBytes: Long,
fileName: String,
appName: String
) {
// AdUpload.onAdClick(entity)
}
override fun onDownloadPaused(
totalBytes: Long,
currBytes: Long,
fileName: String,
appName: String
) {
}
override fun onDownloadFailed(
totalBytes: Long,
currBytes: Long,
fileName: String,
appName: String
) {
}
override fun onDownloadFinished(
totalBytes: Long,
fileName: String,
appName: String
) {
}
override fun onInstalled(
fileName: String,
appName: String
) {
}
})
Log.e("HUANG","穿山甲激励视频耗时"+ (System.currentTimeMillis()-startTime)+"")
listener.onRewardVideoAdLoad(entity)
mttRewardVideoAd.showRewardVideoAd(activity)
}
})
}
//TODO 加载 激励视频
fun loadReward2VideoAd(
activity: Activity,
entity: NewsEntity,
listener: ZXADVideoListener,
callback: ZXADCallback
) {
var startTime = System.currentTimeMillis()
val mTTAdNative =
TTAdSdk.getAdManager().createAdNative(activity) //baseContext建议为activity
val adSlot = AdSlot.Builder()
.setCodeId(entity.codeId)
.setSupportDeepLink(true)
.setAdCount(2) //个性化模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可
// .setExpressViewAcceptedSize(500f, 500f)
.setImageAcceptedSize(1080, 1920)
.setRewardName("金币") //奖励的名称
.setRewardAmount(3) //奖励的数量
//必传参数,表来标识应用侧唯一用户;若非服务器回调模式或不需sdk透传
//可设置为空字符串
.setUserID("")//userId
.setOrientation(TTAdConstant.VERTICAL) //设置期望视频播放的方向,为TTAdConstant.HORIZONTAL或TTAdConstant.VERTICAL
.setMediaExtra("media_extra") //用户透传的信息,可不传
.build()
mTTAdNative.loadRewardVideoAd(adSlot, object : RewardVideoAdListener {
override fun onError(code: Int, message: String) {
listener.onError()
callback.onAdFail()
}
//视频广告加载后的视频文件资源缓存到本地的回调
override fun onRewardVideoCached() {
listener.onRewardVideoCached()
}
//视频广告素材加载到,如title,视频url等,不包括视频文件
override fun onRewardVideoAdLoad(ad: TTRewardVideoAd) {
var mttRewardVideoAd = ad
mttRewardVideoAd.setRewardAdInteractionListener(object :
RewardAdInteractionListener {
override fun onAdShow() {
listener.setRewardAdInteractionListener()
EventUtils.onEventShow(entity)
EventUtils.onEventUM("ad_reward_video_show","穿山甲 激励视频广告")
// AdUpload.onAdImpression(entity)
}
override fun onAdVideoBarClick() {
listener.onAdVideoBarClick(entity)
EventUtils.onEventClick(entity)
EventUtils.onEventUM("ad_reward_video_click","穿山甲 激励视频广告")
}
override fun onAdClose() {
......@@ -633,7 +519,6 @@ object TTADUtils {
override fun onSkippedVideo() {
listener.onSkippedVideo()
}
})
mttRewardVideoAd.setDownloadListener(object : TTAppDownloadListener {
......@@ -679,21 +564,13 @@ object TTADUtils {
}
})
Log.e("HUANG","穿山甲激励视频耗时"+ (System.currentTimeMillis()-startTime)+"")
Log.e(TAG,"穿山甲激励视频耗时"+ (System.currentTimeMillis()-startTime)+"")
listener.onRewardVideoAdLoad(entity)
// mttRewardVideoAd.showRewardVideoAd(activity)
val zxadRewardVideo = ZXADRewardVideo(ad)
listener.onLoadVideoAd(zxadRewardVideo)
mttRewardVideoAd.showRewardVideoAd(activity)
}
})
}
//信息流 原生
fun loadFeedNativeAd(activity:Activity,newsEntity: NewsEntity,zxadCallback: ZXADCallback){
......@@ -709,12 +586,12 @@ object TTADUtils {
zxadNative.loadAd(object :ADListener.NativeNetListener{
override fun onAdFailed(error: AdError?) {
Log.e("HUANG",error.toString())
Log.e(TAG,error.toString())
zxadCallback.onAdFail()
}
override fun onAdLoaded(nativeData: NativeDataAD?) {
Log.e("HUANG",nativeData.toString()+nativeData?.adIconUrl)
Log.e(TAG,nativeData.toString()+nativeData?.adIconUrl)
zxadCallback.onAdSuccess()
}
......@@ -754,7 +631,8 @@ object TTADUtils {
listener.onAdShow()
// AdUpload.onAdImpression(entity)
EventUtils.apiClient(entity?.imp_tracking[0])
EventUtils.onEventShow(entity)
EventUtils.onEventUM("ad_reward_video_show","穿山甲 激励视频广告")
}
override fun onAdVideoBarClick() {
......@@ -787,7 +665,9 @@ object TTADUtils {
override fun onDownloadActive(p0: Long, p1: Long, p2: String?, p3: String?) {
// AdUpload.onAdClick(entity)
EventUtils.apiClient(entity?.clk_tracking[0])
EventUtils.onEventClick(entity)
EventUtils.onEventUM("ad_reward_video_click","穿山甲 激励视频广告")
}
override fun onDownloadFinished(p0: Long, p1: String?, p2: String?) {
......@@ -895,7 +775,6 @@ object TTADUtils {
}
}
////绑定广告行为
......
......@@ -26,20 +26,19 @@ import com.ym.library.listener.ZXADExpressListener
import com.ym.library.listener.ZXADSplashListener
import com.ym.library.listener.ZXADVideoListener
import com.ym.library.module.NewsEntity
import com.ym.library.net.AdUpload
import com.ym.library.utils.EventUtils
import com.ym.library.utils.EventUtils.apiClient
import com.ym.library.utils.EventUtils.onEventClick
import com.ym.library.utils.EventUtils.onEventUM
object GDTAdUtils {
private val TAG = "AdManager"
/**
* 加载开屏广告
*/
fun loadSplashAd(newsEntity: NewsEntity, activity: Activity, container: ViewGroup, zxadListener: ZXADSplashListener, skipview:TextView?,
zxadCallback: ZXADCallback){
zxadCallback: ZXADCallback){
val splashAD = SplashAD(activity, container, newsEntity.codeId, object : SplashADListener {
override fun onADExposure() {
}
......@@ -52,8 +51,9 @@ object GDTAdUtils {
override fun onADLoaded(p0: Long) {
// AdUpload.onAdImpression(newsEntity)
zxadCallback.onAdSuccess()
apiClient(newsEntity?.imp_tracking[0])
onEventUM("ad_splash_show","广点通开屏")
Log.d(TAG,"广点通 开屏显示")
EventUtils.onEventShow(newsEntity)
onEventUM("ad_splash_show","广点通 开屏广告")
}
override fun onNoAD(p0: AdError?) {
......@@ -64,9 +64,11 @@ object GDTAdUtils {
}
override fun onADClicked() {
Log.d(TAG,"广点通 onADClicked")
// AdUpload.onAdClick(newsEntity)
apiClient(newsEntity?.clk_tracking[0])
onEventUM("ad_splash_click","广点通开屏")
EventUtils.onEventClick(newsEntity)
onEventUM("ad_feed_click","广点通 开屏广告")
}
override fun onADTick(p0: Long) {
......@@ -126,9 +128,9 @@ object GDTAdUtils {
var option = builder.build()
option = builder.setAutoPlayMuted(true)
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI)
.setDetailPageMuted(true)
.build()
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI)
.setDetailPageMuted(true)
.build()
iad.setVideoOption(option)
iad.setMinVideoDuration(10)
......@@ -147,12 +149,12 @@ object GDTAdUtils {
//TODO 加载信息流广告 原生模板
fun loadFeedAd(
activity: Activity,
newsEntity: NewsEntity,
zxadModelConfig: ZXADSizeConfig,
listener: ZXADExpressListener,
container: FrameLayout,
callback:ZXADCallback
activity: Activity,
newsEntity: NewsEntity,
zxadModelConfig: ZXADSizeConfig,
listener: ZXADExpressListener,
container: FrameLayout,
callback:ZXADCallback
) {
var nativeExpressAD = NativeExpressAD(activity, ADSize(ADSize.FULL_WIDTH, zxadModelConfig.height), newsEntity.codeId, object :NativeExpressAD.NativeExpressADListener{
......@@ -165,7 +167,7 @@ object GDTAdUtils {
// nativeExpressADView.destroy();
// }
// 3.返回数据后,SDK 会返回可以用于展示 NativeExpressADView 列表
var nativeExpressADView = adList?.get(0);
var nativeExpressADView = adList?.get(0);
// if (nativeExpressADView?.getBoundData()?.getAdPatternType() == AdPatternType.NATIVE_VIDEO) {
// nativeExpressADView?.setMediaListener(mediaListener);
// }
......@@ -201,14 +203,19 @@ object GDTAdUtils {
override fun onADClicked(p0: NativeExpressADView?) {
// AdUpload.onAdClick(newsEntity)
EventUtils.apiClient(newsEntity?.clk_tracking[0])
onEventUM("ad_feed_click","广点通大图");
Log.d(TAG,"广点通 大图 onADClicked")
EventUtils.onEventClick(newsEntity)
onEventUM("ad_feed_click","广点通 大图广告")
}
override fun onRenderSuccess(p0: NativeExpressADView?) {
// AdUpload.onAdImpression(newsEntity)
EventUtils.apiClient(newsEntity?.imp_tracking[0])
onEventUM("ad_feed_show","广点通大图");
Log.d(TAG,"广点通 大图 onRenderSuccess")
EventUtils.onEventShow(newsEntity)
onEventUM("ad_feed_show","广点通 大图广告")
}
})
......@@ -258,15 +265,16 @@ object GDTAdUtils {
) {
var adLoaded = false
var rewardVideoAD = RewardVideoAD(activity, entity.codeId, object : RewardVideoADListener {
var rewardVideoAD = RewardVideoAD(activity, entity.codeId, object : RewardVideoADListener {
override fun onADExpose() {
// listener.onAdShow()
}
override fun onADClick() {
apiClient(entity?.clk_tracking[0])
listener.onAdVideoBarClick(entity)
onEventUM("ad_reward_video_click","广点通激励视频")
Log.d(TAG,"广点通 激励 onADClick")
onEventClick(entity)
onEventUM("ad_reward_video_click","广点通 激励视频广告")
}
override fun onVideoCached() {
......@@ -283,11 +291,11 @@ object GDTAdUtils {
}
//如果这里
//如果这里
override fun onADLoad() {
adLoaded = true
listener.onRewardVideoAdLoad()
}
adLoaded = true
listener.onRewardVideoAdLoad()
}
override fun onVideoComplete() {
listener.onVideoComplete()
......@@ -297,17 +305,17 @@ object GDTAdUtils {
override fun onError(p0: AdError?) {
listener.onVideoError()
callback.onAdFail()
Log.d("huang", "adPlatform = " +entity.adPlatform + "----errorMsg= " + p0?.errorMsg)
}
override fun onADShow() {
// apiClient(entity?.imp_tracking[0])
callback.onAdSuccess()
listener.onAdShow()
Log.d(TAG,"广点通 激励 onADShow")
// AdUpload.onAdImpression(entity)
apiClient(entity.imp_tracking[0])
onEventUM("ad_reward_video_show","广点通激励视频")
EventUtils.onEventShow(entity)
onEventUM("ad_reward_video_show","广点通 激励视频广告")
}
}) // 有声播放
......@@ -318,7 +326,8 @@ object GDTAdUtils {
var startTime = System.currentTimeMillis()
val handler = object : Handler() {
override fun handleMessage(msg: Message?) {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
if (adLoaded) { //广告展示检查1:广告成功加载,此处也可以使用videoCached来实现视频预加载完成后再展示激励视频广告的逻辑
if (!rewardVideoAD.hasShown()) { //广告展示检查2:当前广告数据还没有展示过
val delta: Long = 1000 //建议给广告过期时间加个buffer,单位ms,这里demo采用1000ms的buffer
......@@ -327,7 +336,7 @@ object GDTAdUtils {
rewardVideoAD.showAD()
var endTime = System.currentTimeMillis()
Log.e("HUANG","广点通激励视频耗时"+ (System.currentTimeMillis()-startTime)+"")
Log.e(TAG,"广点通激励视频耗时"+ (System.currentTimeMillis()-startTime)+"")
} else {
......@@ -352,88 +361,6 @@ object GDTAdUtils {
handler.sendEmptyMessageDelayed(1,20)
}
fun loadReward2VideoAd(
activity: Activity,
entity: NewsEntity,
listener: ZXADVideoListener,
callback: ZXADCallback
) {
var rewardVideoAD = RewardVideoAD(activity, entity.codeId, object : RewardVideoADListener {
override fun onADExpose() {
}
override fun onADClick() {
// AdUpload.onAdClick(entity)
}
override fun onVideoCached() {
}
override fun onReward() {
}
override fun onADClose() {
}
//如果这里
override fun onADLoad() {
}
override fun onVideoComplete() {
}
override fun onError(p0: AdError?) {
callback.onAdFail()
}
override fun onADShow() {
// AdUpload.onAdImpression(entity)
}
}) // 有声播放
rewardVideoAD.loadAD()
listener.onLoadVideoAd(ZXADRewardVideo(rewardVideoAD))
// val handler = object : Handler() {
// override fun handleMessage(msg: Message?) {
// if (adLoaded) { //广告展示检查1:广告成功加载,此处也可以使用videoCached来实现视频预加载完成后再展示激励视频广告的逻辑
// if (!rewardVideoAD.hasShown()) { //广告展示检查2:当前广告数据还没有展示过
// val delta: Long = 1000 //建议给广告过期时间加个buffer,单位ms,这里demo采用1000ms的buffer
// //广告展示检查3:展示广告前判断广告数据未过期
// if (SystemClock.elapsedRealtime() < rewardVideoAD.expireTimestamp - delta) {
// rewardVideoAD.showAD()
// var endTime = System.currentTimeMillis()
//
// } else {
//// Toast.makeText(activity, "激励视频广告已过期,请再次请求广告后进行广告展示!", Toast.LENGTH_LONG).show()
// listener.onError()
// }
// removeCallbacksAndMessages(null)
//
// } else {
//// Toast.makeText(activity, "此条广告已经展示过,请再次请求广告后进行广告展示!", Toast.LENGTH_LONG).show()
// listener.onError()
// removeCallbacksAndMessages(null)
// }
// } else {
//// Toast.makeText(activity, "成功加载广告后再进行广告展示!", Toast.LENGTH_LONG).show()
// listener.onError()
// sendEmptyMessageDelayed(1,50)
// }
// }
//
// }
// handler.sendEmptyMessageDelayed(1,50)
}
//TODO 全屏视频广告 暂时没有
......
......@@ -47,17 +47,20 @@ import java.util.List;
* Craeted by 2020/10/19
*/
public class KSADUtils {
private static final String TAG = "AdManager";
private static KsRewardVideoAd mRewardVideoAd;
private static FrameLayout mNativeAdContainer;
private static NewsEntity entity;
private static Activity mActivity;
//原生 信息流
public static void loadFeedNativeAd(Activity activity,
NewsEntity newsEntity,
ZXADSizeConfig zxadModelConfig,
ZXADExpressListener zxadExpressListener,
FrameLayout container,
ZXADCallback zxadCallback) {
final FrameLayout container,
final ZXADCallback zxadCallback) {
mNativeAdContainer = container;
entity = newsEntity;
mActivity = activity;
......@@ -86,8 +89,8 @@ public class KSADUtils {
// 1.请求开屏广告,获取广告对象,KsFullScreenVideoAd
public static void loadSplashAd(NewsEntity newsEntity, Activity activity, ViewGroup container, ZXADSplashListener zxadListener,
TextView skipView, ZXADCallback zxadCallback) {
public static void loadSplashAd(final NewsEntity newsEntity, final Activity activity, final ViewGroup container, final ZXADSplashListener zxadListener,
TextView skipView, final ZXADCallback zxadCallback) {
KsScene scene = new KsScene.Builder(Long.parseLong(newsEntity.getCodeId())).build(); // 此为测试posId,请联系快手平台申请正式posId
KsAdSDK.getLoadManager().loadSplashScreenAd(scene, new KsLoadManager.SplashScreenAdListener() {
@Override
......@@ -95,13 +98,13 @@ public class KSADUtils {
container.setVisibility(View.GONE);
// showTips("开屏广告请求失败" + code + msg);
zxadCallback.onAdFail();
zxadListener.onErrorResult("");
LogUtils.e("huang: " +code+" "+ msg);
zxadListener.onFailResult("");
LogUtils.e(TAG, "onError: code=" + code + "---- msg=" + msg);
}
@Override
public void onSplashScreenAdLoad(@NonNull KsSplashScreenAd splashScreenAd) {
LogUtils.e("huang: onSplashScreenAdLoad " +splashScreenAd+" ");
LogUtils.e(TAG, "onSplashScreenAdLoad " + splashScreenAd + " ");
zxadCallback.onAdSuccess();
container.setVisibility(View.VISIBLE);
......@@ -113,11 +116,9 @@ public class KSADUtils {
// showTips("开屏广告点击");
//onAdClick 会吊起h5或者应用商店。 不直接跳转,等返回后再跳转。
// mGotoMainActivity = true;
if (newsEntity != null && newsEntity.getClk_tracking().size() > 0) {
EventUtils.INSTANCE.apiClient(newsEntity.getClk_tracking().get(0));
EventUtils.INSTANCE.onEventUM("ad_splash_click","快手开屏");
}
zxadListener.onAdClicked(newsEntity);
EventUtils.INSTANCE.onEventClick(newsEntity);
EventUtils.INSTANCE.onEventUM("ad_splash_click", "快手 开屏广告");
}
@Override
......@@ -125,7 +126,7 @@ public class KSADUtils {
// showTips("开屏广告显示错误 " + code + " extra " + extra);
// gotoMainActivity();
zxadListener.onErrorResult(extra);
LogUtils.e("huang: onAdShowError" +code+" "+ extra);
LogUtils.e(TAG, "onAdShowError" + code + " " + extra);
}
......@@ -133,20 +134,18 @@ public class KSADUtils {
public void onAdShowEnd() {
// showTips("开屏广告显示结束");
// zxadListener.onSplashAdLoad();
LogUtils.e("huang: onAdShowEnd");
LogUtils.e(TAG, " onAdShowEnd");
zxadListener.onAdTimeOver();
}
@Override
public void onAdShowStart() {
// showTips("开屏广告显示开始");
zxadListener.onAdShow(newsEntity);
if (newsEntity != null && newsEntity.getImp_tracking().size() > 0) {
EventUtils.INSTANCE.apiClient(newsEntity.getImp_tracking().get(0));
EventUtils.INSTANCE.onEventUM("ad_splash_show","快手开屏");
}
LogUtils.e("huang: onAdShowStart");
LogUtils.e(TAG, " onAdShowStart");
EventUtils.INSTANCE.onEventShow(newsEntity);
EventUtils.INSTANCE.onEventUM("ad_splash_show", "快手 开屏广告");
}
......@@ -154,14 +153,14 @@ public class KSADUtils {
public void onSkippedAd() {
// showTips("用户跳过开屏广告");
zxadListener.onAdSkip();
LogUtils.e("huang: onSkippedAd");
LogUtils.e(TAG, " onSkippedAd");
}
});
if (!activity.isFinishing()) {
// ((FrameLayout)container).addView(fragment.getView());
((BaseActivity)activity).getSupportFragmentManager().beginTransaction()
.replace(container.getId(),fragment)
((BaseActivity) activity).getSupportFragmentManager().beginTransaction()
.replace(container.getId(), fragment)
.commitAllowingStateLoss();
}
}
......@@ -171,9 +170,9 @@ public class KSADUtils {
// 竖屏播放(默认)
// 展示激励视频广告,通过步骤1获取的KsRewardVideoAd对象,判断缓存有效,则设置监听并展示
public static void loadRewardVideoAd(Activity activity, NewsEntity entity, ZXADVideoListener listener, ZXADCallback callback) {
public static void loadRewardVideoAd(final Activity activity, final NewsEntity entity, final ZXADVideoListener listener, final ZXADCallback callback) {
Log.e("huang", "快手 loadRewardVideoAd " + entity.getCodeId());
Log.e(TAG, "快手 loadRewardVideoAd " + entity.getCodeId());
KsScene scene = new KsScene.Builder(Long.parseLong(entity.getCodeId())).build(); // 此为测试posId,请联系快手平台申请正式posId
......@@ -183,7 +182,7 @@ public class KSADUtils {
// ToastUtil.showToast(mContext, "激励视频广告请求失败" + code + msg);
listener.onVideoError();
callback.onAdFail();
Log.e("huang", "快手 code:" + code + "msg " + msg);
Log.e(TAG, "快手 code:" + code + "msg " + msg);
}
@Override
......@@ -198,7 +197,7 @@ public class KSADUtils {
} else {
listener.onVideoError();
Log.e("huang", "快手 onRewardVideoAdLoad :");
Log.e(TAG, "快手 onRewardVideoAdLoad :");
}
......@@ -207,14 +206,14 @@ public class KSADUtils {
});
long startTime = System.currentTimeMillis();
final long startTime = System.currentTimeMillis();
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("huang",(System.currentTimeMillis()-startTime) + "");
if(System.currentTimeMillis()-startTime>7000){
Log.d(TAG, (System.currentTimeMillis() - startTime) + "");
if (System.currentTimeMillis() - startTime > 7000) {
listener.onVideoError();
removeCallbacksAndMessages(null);
return;
......@@ -227,10 +226,9 @@ public class KSADUtils {
public void onAdClicked() {
// ToastUtil.showToast(mContext, "激励视频广告点击");
listener.onAdVideoBarClick(entity);
if (entity.getClk_tracking() != null && entity.getClk_tracking().size() > 0) {
EventUtils.INSTANCE.apiClient(entity.getClk_tracking().get(0));
EventUtils.INSTANCE.onEventUM("ad_reward_video_click","快手激励视频");
}
EventUtils.INSTANCE.onEventClick(entity);
EventUtils.INSTANCE.onEventUM("ad_reward_video_click", "快手 激励视频广告");
}
@Override
......@@ -243,7 +241,7 @@ public class KSADUtils {
public void onVideoPlayError(int code, int extra) {
// ToastUtil.showToast(mContext, "激励视频广告播放出错");
listener.onVideoError();
Log.e("huang", "快手 onVideoPlayError code:" + code + "msg " + extra);
Log.e(TAG, "快手 onVideoPlayError code:" + code + "msg " + extra);
}
......@@ -252,25 +250,24 @@ public class KSADUtils {
// ToastUtil.showToast(mContext, "激励视频广告播放完成");
listener.onVideoComplete();
// listener.onAdClose();
Log.e("huang", "快手 onVideoPlayEnd");
Log.e(TAG, "快手 onVideoPlayEnd");
}
@Override
public void onVideoPlayStart() {
listener.onAdShow();
Log.e("huang", "快手 onVideoPlayStart");
if (entity.getImp_tracking() != null && entity.getImp_tracking().size() > 0) {
EventUtils.INSTANCE.apiClient(entity.getImp_tracking().get(0));
EventUtils.INSTANCE.onEventUM("ad_reward_video_show","快手激励视频");
}
Log.e(TAG, "快手 onVideoPlayStart");
EventUtils.INSTANCE.onEventShow(entity);
EventUtils.INSTANCE.onEventUM("ad_reward_video_show", "快手 激励视频广告");
// ToastUtil.showToast(mContext, "激励视频广告播放开始");
Log.e(TAG, "快手激励视频耗时" + (System.currentTimeMillis() - startTime) + "");
}
@Override
public void onRewardVerify() {
listener.onRewardVerify();
// ToastUtil.showToast(mContext, "激励视频广告获取激励");
Log.e("huang", "快手 onRewardVerify");
Log.e(TAG, "快手 onRewardVerify");
}
});
mRewardVideoAd.showRewardVideoAd(activity, null);
......@@ -283,7 +280,7 @@ public class KSADUtils {
};
handler.sendEmptyMessageDelayed(1,20);
handler.sendEmptyMessageDelayed(1, 20);
}
// 横屏播放
......@@ -295,7 +292,6 @@ public class KSADUtils {
}
/**
* 加载自渲染View
*/
......@@ -356,9 +352,9 @@ public class KSADUtils {
@Override
public void onAdClicked(View view, KsNativeAd ad) {
if (ad != null) {
EventUtils.INSTANCE.apiClient(entity.getClk_tracking().get(0));
// Toast.makeText(mContext, "广告" + ad.getAppName() + "被点击", Toast.LENGTH_SHORT).show();
EventUtils.INSTANCE.onEventUM("ad_feed_click","快手大图");
EventUtils.INSTANCE.onEventClick(entity);
EventUtils.INSTANCE.onEventUM("ad_feed_click", "快手 大图广告");
}
}
......@@ -366,8 +362,8 @@ public class KSADUtils {
public void onAdShow(KsNativeAd ad) {
if (ad != null) {
// Toast.makeText(mContext, "广告" + ad.getAppName() + "展示", Toast.LENGTH_SHORT).show();
EventUtils.INSTANCE.apiClient(entity.getImp_tracking().get(0));
EventUtils.INSTANCE.onEventUM("ad_feed_show","快手大图");
EventUtils.INSTANCE.onEventShow(entity);
EventUtils.INSTANCE.onEventUM("ad_feed_show", "快手 大图广告");
}
}
});
......
package com.ym.admodule.rs
import android.app.Activity
import android.os.Handler
import android.os.Message
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.TextView
import cn.vlion.ad.core.Config
import cn.vlion.ad.moudle.natives.NativeManager
import cn.vlion.ad.moudle.natives.model.NativeFeedsData
import cn.vlion.ad.moudle.splash.SplashManager
import cn.vlion.ad.moudle.video.VideoManager
import com.ym.library.config.ZXADCallback
import com.ym.library.config.ZXADSizeConfig
import com.ym.library.listener.ZXADExpressListener
import com.ym.library.listener.ZXADSplashListener
import com.ym.library.listener.ZXADVideoListener
import com.ym.library.module.NewsEntity
import com.ym.library.utils.EventUtils
import com.ym.library.utils.EventUtils.onEventClick
import com.ym.library.utils.EventUtils.onEventShow
import com.ym.library.utils.EventUtils.onEventUM
import show.vion.cn.vlion_ad_inter.splash.SplashViewListener
import show.vion.cn.vlion_ad_inter.video.VideoViewListener
import show.vion.cn.vlion_ad_inter.vlionnative.NativeListener
/**
*Craeted by ${junqi.li}
*Craeted by 2020/10/26
* http://wiki.vlion.cn/pages/viewpage.action?pageId=22578184#id-%E8%9E%8D%E5%90%88AndroidSDK%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3-%E5%AF%BC%E5%85%A5SDK%E4%BE%9D%E8%B5%96%E7%9A%84%E5%8C%85
* 瑞狮
*/
object RSADUtils {
private val TAG = "AdManager"
//TODO 开屏
fun loadSplashAd(
newsEntity: NewsEntity,
activity: Activity,
container: ViewGroup,
zxadListener: ZXADSplashListener,
skipview: TextView?,
zxadCallback: ZXADCallback
) {
SplashManager.getInstance().setImageAcceptedSize(1080, 1920)
SplashManager.getInstance().setAutoJumpToTargetWhenShowFailed(true)
SplashManager.getInstance().setSplashViewContainer(container)
SplashManager.getInstance().setSkip_ad(skipview)
//8863364436303842842593 813395663
SplashManager.getInstance().showSplash(
activity,
newsEntity.codeId,
object : SplashViewListener {
override fun onRequestSuccess(adId: String, viewWidth: Int, viewHeight: Int) {
zxadCallback.onAdSuccess()
zxadListener.onSuccessResult()
Log.e(TAG, "瑞狮 开屏onRequestSuccess: adId:$adId,$viewWidth,$viewHeight")
// if (viewWidth > 0 && viewHeight > 0) {
// splashAdContainer.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
// splashAdContainer.getLayoutParams().height = ScreenUtil.getScreenWidth(SplashActivity.this) * viewHeight / viewWidth;
// }
// else {
// splashAdContainer.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
// splashAdContainer.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
// }
}
override fun onRequestFailed(adId: String, code: Int, errorMsg: String) {
Log.e(TAG, "瑞狮 开屏onRequestFailed: adId:$adId,$code,$errorMsg")
zxadListener.onErrorResult(errorMsg + "")
zxadCallback.onAdFail()
}
override fun onShowSuccess(adId: String) {
Log.e(TAG, "瑞狮 开屏onShowSuccess: adId:$adId")
container.setVisibility(View.VISIBLE)
onEventShow(newsEntity)
onEventUM("ad_splash_show", "瑞狮 开屏广告")
}
override fun onShowFailed(adId: String, code: Int, msg: String) {
Log.e(TAG, "瑞狮 开屏onShowFailed: adId:$adId,$code,$msg")
zxadListener.onErrorResult(msg + "")
container.setVisibility(View.GONE)
}
override fun onSplashClicked(adId: String) {
Log.e(TAG, "瑞狮 开屏onSplashClicked: adId:$adId")
zxadListener.onAdClicked(newsEntity)
onEventClick(newsEntity)
onEventUM("ad_splash_click", "瑞狮 开屏广告")
}
override fun onSplashClosed(adId: String) {
Log.e(TAG, "瑞狮 开屏onSplashClosed: adId:$adId")
zxadListener.onAdSkip()
}
})
}
//TODO 原生
fun loadFeedAd(
activity: Activity,
newsEntity: NewsEntity,
zxadModelConfig: ZXADSizeConfig,
zxadExpressListener: ZXADExpressListener,
container: FrameLayout,
callback: ZXADCallback
) {
var nativeManager = NativeManager.initNative()
.setImageAcceptedSize(container.getWidth(), 0) //增加父布局
// .setNativeContainer(nativeLayout)
//7030020348049331
//913395440
.requestFeeds(activity, newsEntity.codeId, object : NativeListener<NativeFeedsData?> {
override fun onRequestSuccess(adId: String, data: NativeFeedsData?) {
// nativeLayout.setVisibility(View.VISIBLE);
Log.e(TAG, "瑞狮 大图广告 数据获取成功 adId:$adId")
if (data == null) return
container.visibility = View.VISIBLE
val view = data.nativeView
if (null != view) {
if (view.parent != null) {
val parent =
view.parent as ViewGroup
parent?.removeView(view)
}
container.removeAllViews()
container.addView(view)
data.onExposured()
callback.onAdSuccess()
}
}
override fun onShowSuccess(adid: String) {
container.visibility = View.VISIBLE
Log.e(TAG, "瑞狮大图广告 onShowSuccess: $adid")
onEventShow(newsEntity)
onEventUM("ad_feed_show", "瑞狮 大图广告")
}
override fun onShowFailed(adId: String, code: Int, msg: String) {
Log.e(TAG, "瑞狮大图广告 onShowFailed :$adId++code=$code++msg=$msg")
container.visibility = View.GONE
}
override fun onClick(adid: String) {
Log.e(TAG, "瑞狮大图广告 onClick:$adid")
onEventClick(newsEntity)
onEventUM("ad_feed_click", "瑞狮 大图广告")
}
override fun onExposure(adid: String) {
Log.e(TAG, "瑞狮大图广告 onExposure:$adid")
}
override fun onRequestFailed(adId: String, code: Int, message: String) {
Log.e(TAG, "瑞狮大图广告 数据加载失败 : code = $code , message = $message,adId:$adId")
container.visibility = View.GONE
callback.onAdFail()
}
})
}
//TODO 激励视频 在activity的onResume()、onPause()、onDestroy()分别调用
fun loadRewardVideoAd(
activity: Activity,
entity: NewsEntity,
listener: ZXADVideoListener,
callback: ZXADCallback
) {
var startTime = System.currentTimeMillis()
var adLoaded = false
//视频的填充适配类型
VideoManager.getInstance().setAdScalingModel(Config.AD_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING)
VideoManager.getInstance().setVideoOrientation(Config.AD_VERTIVAL_SCREEN_DISPLAY)
//视频的尺寸
VideoManager.getInstance().setImageAcceptedSize(1080, 1920)
//传入期望个性化模板广告的大小,单位dp。激励视频场景只需设置大于0即可 (必传的)
VideoManager.getInstance().setExpressViewAcceptedSize(6, 6)
VideoManager.getInstance().getVLionVideoView(
activity,
entity.codeId,
object : VideoViewListener {
override fun onLoadVideo(adId: String) {
Log.e(TAG, "onLoadVideo:缓存成功,可以展示 adId=$adId")
// if (VideoManager.getInstance().isReady) {
//展示广告
// adLoaded = true
// Log.e(TAG, "瑞狮 激励视频耗时" + (System.currentTimeMillis() - startTime) + "")
// VideoManager.getInstance().showVideo();
// }
}
override fun onVideoPlayStart(adId: String) {
Log.e(TAG, "onVideoPlayStart:adId=$adId")
callback.onAdSuccess()
listener.setRewardAdInteractionListener()
onEventShow(entity)
onEventUM("ad_reward_video_show", "瑞狮 激励视频广告")
}
override fun onVideoPlayFailed(adId: String, code: Int, msg: String) {
Log.e(TAG, "onVideoPlayFailed:adId=" + adId + "code=" + code + "msg=" + msg)
listener.onError()
}
override fun onVideoClosed(adId: String) {
Log.e(TAG, "onVideoClosed:adId=$adId")
listener.onAdClose()
}
override fun onVideoClicked(adId: String) {
Log.e(TAG, "onVideoClicked:adId=$adId")
listener.onAdVideoBarClick(entity)
onEventClick(entity)
onEventUM("ad_reward_video_click", "瑞狮 激励视频广告")
}
override fun onVideoFinish(adId: String) {
Log.e(TAG, "onVideoFinish:adId=$adId")
}
override fun onRewardVerify(adId: String) {
Log.e(TAG, "onRewardVerify:adId=$adId")
}
//广告请求失败
override fun onRequestFailed(adId: String, code: Int, errorMsg: String) {
Log.e(
TAG,
"onRequestFailed:adId=" + adId + "code=" + code + "errorMsg=" + errorMsg
)
listener.onError()
callback.onAdFail()
}
})
val handler = object : Handler() {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
Log.d(TAG, (System.currentTimeMillis() - startTime).toString() + "瑞狮")
if (System.currentTimeMillis() - startTime > 7000) {
listener.onVideoError()
removeCallbacksAndMessages(null)
return
}
if (!adLoaded) { //广告展示检查1:广告成功加载,
sendEmptyMessageDelayed(1, 20)
if (VideoManager.getInstance().isReady) {
Log.e(TAG, "播放视频wxw")
VideoManager.getInstance().showVideo();
removeCallbacksAndMessages(null)
}
} else {
removeCallbacksAndMessages(null)
}
}
}
if(!adLoaded){
handler.sendEmptyMessageDelayed(1, 20)
}
}
}
\ No newline at end of file
......@@ -13,6 +13,10 @@ import com.tz.sdk.core.ad.ADEvent;
import com.tz.sdk.core.ad.ADSource;
import com.tz.sdk.core.ad.ADType;
import com.tz.sdk.core.loader.ADLoader;
import com.ym.library.config.ZXADCallback;
import com.ym.library.listener.ZXADVideoListener;
import com.ym.library.module.NewsEntity;
import com.ym.library.utils.EventUtils;
import java.util.HashMap;
import java.util.List;
......@@ -22,10 +26,23 @@ import java.util.List;
* Created by wanghl on 2020/6/18
*/
public final class CoralRewardVideo extends CoralBase {
private String TAG = "AdManager";
private NewsEntity data;
private ZXADVideoListener listener;
private ZXADCallback callback;
public CoralRewardVideo(Context context, int taskType) {
super(context, taskType);
}
public CoralRewardVideo build(NewsEntity data,ZXADVideoListener listener,
ZXADCallback callback) {
this.data = data;
this.listener = listener;
this.callback = callback;
return this;
}
@Override
public void pull() {
super.pull();
......@@ -46,8 +63,13 @@ public final class CoralRewardVideo extends CoralBase {
public void onAdLoaded(List<CoralAD> adList) {
if (adList != null && adList.size() > 0) {
whenAdLoaded(adList.get(0));
callback.onAdSuccess();
listener.onSuccess();
Log.d(TAG,"珊瑚 激励 onAdLoaded");
} else {
whenAdError("视频类(" + mTaskType + ")广告返回数量0");
callback.onAdFail();
Log.d(TAG,"珊瑚 激励视频类(" + mTaskType + ")广告返回数量0");
whenAdError("珊瑚 激励视频类(" + mTaskType + ")广告返回数量0");
}
}
......@@ -58,17 +80,30 @@ public final class CoralRewardVideo extends CoralBase {
Log.e("CoralRewardVideo", adError.toString());
}
whenAdError(adError.toString());
callback.onAdFail();
listener.onError();
listener.onFail();
Log.d(TAG,"珊瑚 激励 onAdFailed" + adError.toString());
}
@Override
public boolean onAdShow(@Nullable CoralAD ad) {
whenAdShow();
listener.onAdShow();
EventUtils.INSTANCE.onEventShow(data);
EventUtils.INSTANCE.onEventUM("ad_reward_video_show","珊瑚 激励视频广告");
Log.d(TAG,"珊瑚 激励 onAdShow");
return super.onAdShow(ad);
}
@Override
public boolean onAdClicked(@Nullable CoralAD ad) {
whenAdClicked();
listener.onAdVideoBarClick(data);
EventUtils.INSTANCE.onEventClick(data);
EventUtils.INSTANCE.onEventUM("ad_reward_video_click","珊瑚 激励视频广告");
Log.d(TAG,"珊瑚 激励 onAdClicked");
return super.onAdClicked(ad);
}
......@@ -103,6 +138,8 @@ public final class CoralRewardVideo extends CoralBase {
@Override
public boolean onVideoClosed(CoralAD coralAD, String s) {
listener.onAdClose();
Log.d(TAG,"珊瑚 激励 onVideoClosed");
return super.onVideoClosed(coralAD, s);
}
});
......
......@@ -86,6 +86,7 @@ public final class CoralSplashImage extends CoralBase {
public boolean onAdClicked(@Nullable CoralAD ad) {
whenAdClicked();
// return super.onAdClicked(ad);
mISplashImageListener.onAdClicked();
return true;
}
......@@ -169,5 +170,10 @@ public final class CoralSplashImage extends CoralBase {
* 倒计时结束
*/
void onTimesUp();
/**
* 倒计时结束
*/
void onAdClicked();
}
}
......@@ -2,46 +2,63 @@ package com.ym.library.sh
import android.app.Activity
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import com.tencent.ep.shanhuad.adpublic.adbuilder.RewardVideo
import com.tencent.ep.shanhuad.adpublic.models.AdID
import com.ym.admodule.listener.ZXADDrawListener
import com.ym.library.R
import com.ym.library.config.ZXADCallback
import com.ym.library.listener.ZXADSplashListener
import com.ym.library.listener.ZXADVideoListener
import com.ym.library.module.NewsEntity
import com.ym.library.net.AdUpload
import com.ym.library.utils.EventUtils
import com.ym.library.utils.EventUtils.onEventClick
import com.ym.library.utils.EventUtils.onEventShow
object SHADUtils {
private val TAG = "AdManager"
//开屏
fun loadSplashAd(newsEntity:NewsEntity,activity: Activity, container: ViewGroup, zxadListener: ZXADSplashListener?,
skipView: TextView?,zxadCallback: ZXADCallback) {
fun loadSplashAd(
newsEntity: NewsEntity,
activity: Activity,
container: ViewGroup,
zxadListener: ZXADSplashListener?,
skipView: TextView?,
zxadCallback: ZXADCallback
) {
CoralSplashImage(activity, 125)
.container(container)
.skip(skipView)
.listen(object : CoralSplashImage.ISplashImageListener {
override fun onAdError() {
zxadListener?.onErrorResult("广告拉取失败");
zxadCallback.onAdFail()
zxadListener?.onTimeout()
override fun onAdError() {
Log.d(TAG, "珊瑚 开屏 onAdError")
zxadListener?.onErrorResult("广告拉取失败");
zxadCallback.onAdFail()
zxadListener?.onTimeout()
}
override fun onAdClicked() {
Log.d(TAG, "珊瑚 开屏 onAdClicked")
onEventClick(newsEntity)
EventUtils.onEventUM("ad_splash_click", "珊瑚 开屏广告")
}
override fun onAdShow() {
Log.d(TAG, "珊瑚 开屏 onAdShow")
zxadListener?.onAdShow(newsEntity)
zxadCallback.onAdSuccess()
skipView?.visibility = View.VISIBLE
onEventShow(newsEntity)
EventUtils.onEventUM("ad_splash_show", "珊瑚 开屏广告")
}
override fun onTimeTick(msLeft: Long) {
skipView?.text = "跳过:" + msLeft / 1000
if(msLeft<=1000){
if (msLeft <= 1000) {
zxadListener?.onAdSkip()
}
}
......@@ -91,9 +108,9 @@ object SHADUtils {
//
// }, newsEntity.codeId?.toInt()?.let { AdID(it, 720, 1080) }, container, skipView)
//
// skipView?.setOnClickListener {
// zxadListener?.onAdSkip()
// }
skipView?.setOnClickListener {
zxadListener?.onAdSkip()
}
}
......@@ -105,8 +122,8 @@ object SHADUtils {
callback: ZXADCallback
) {
CoralRewardVideo(activity, 104 ).pull()
// CoralRewardVideo(activity, 104 ).pull()
CoralRewardVideo(activity, 104).build(entity, listener, callback).pull()
// ADLoader(activity)[ADType.REWARD_VIDEO]
// .from(ADSource.CORAL)
// .count(1)
......@@ -218,7 +235,7 @@ object SHADUtils {
}
//视频流 带广告
fun loadSHFeedSpecialVideoAd(activity: Activity,i:Int) {
fun loadSHFeedSpecialVideoAd(activity: Activity, i: Int) {
CoralVideoFeed(activity, 138).container(i).pull()
}
}
\ No newline at end of file
package com.ym.library.sm
import android.app.Activity
import android.os.Handler
import android.os.Message
import android.util.Log
import android.view.ViewGroup
import android.widget.TextView
import com.sigmob.windad.Splash.WindSplashAD
import com.sigmob.windad.Splash.WindSplashADListener
import com.sigmob.windad.Splash.WindSplashAdRequest
import com.sigmob.windad.WindAdError
import com.sigmob.windad.WindAds
import com.sigmob.windad.fullscreenvideo.WindFullScreenAdRequest
......@@ -11,57 +19,129 @@ import com.sigmob.windad.rewardedVideo.WindRewardInfo
import com.sigmob.windad.rewardedVideo.WindRewardedVideoAd
import com.sigmob.windad.rewardedVideo.WindRewardedVideoAdListener
import com.ym.library.config.ZXADCallback
import com.ym.library.listener.ZXADSplashListener
import com.ym.library.listener.ZXADVideoListener
import com.ym.library.module.NewsEntity
import com.ym.library.net.AdUpload
import com.ym.library.utils.EventUtils
import com.ym.library.utils.EventUtils.onEventClick
import com.ym.library.utils.EventUtils.onEventShow
import com.ym.library.utils.EventUtils.onEventUM
import com.ym.library.utils.SettingPreference
object SMADUtils {
private val TAG = "AdManager"
//开屏
fun loadSplashAd(
newsEntity: NewsEntity, activity: Activity, container: ViewGroup,
zxadListener: ZXADSplashListener, skipview: TextView?,
zxadCallback: ZXADCallback
) {
val splashAdRequest = WindSplashAdRequest(newsEntity?.codeId, "", null)
/**
* 广告结束,广告内容是否自动隐藏。
* 若开屏和应用共用Activity,建议false。
* 开屏是单独Activity ,建议true。
*/
splashAdRequest.isDisableAutoHideAd = true
/**
* 广告允许最大等待返回时间
*/
splashAdRequest.fetchDelay = 3
/**
* 全屏开屏展示
*/
var mWindSplashAD =
WindSplashAD(activity, container, splashAdRequest, object : WindSplashADListener {
override fun onSplashAdSuccessPresentScreen() {
Log.d(TAG, "Sigmob 开屏 onSplashAdSuccessPresentScreen")
EventUtils.onEventShow(newsEntity)
onEventUM("ad_splash_show", "Sigmob 开屏广告")
zxadListener.onAdShow(newsEntity)
zxadCallback.onAdSuccess()
}
override fun onSplashAdClicked() {
Log.d(TAG, "Sigmob 开屏 onSplashAdClicked")
zxadListener.onAdClicked(newsEntity)
EventUtils.onEventClick(newsEntity)
onEventUM("ad_splash_click", "Sigmob 开屏广告")
zxadListener.onAdClicked(newsEntity)
}
override fun onSplashClosed() {
Log.d(TAG, "Sigmob 开屏 onSplashClosed")
zxadListener.onAdSkip()
}
override fun onSplashAdFailToPresent(p0: WindAdError?, p1: String?) {
Log.d(
TAG,
"Sigmob 开屏 onSplashAdFailToPresent:errorCode:" + p0?.errorCode + " --- message:" + p1
)
zxadListener.onFailResult(p1 ?: "")
zxadCallback.onAdFail()
}
})
}
//激励视频
fun loadRewardVideoAd(
activity: Activity,
entity: NewsEntity?,
entity: NewsEntity,
listener: ZXADVideoListener?,
callback: ZXADCallback?
) {
val startTime = System.currentTimeMillis()
//主动READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE,ACCESS_FINE_LOCATION 权限授权请求
WindAds.requestPermission(activity);
val windRewardedVideoAd = WindRewardedVideoAd.sharedInstance()
//placementId 必填,USER_ID,OPTIONS可不填,
//placementId 必填,USER_ID,OPTIONS可不填,
val request = WindRewardAdRequest("e859a9a8882",SettingPreference.getUid(),null)
//placementId 必填,USER_ID,OPTIONS可不填, "e859a9a8882"
val request = WindRewardAdRequest(entity.codeId, SettingPreference.getUid() ?: "", null)
windRewardedVideoAd.loadAd(request)
windRewardedVideoAd.setWindRewardedVideoAdListener(object :WindRewardedVideoAdListener{
windRewardedVideoAd.setWindRewardedVideoAdListener(object : WindRewardedVideoAdListener {
override fun onVideoAdPlayError(p0: WindAdError?, p1: String?) {
listener?.onVideoError()
callback?.onAdFail()
Log.d(TAG, "Sigmob 激励 onVideoAdPlayError" + p0?.message)
}
override fun onVideoAdPreLoadFail(p0: String?) {
listener?.onVideoError()
callback?.onAdFail()
Log.d(TAG, "Sigmob 激励 onVideoAdPreLoadFail" + p0)
}
override fun onVideoAdPlayStart(p0: String?) {
callback?.onAdSuccess()
listener?.onAdShow()
onEventShow(entity)
onEventUM("ad_reward_video_show", "Sigmob 激励视频")
Log.d(TAG, "Sigmob 激励 onVideoAdPlayStart")
}
override fun onVideoAdClosed(p0: WindRewardInfo?, p1: String?) {
Log.d(TAG, "Sigmob 激励 onVideoAdClosed")
listener?.onAdClose()
}
override fun onVideoAdPlayEnd(p0: String?) {
}
override fun onVideoAdLoadSuccess(p0: String?) {
listener?.onAdShow()
// AdUpload.onAdImpression(entity)
Log.d(TAG, "Sigmob 激励 onVideoAdLoadSuccess")
}
override fun onVideoAdPreLoadSuccess(p0: String?) {
......@@ -69,7 +149,12 @@ object SMADUtils {
override fun onVideoAdClicked(p0: String?) {
listener?.onVideoComplete()
// AdUpload.onAdClick(entity)
AdUpload.onAdClick(entity)
onEventClick(entity)
onEventUM("ad_reward_video_click", "Sigmob 激励视频")
Log.d(TAG, "Sigmob 激励 onVideoAdClicked")
}
override fun onVideoAdLoadError(p0: WindAdError?, p1: String?) {
......@@ -79,16 +164,30 @@ object SMADUtils {
})
try {
//检查广告是否准备完毕
if (windRewardedVideoAd.isReady(request.placementId)) {
//广告播放
windRewardedVideoAd.show(activity, request)
val handler: Handler = object : Handler() {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
Log.d(
TAG, "Sigmob 激励视频耗时" +
(System.currentTimeMillis() - startTime).toString() + ""
)
if (System.currentTimeMillis() - startTime > 6000) {
listener?.onVideoError()
removeCallbacksAndMessages(null)
return
}
if (windRewardedVideoAd.isReady(request.placementId)) {
//广告播放
Log.d(TAG, "Sigmob 广告播放")
windRewardedVideoAd.show(activity, request)
removeCallbacksAndMessages(null)
} else {
// Toast.makeText(activity, "成功加载广告后再进行广告展示!", Toast.LENGTH_LONG).show()
sendEmptyMessageDelayed(1, 20)
}
}
} catch (e: java.lang.IllegalArgumentException) {
e.printStackTrace()
}
handler.sendEmptyMessageDelayed(1, 20)
}
......@@ -97,7 +196,7 @@ object SMADUtils {
entity: NewsEntity?,
listener: ZXADVideoListener?,
callback: ZXADCallback?
){
) {
// val windFullScreenVideoAd = WindFullScreenVideoAd.sharedInstance()
......@@ -111,10 +210,12 @@ object SMADUtils {
val request = WindFullScreenAdRequest(
"e8599e387e8",
SettingPreference.getUid(),
null)
windFullScreenVideoAd.loadAd( request)
null
)
windFullScreenVideoAd.loadAd(request)
windFullScreenVideoAd.setWindFullScreenVideoAdListener(object : WindFullScreenVideoAdListener {
windFullScreenVideoAd.setWindFullScreenVideoAdListener(object :
WindFullScreenVideoAdListener {
override fun onFullScreenVideoAdPlayError(p0: WindAdError?, p1: String?) {
}
......
......@@ -328,7 +328,7 @@ object CenterDialog : BaseDialog() {
* adType: 广告的类型
*/
fun showgetWaterDrop(
context: Context?,
context: Activity?,
type: Int,
rewardCount: Int,
listener: DialogInterface.OnCancelListener,
......
......@@ -4,6 +4,7 @@ package com.ym.library.utils
import android.util.Log
import com.umeng.analytics.MobclickAgent
import com.ym.library.AppliContext
import com.ym.library.module.NewsEntity
import com.ym.library.net.EventApiClient
import io.reactivex.Observer
import io.reactivex.disposables.Disposable
......@@ -73,6 +74,20 @@ object EventUtils {
apiClient(jsonObj)
MobclickAgent.onEvent(AppliContext.get(), action, value)
}
fun onEventShow(entity: NewsEntity) {
if (entity?.imp_tracking != null && entity?.imp_tracking.size >0) {
apiClient(entity?.imp_tracking[0])
}
}
fun onEventClick(entity: NewsEntity) {
if (entity?.clk_tracking != null && entity?.clk_tracking.size >0) {
apiClient(entity?.clk_tracking[0])
}
}
fun onEventUM(action: String, value: String) {
MobclickAgent.onEvent(AppliContext.get(), action, value)
}
......
......@@ -31,9 +31,11 @@ public class WxImplUtils implements UMAuthListener {
private IWxLoginCallback mCallback;
private Context mContext = AppliContext.get();
private static final String TAG = "WxImplUtils";
private Activity activity;
public void init(IWxLoginCallback mCallback, Activity activity) {
this.mCallback = mCallback;
this.activity = activity;
mShareAPI = UMShareAPI.get(activity);
mLoading = LoadingDialog.getLoadingDialog(activity, mContext.getString(R.string.wait_ing), true, true);
mLoading.dismiss();
......@@ -71,7 +73,7 @@ public class WxImplUtils implements UMAuthListener {
Log.i(TAG, "onComplete: ");
dismissDialog();
ApiClient.INSTANCE.getUserApi().bindWx(data.get("openid"),data.get("accessToken")).
ApiClient.INSTANCE.getUserApi().bindWx(data.get("openid"), data.get("accessToken")).
compose(RxSchedulers.observableIO2Main(mContext))
.subscribe(new BaseObserver<WxBindEntity>() {
@Override
......@@ -81,7 +83,7 @@ public class WxImplUtils implements UMAuthListener {
SettingPreference.setToken(result.getFlushToken());
UserInfoEntity user = SettingPreference.getUserInfoData();
if (user!=null){
if (user != null) {
user.setBind(true);
user.setHeadimgurl(data.get("iconurl"));
user.setNickname(data.get("screen_name"));
......@@ -89,7 +91,7 @@ public class WxImplUtils implements UMAuthListener {
SettingPreference.saveUserInfo(user);
SettingPreference.saveUserInfoName(data.get("screen_name"));
mCallback.onWxSuccess(data.get("access_token"), data.get("openid"));
}else {
} else {
mCallback.onWxFail("绑定失败");
}
......@@ -135,7 +137,7 @@ public class WxImplUtils implements UMAuthListener {
}
public void dismissDialog() {
if (mLoading != null) {
if (mLoading != null && activity != null && !activity.isFinishing()) {
mLoading.dismiss();
}
}
......@@ -153,6 +155,7 @@ public class WxImplUtils implements UMAuthListener {
public interface IWxLoginCallback {
void onWxSuccess(String token, String openid);
void onWxFail(String mes);
}
......
......@@ -33,7 +33,7 @@ object WNManager {
override fun onError(code: Int, message: String) {
listener.onError()
callback.onAdFail()
Log.i("WNManager","code:${code} -- message:${message}")
Log.i("WNManager", "code:${code} -- message:${message}")
}
override fun onLoad(ad: WNRewardVideoAd) {
......@@ -42,15 +42,15 @@ object WNManager {
Log.d("WNManager", "激励视频展示")
listener.onAdShow()
callback.onAdSuccess()
EventUtils.apiClient(entity?.imp_tracking[0])
EventUtils.onEventUM("ad_reward_video_show","优量宝激励视频")
EventUtils.onEventShow(entity)
EventUtils.onEventUM("ad_reward_video_show", "优量宝激励视频")
}
override fun onAdClick() {
Log.d("WNManager", "激励视频点击")
listener.onAdVideoBarClick(entity)
EventUtils.apiClient(entity?.clk_tracking[0])
EventUtils.onEventUM("ad_reward_video_click","优量宝激励视频")
EventUtils.onEventClick(entity)
EventUtils.onEventUM("ad_reward_video_click", "优量宝激励视频")
}
override fun onAdClose() {
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
tools:ignore="MissingDefaultResource"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="30dp">
<ImageView
android:id="@+id/id_iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vlion_back"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"/>
<TextView
android:id="@+id/id_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textStyle="bold"
android:layout_centerInParent="true"/>
</RelativeLayout>
<FrameLayout
android:id="@+id/id_activity_fragment_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
\ No newline at end of file
......@@ -5,8 +5,10 @@ import android.content.ClipboardManager
import android.content.Context
import com.bytedance.sdk.openadsdk.TTNativeExpressAd
import com.umeng.analytics.MobclickAgent
import com.ym.admodule.rs.RSADUtils
import com.ym.library.Constant
import com.ym.library.config.AdManager
import com.ym.library.config.ZXADCallback
import com.ym.library.config.ZXADSizeConfig
import com.ym.library.down.UpdateVersionManager
import com.ym.library.listener.ZXADExpressListener
......@@ -27,7 +29,7 @@ class SettingActivity : BaseActivity() {
}
override fun init() {
if(SettingPreference.getUserInfoData()!=null){
if (SettingPreference.getUserInfoData() != null) {
id_tv_id.text = "ID: ${SettingPreference.getUserInfoData().uid}"
}
if (Constant.qq != 0) {
......@@ -43,22 +45,21 @@ class SettingActivity : BaseActivity() {
// tv_user_toolbar_title.text = "设置"
//用户协议
tv_setting_user_agreement.setOnClickListener {
JumpUtils.h5Jump("用户协议", Constant.Param.USER, true,this)
JumpUtils.h5Jump("用户协议", Constant.Param.USER, true, this)
}
//隐私条款
tv_setting_privacy_policy.setOnClickListener {
JumpUtils.h5Jump("隐私条款", Constant.Param.PRIVACY, true,this)
JumpUtils.h5Jump("隐私条款", Constant.Param.PRIVACY, true, this)
}
//关于我们
tv_setting_about_us.setOnClickListener {
JumpUtils.h5Jump("关于我们", Constant.Param.ABOUTUS, true,this)
JumpUtils.h5Jump("关于我们", Constant.Param.ABOUTUS, true, this)
}
//版本升级
id_setting_update_version.setOnClickListener {
val updateVersionManager = this?.let { it1 -> UpdateVersionManager(it1) }
updateVersionManager?.checkUpdate(true)
}
AdManager.loadFeedAd(
ADConfig.AD_IMG_FADE,
this,
......@@ -120,7 +121,7 @@ class SettingActivity : BaseActivity() {
this?.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
// 创建普通字符型ClipData
var idDesc = "123456"
if (SettingPreference.getUserInfoData()!=null){
if (SettingPreference.getUserInfoData() != null) {
idDesc = SettingPreference.getUserInfoData()?.uid.toString()
}
val mClipData: ClipData =
......
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