| | |
| | | package com.runt.open.mvvm.ui.splash; |
| | | |
| | | import android.content.Context; |
| | | import android.os.Handler; |
| | | import android.util.Log; |
| | | |
| | | import androidx.lifecycle.MutableLiveData; |
| | | |
| | | import com.bytedance.sdk.openadsdk.AdSlot; |
| | | import com.bytedance.sdk.openadsdk.TTAdNative; |
| | | import com.bytedance.sdk.openadsdk.TTAdSdk; |
| | | import com.bytedance.sdk.openadsdk.TTSplashAd; |
| | | import com.runt.open.mvvm.base.model.BaseViewModel; |
| | | |
| | | import java.util.Date; |
| | |
| | | final String TAG = "SplashViewModel"; |
| | | long cTime = new Date().getTime(),limitTime = 2000; |
| | | |
| | | private MutableLiveData<TTSplashAd> splashAd = new MutableLiveData<>(); |
| | | private MutableLiveData<Integer> timeOut = new MutableLiveData<>(); |
| | | |
| | | public MutableLiveData<TTSplashAd> getSplashAd() { |
| | | return splashAd; |
| | | } |
| | | |
| | | public MutableLiveData<Integer> getTimeOut() { |
| | | return timeOut; |
| | |
| | | },limitTime); |
| | | } |
| | | |
| | | /** |
| | | * 请求广告 |
| | | * @param context |
| | | */ |
| | | public void applyTdAd(Context context){ |
| | | countdown(); |
| | | TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(context); |
| | | AdSlot adSlot = new AdSlot.Builder() |
| | | .setCodeId("887382769")//广告id |
| | | .setSupportDeepLink(true) |
| | | .setImageAcceptedSize(1080,1920) |
| | | //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看 |
| | | //.setExpressViewAcceptedSize(expressViewWidth, expressViewHeight) |
| | | .build(); |
| | | mTTAdNative.loadSplashAd(adSlot,new TTAdNative.SplashAdListener() { |
| | | @Override |
| | | public void onError(int i, String s) { |
| | | Log.i(TAG,"code:"+i+" message:"+s); |
| | | } |
| | | |
| | | @Override |
| | | public void onTimeout() { |
| | | Log.i(TAG,"超时"); |
| | | } |
| | | |
| | | @Override |
| | | public void onSplashAdLoad(TTSplashAd ttSplashAd) { |
| | | Log.d(TAG, "开屏广告请求成功"); |
| | | |
| | | long waitTime = limitTime - (new Date().getTime() - cTime); |
| | | if(waitTime > 0){//是否超过限定时间 没有超时则继续 |
| | | new Handler().postDelayed(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | splashAd.setValue(ttSplashAd); |
| | | } |
| | | }, waitTime > 0 ? waitTime : 0); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |