【问题标题】:How to request consent for personalized ads while using admob with various ad networks through mediation?如何在通过中介与各种广告网络一起使用 admob 时请求对个性化广告的同意?
【发布时间】:2020-05-04 09:37:23
【问题描述】:

我想通过 AdMob 在我的 Android 应用程序中使用中介。因此,我连接了不同的广告网络(Vungle、AdColony、MoPub 等)并将它们集成到我的 AdMob 帐户的“中介”中。我注意到我必须遵守 GDPR,并且必须征得用户的同意才能展示个性化广告。我发现了 Google 的 Consent SDK,它可以做很多功能。其中一项功能是显示的对话框 (https://developers.google.com/admob/images/android_eu_consent_form.png)。但我读到如果我使用调解,我将无法使用此对话框。那么如何在使用中介的同时完成这项工作呢?

谢谢!!

【问题讨论】:

    标签: android admob


    【解决方案1】:

    我通过结合使用 Consent SDK 和我自己的代码来解决这个问题。每次用户进入应用程序(不知道是否应该这样做,经常这样做)时,我都会初始化Consent SDK。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多