Ознакомьтесь с руководствами Google для разработчиков SDK:
Функциональность SDK режима согласия Google
Общие требования и реализацию SDK см. в руководствах в начале этого документа. Если вы включили поддержку режима согласия конфиденциальности и обмена сообщениями, вы также можете реализовать дополнительные функции, описанные здесь.
Режим согласия: поддержка базового режима
После того как вы внедрили соответствующий SDK, включили режим согласия Google в разделе «Конфиденциальность и сообщения» и определили, что будете использовать базовый режим согласия , следуйте этим инструкциям.
Чтобы реализовать базовый режим:
- Временно отключите сбор аналитики ( Android , iOS ).
- Когда вы будете готовы разблокировать функции Google Analytics, повторно включите сбор данных Analytics ( Android , iOS ).
На втором этапе проконсультируйтесь с экспертом по правовым вопросам, чтобы определить критерии повторного включения функций Google Analytics.
Например, вы можете повторно включить функции Google Analytics после того, как пользователь сделал выбор согласия, повторно включив функции Google Analytics в обратном вызове loadAndShowConsentFormIfRequired
(ссылка API: Android , iOS ).
Альтернативно, чтобы определить, следует ли повторно включать сбор аналитики на основе выбора режима согласия пользователя, прочтите ключ локального хранилища UMP_consentModeValues
. Значение представляет собой четырехзначную строку.
- Первая цифра указывает значение цели ad_storage.
- Вторая цифра указывает значение цели ad_user_data.
- Третья цифра указывает значение цели ad_personalization.
- Четвертая цифра указывает значение цели аналитики_хранилища.
В следующей таблице описаны возможные значения для каждой цифры:
Ценить | Значение |
---|---|
0 | Значение пока недоступно. |
1 | Пользователь GRANTED эту цель. |
2 | Пользователь DENIED эту цель. |
3 | Режим согласия не применяется к этому пользователю. |
4 | Режим согласия для этой цели не настроен. |
В следующем примере анализируется UMP_consentModeValues
, включается Google Analytics, если все цели GRANTED
или не применяются, и отключает сбор Analytics в противном случае:
Ява
// Helper function that sets Analytics collection based on the value of the
// UMP_consentModeValues local storage key.
private void maybeReEnableAnalyticsCollection() {
String consentModeValues = sharedPreferences.getString("UMP_consentModeValues", null);
if (shouldReEnableAnalyticsCollection(consentModeValues)) {
firebaseAnalytics.setAnalyticsCollectionEnabled(true);
} else {
firebaseAnalytics.setAnalyticsCollectionEnabled(false);
}
}
// Helper function to determine whether Analytics collection should be enabled. Returns true
// if all consent mode values are either granted, not applicable, or not configured.
private boolean shouldReEnableAnalyticsCollection(String consentModeValues) {
if (consentModeValues.isEmpty()) {
return false;
}
for (int i = 0; i < consentModeValues.length(); i++) {
char consentModeValue = consentModeValues.charAt(i);
switch (consentModeValue) {
case '0':
// Consent mode data not ready yet.
return false;
case 1:
// Consent mode is granted for this purpose.
break;
case '2':
// Consent is denied for this consent mode purpose.
return false;
case '3':
// Consent does not apply for this purpose at this time.
break;
case '4':
// Consent mode is not configured for this purpose.
break;
default:
// Unexpected value encountered.
return false;
}
}
// If all checks pass, re-enable Analytics collection.
return true;
}
Котлин
// Helper function that may re-enable Analytics collection based on the value of the
// UMP_consentModeValues local storage key.
private fun maybeReEnableAnalyticsCollection() {
val consentModeValues = sharedPreferences.getString("UMP_consentModeValues", null)
if (shouldReEnableAnalyticsCollection(consentModeValues)) {
firebaseAnalytics.setAnalyticsCollectionEnabled(true)
}
}
// Helper function to determine whether Analytics collection should be re-enabled. Returns true
// if all consent mode values are either granted, not applicable, or not configured.
private fun shouldReEnableAnalyticsCollection(consentModeValues: String?): Boolean {
if (consentModeValues.isNullOrEmpty()) {
return false
}
for (consentModeValue in consentModeValues) {
when (consentModeValue) {
'0' -> {
// Consent mode data not ready yet.
return false
}
'1' -> {
// Consent mode is granted for this purpose.
}
'2' -> {
// Consent is denied for this consent mode purpose.
return false
}
'3' -> {
// Consent does not apply for this purpose at this time.
}
'4' -> {
// Consent mode is not configured for this purpose.
}
else -> {
// Unexpected value encountered.
return false
}
}
}
// If all checks pass, can re-enable Analytics collection.
return true
}
Быстрый
// Helper function that may re-enable Analytics collection based on the value of the
// UMP_consentModeValues local storage key.
private func maybeReEnableAnalyticsCollection() {
let consentModeValues = userDefaults.string(forKey: "UMP_consentModeValues")
if shouldReEnableAnalyticsCollection(consentModeValues) {
Analytics.setAnalyticsCollectionEnabled(true)
}
}
// Helper function to determine whether Analytics collection should be re-enabled. Returns true
// if all consent mode values are either granted, not applicable, or not configured.
private func shouldReEnableAnalyticsCollection(_ consentModeValues: String?) -> Bool {
guard let consentModeValues = consentModeValues, !consentModeValues.isEmpty else {
return false
}
for consentModeValue in consentModeValues {
switch consentModeValue {
case "0":
// Consent mode data not ready yet.
return false
case "1":
// Consent mode is granted for this purpose.
break
case "2":
// Consent is denied for this consent mode purpose.
return false
case "3":
// Consent does not apply for this purpose at this time.
break
case "4":
// Consent mode is not configured for this purpose.
break
default:
// Unexpected value encountered.
return false
}
}
// If all checks pass, can re-enable Analytics collection.
return true
}
Цель-C
// Helper function that may re-enable Analytics collection based on the value of the
// UMP_consentModeValues local storage key.
- (void)maybeReEnableAnalyticsCollection {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *consentModeValues = [defaults stringForKey:@"UMP_consentModeValues"];
if ([self shouldReEnableAnalyticsCollection:consentModeValues]) {
[FIRAnalytics setAnalyticsCollectionEnabled:YES];
}
}
// Helper function to determine whether Analytics collection should be re-enabled. Returns true
// if all consent mode values are either granted, not applicable, or not configured.
- (BOOL)shouldReEnableAnalyticsCollection:(NSString *)consentModeValues {
if (!consentModeValues || [consentModeValues length] == 0) {
return NO;
}
for (NSUInteger i = 0; i < [consentModeValues length]; i++) {
unichar consentModeValue = [consentModeValues characterAtIndex:i];
switch (consentModeValue) {
case '0':
// Consent mode data not ready yet.
return NO;
case '1':
// Consent mode is granted for this purpose.
break;
case '2':
// Consent is denied for this consent mode purpose.
return NO;
case '3':
// Consent does not apply for this purpose at this time.
break;
case '4':
// Consent mode is not configured for this purpose.
break;
default:
// Unexpected value encountered.
return NO;
}
}
// If all checks pass, can re-enable Analytics collection.
return YES;
}
Вызовите maybeReEnableAnalyticsCollection
, когда:
- информация о согласии обновлена
- согласие получено.