Не удается загрузить RewardedVideoAd 2 или более раз - PullRequest
0 голосов
/ 14 апреля 2020

Привет всем) Я новичок в Android dev. Я почти закончила sh свое приложение, но когда я добавила RewardedVideoAd с AdMod, у меня возникли 2 проблемы.

Это моя деятельность:

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 var userChoise = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test)

        val title = getIntent().getStringExtra("TestTitle")
        setTitle(title)

        MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")

        mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
        mRewardedVideoAd.rewardedVideoAdListener = this

        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 submitButton: Button = findViewById(R.id.submitButton)

        loadRewardedVideoAd()

            if (connector) {
                rewardedDialog()
            } else {
                submitButton.visibility = View.INVISIBLE
                openAlertDialog()
            }
    }


    private fun loadRewardedVideoAd() {
        if (!mRewardedVideoAd.isLoaded) {
            val proggressBar: ProgressBar = findViewById(R.id.progressBarTest)
            proggressBar.visibility = View.VISIBLE
            mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", AdRequest.Builder().build())
        }
    }

    private fun openTest(){

        AsyncTaskHandler().execute(urlToTest)

        submitButton.setOnClickListener {


            if (currentItem != 9) {
                currentItem += 1
                testAdapterItemClick(randomList[currentItem], currentItem)
            }
            else if(currentItem == 9) {

                checkAdapter = 1

                submitButton.setOnClickListener() {
                    val adapter = TestCheckAdapter(randomList) { item, position ->
                        testAdapterItemClick(item, position)
                    }

                    val recView = findViewById<RecyclerView>(R.id.testRecyclerView)
                    recView.adapter = adapter
                }
            }
        }
    }

Logi c просто. Когда пользователь открывает активность, он видит AlertDialog с предложением увидеть RewardedVideo. Если пользователь нажмет «Нет», активность завершится sh. Если пользователь нажмет «Да», он увидит RewardedAd и затем сможет пройти тесты, которые будут открыты в openTest () fun.

Вот мой rewardedDialog ():

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 -> userChoise=true
                DialogInterface.BUTTON_NEGATIVE -> this.finish()
            }
        }

        builder.setPositiveButton("Да", dialogClickListener)
        builder.setNegativeButton("Нет", dialogClickListener)

        dialog = builder.create()
        dialog.show()
    }

А вот мои переопределенные функции из RewardedVideoAdListener.

override fun onRewardedVideoAdClosed() {
        loadRewardedVideoAd()
        userChoise=false
        val proggressBar: ProgressBar = findViewById(R.id.progressBarTest)
        proggressBar.visibility = View.INVISIBLE
    }

    override fun onRewardedVideoAdLeftApplication() {
        this.finish()
    }

    override fun onRewardedVideoAdLoaded() {
        if(userChoise) {
            mRewardedVideoAd.show()
        }
    }

    override fun onRewardedVideoAdOpened() {
        TODO("not implemented")
    }

    override fun onRewardedVideoCompleted() {
        openTest()
    }

    override fun onRewarded(p0: RewardItem?) {
        TODO("not implemented")
    }

    override fun onRewardedVideoStarted() {
        TODO("not implemented")
    }

    override fun onRewardedVideoAdFailedToLoad(p0: Int) {
        lateinit var dialog: AlertDialog

        val builder = AlertDialog.Builder(this)
        builder.setTitle("Ой!")
        builder.setMessage("Что-то пошло не так. Попробуйте посже.")

            .setCancelable(false)

        val dialogClickListener = DialogInterface.OnClickListener{_, which ->
            when(which){
                DialogInterface.BUTTON_POSITIVE -> this.finish()
            }
        }

        builder.setPositiveButton("Ок", dialogClickListener)

        dialog = builder.create()
        dialog.show()
    }

}

У меня есть 2 проблемы: 1) Когда я открываю это действие, просматриваю RewardeVideo и открываю тест, я не могу открыть это RewardedVideo и тестировать снова. Если я нажму кнопку «Назад» и снова открою это занятие, я увижу пустое занятие. 2) Все отлично работает на моем устройстве, но с 6 Android RewardedVideo не может загрузить.

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

PS Извините за мой Engli sh)

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