У меня небольшая проблема с приложением. На моих устройствах RewardedVideo всегда открыто <, но на одном устройстве его всегда не удается загрузить. </p>
Мне нужно создать таймер на 10 секунд, который будет проверять состояние RewardedVideoAd (isLoad или нет) каждую секунду. Если это загрузить, покажите это. Если через 10 секунд он не загружается, откройте InterstitialAd. Но через 10 секунд это пустой экран.
Это мой код:
class TestActivity : AppCompatActivity(), RewardedVideoAdListener{
private lateinit var urlToTest: String
private val list = ArrayList<Test>()
private var randomList = ArrayList<Test>()
private var currentItem = 0
private var fragmentsList = ArrayList<Fragment>()
private var checkAdapter : Int = -1
private lateinit var mRewardedVideoAd: RewardedVideoAd
private lateinit var mInterstitialAd: InterstitialAd
private val mTimerTask = MyTimerTask()
private var mTimer = Timer()
private var time: Int = 0
private var dWidth = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
val title = getIntent().getStringExtra("TestTitle")
setTitle(title)
val display: Display = windowManager.defaultDisplay
val size = Point()
display.getSize(size)
dWidth = size.x
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
mRewardedVideoAd.rewardedVideoAdListener = this
val nextButton : ImageButton = findViewById(R.id.nextButton)
val backButton : ImageButton = findViewById(R.id.backButton)
nextButton.setImageResource(R.mipmap.right)
backButton.setImageResource(R.mipmap.left)
urlToTest = "http://sasmobile.ru" + getIntent().getStringExtra("urlToJson") + getIntent().getStringExtra("jsonName")
val recView = findViewById<RecyclerView>(R.id.testRecyclerView)
recView.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)
val connector = Connector().isConnectedToNetwork(this)
val proggressBar: ProgressBar = findViewById(R.id.progressBarTest)
proggressBar.visibility = View.VISIBLE
if (connector) {
rewardedDialog()
} else {
nextButton.visibility=View.INVISIBLE
backButton.visibility=View.INVISIBLE
submitButton.visibility=View.INVISIBLE
openAlertDialog()
}
}
Функция RewardedDialod:
private fun rewardedDialog(){
lateinit var dialog: AlertDialog
val builder = AlertDialog.Builder(this)
builder.setTitle("Внимание!!!")
builder.setMessage("Проект существует и развивается за счёт рекламы - у Вас есть возможность убрать её НАВСЕГДА" +
"(на главном экране кнопка \"Super\") Что бы пройти тренировочный тест Вам нужно просмотреть рекламу. Вы согласны ?")
.setCancelable(false)
val dialogClickListener = DialogInterface.OnClickListener{_, which ->
when(which){
DialogInterface.BUTTON_POSITIVE -> mTimer.schedule(mTimerTask, 5000)
DialogInterface.BUTTON_NEGATIVE -> this.finish()
}
}
builder.setPositiveButton("Да", dialogClickListener)
builder.setNegativeButton("Нет", dialogClickListener)
dialog = builder.create()
dialog.show()
}
И мой TimerTask:
inner class MyTimerTask : TimerTask(){
override fun run() {
runOnUiThread {
if (!mRewardedVideoAd.isLoaded) {
if (time < 9) {
loadRewardedVideoAd()
}
if (time == 9) {
mRewardedVideoAd.destroy()
loadInterstitialAd()
}
time++
if (time == 10)
time = 0
}
else if (mRewardedVideoAd.isLoaded){
onRewardedVideoAdLoaded()
}
}
}
}
И две функции, которые загружают рекламу:
private fun loadRewardedVideoAd(){
mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", AdRequest.Builder().build())
}
private fun loadInterstitialAd(){
MobileAds.initialize(this, getString(R.string.interstitial_ad_unit_id))
mInterstitialAd = InterstitialAd(this)
mInterstitialAd.adUnitId=getString(R.string.interstitial_ad_unit_id)
val adRequest: AdRequest = AdRequest.Builder().build()
mInterstitialAd.loadAd(adRequest)
mInterstitialAd.adListener = object : AdListener() {
override fun onAdLoaded(){
val proggressBar: ProgressBar = findViewById(R.id.progressBarTest)
proggressBar.visibility = View.INVISIBLE
mInterstitialAd.show()
super.onAdLoaded()
}
override fun onAdClosed() {
openTest()
super.onAdClosed()
}
override fun onAdFailedToLoad(p0: Int) {
val proggressBar: ProgressBar = findViewById(R.id.progressBarTest)
proggressBar.visibility = View.INVISIBLE
val context = applicationContext
lateinit var dialog: AlertDialog
val builder = AlertDialog.Builder(context)
builder.setTitle("Ой")
builder.setMessage("Что-то пошло не так! Попробуйте посже.")
.setCancelable(false)
val dialogClickListener = DialogInterface.OnClickListener{_, which ->
when(which){
DialogInterface.BUTTON_POSITIVE -> dialog.cancel()
}
}
builder.setPositiveButton("OK", dialogClickListener)
dialog = builder.create()
dialog.show()
super.onAdFailedToLoad(p0)
}
}
}
Пожалуйста, помогите мне) Я повторил все. Заранее спасибо)