Как добавить согласие пользователя с помощью UserMessagingPlatform
У меня есть несколько вопросов о GoogleUserMessagingPlatform
.
Ресурсы
- Mobile Ads SDK – Руководства
- Mobile Ads SDK – Конфиденциальность пользователей
- Mobile Ads SDK – Справочник
- Политика согласия пользователей из ЕС
- Unity — реализация конфиденциальности данных
Связанные вопросы
- Как правильно внедрить UMP SDK для получения согласия ЕС
- Платформа обмена сообщениями пользователей Google и цель c Swift
.
func requestConsentInfoUpdate(in vc: UIViewController, completion: (() -> Void)?) {
let parameters = UMPRequestParameters()
parameters.tagForUnderAgeOfConsent = false
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
with: parameters,
completionHandler: { [weak self] error in
if error != nil {
// handle error
} else {
if UMPConsentInformation.sharedInstance.formStatus == UMPFormStatus.available {
// if it is avaiable (and required) i load the form
self?.loadForm(in: vc, completion: completion)
} else if UMPConsentInformation.sharedInstance.formStatus == UMPFormStatus.unknown {
// docs suggest to request another update
self?.requestConsentInfoUpdate(in: vc, completion: completion)
} else {
completion?()
}
}
})
}
Эта функция вызывается, когда первыйViewController
представлен, принимает в качестве параметровvc
себя, который представит форму, иcompletion
, так как я хочу дождаться всех сведений о конфиденциальности, прежде чем звонитьGADMobileAds.sharedInstance().start()
и запрашивать рекламу.
1. Как мне поступить с пометкой «несовершеннолетний»?
Должен ли я спрашивать пользователя о его возрасте перед отправкой формы? Или мне следует просто предположить, что пользователь не является несовершеннолетним, как это делает большинство приложений, и оставитьtagForUnderAgeOfConsent = false
?
2. Бесконечная рекурсия?
По документам отсюда :
UMPFormStatusUnknown: неизвестно, доступна ли форма согласия. Обновление следует запрашивать с помощью requestConsentInfoUpdateWithParameters:completionHandler.
Может быть, это глупый вопрос, поскольку, если документация рекомендует это, то это должно быть безопасно, но может ли эта реализация потенциально вызвать бесконечную рекурсию?
private func loadForm(in vc: UIViewController, completion: (() -> Void)?) {
UMPConsentForm.load(completionHandler: { [weak self] form, loadError in
if loadError != nil {
// handle error
} else {
if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
self?.present(form: form, in: vc, completion: completion)
} else {
completion?()
}
}
})
}
private func present(form: UMPConsentForm?, in vc: UIViewController, completion: (() -> Void)?) {
form?.present(
from: vc,
completionHandler: { [weak self] _ in
if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
GADMobileAds.sharedInstance().start(completionHandler: nil)
completion?()
}
})
}
Здесь форма загружается и представляется.
3. Где передать консенсус партнерам по посредничеству?
Если я правильно понял, UMP передает в свою сеть все внутренние настройки конфиденциальности после достижения консенсуса. Это только для рекламы Google. Что, если я захочу использовать посредничество и показывать, например, рекламу Unity? Документы Unity объясняют, как, например, для согласия GDPR:
let gdprMetaData = UADSMetaData()
gdprMetaData.set("gdpr.consent", value: true)
gdprMetaData.commit()
Мой вопрос в том, куда мне это позвонить. Насколько я понимаю,UMPConsentStatus.obtained
означает лишь то, что пользователь установил свои предпочтения, а не обязательно, что он согласился на таргетированную рекламу.