Использование таймера с RewardedVideoAd - PullRequest
0 голосов
/ 27 апреля 2020

У меня небольшая проблема с приложением. На моих устройствах 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)
            }
        }
    }

Пожалуйста, помогите мне) Я повторил все. Заранее спасибо)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...