Как запросить согласие на персонализированную рекламу при использовании admob с различными рекламными сетями через посредничество? - PullRequest
0 голосов
/ 04 мая 2020

Я хочу использовать медиацию в моем Android приложении с помощью AdMob. Поэтому я подключился к различным рекламным сетям (Vungle, AdColony, MoPub и др. c ..) и интегрировал их в «Посредничество» для моей учетной записи AdMob. Я заметил, что должен соблюдать GDPR и должен запрашивать согласие моих пользователей на показ персонализированной рекламы. Я узнал о Consent SDK от Google, который может выполнять множество функций. Одной из функций является отображаемое диалоговое окно (https://developers.google.com/admob/images/android_eu_consent_form.png). Но я прочитал, что я не могу использовать этот диалог, если я использую посредничество. Так как же это сделать при использовании посредничества?

Спасибо !!

1 Ответ

0 голосов
/ 05 мая 2020

Я понял это, используя комбинацию Consent SDK и моего собственного кода. Каждый раз, когда пользователь входит в приложение (не знаю, должен ли я делать это так часто), я инициализирую SDK Consent.

private fun getConsentStatus() {
    val consentInformation = ConsentInformation.getInstance(requireContext())
    consentInformation.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
    consentInformation.debugGeography = DebugGeography.DEBUG_GEOGRAPHY_EEA
    val ids = arrayOf("pub-77777777777")

    consentInformation.requestConsentInfoUpdate(ids, object : ConsentInfoUpdateListener {
        override fun onConsentInfoUpdated(consentStatus: ConsentStatus) {
            // User's consent status successfully updated.
            if (consentInformation.isRequestLocationInEeaOrUnknown) {
                when (consentStatus) {
                    ConsentStatus.UNKNOWN -> displayConsentForm()
                    ConsentStatus.PERSONALIZED -> proceed(true, true)
                    ConsentStatus.NON_PERSONALIZED -> proceed(false, true)
                }
            } else {
                // Not in EU, displaying personalized ads
                proceed(true, false)
            }
        }

        override fun onFailedToUpdateConsentInfo(errorDescription: String) {
            // User's consent status failed to update.
            AdvertisingInitialization(requireContext(), prefs, false)
            proceedWithoutUpdate()
        }
    })
}

private fun proceedWithoutUpdate(isInEu: Boolean = false){
    AdvertisingInitialization(requireContext(), prefs, isInEu)
    (activity as LandingActivity).navigateToContentActivity()
}

/**
 * Save the consent status in prefs and initialize ads. Then navigate to the other activity
 */
private fun proceed(isPersonalized: Boolean, isInEu: Boolean = false) {
    val consentInfo = ConsentInformation.getInstance(requireContext())
    consentInfo.consentStatus = if (isPersonalized) ConsentStatus.PERSONALIZED else ConsentStatus.NON_PERSONALIZED
    prefs.setCanShowPersonalizedAds(isPersonalized)
    AdvertisingInitialization(requireContext(), prefs, isInEu)
    (activity as LandingActivity).navigateToContentActivity()
}

Если пользователь находится в ЕС и никогда не выбирал, хочет ли он персонализировать или не персонализированные объявления. Я бы направил его к другому фрагменту, который имеет: 1 TextView (описание со сменной строкой, направленное на веб-страницу рекламных сетей), 2 кнопки, одна из которых «Да, я согласен», а другая «Нет, спасибо»

Тогда я бы сохранял их выбор

consentInfo.consentStatus = if (isPersonalized) ConsentStatus.PERSONALIZED else ConsentStatus.NON_PERSONALIZED
prefs.setCanShowPersonalizedAds(isPersonalized)

И каждый раз, когда я запрашивал объявление, я делал это так:

fun getAdRequest(isPersonalized: Boolean): AdRequest {
        val adRequest: AdRequest
        adRequest = if (isPersonalized) {
            AdRequest.Builder().build()
        } else {
            val extras = Bundle()
            extras.putString("npa", "1")
            AdRequest.Builder()
                .addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
                .build()
        }
        return adRequest
    }

Возможно, вы заметили класс AdvertisingInitialization , Я использую этот класс для перенаправления выбора пользователя в рекламные сети, с которыми я использую посредничество. Одна часть кода выглядит следующим образом:

init {
    initAppLovin()
    initAdColony()
    initChartboost()
    initIronSource()
    initMoPub()
    initUnityAds()
    initVungle()
    initInMobi()
    MobileAds.initialize(context)
}

Информация о каждой реализации приведена здесь: https://developers.google.com/admob/android/eu-consent

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