# 设置 GDPR 同意

> 使用推荐的最佳实践，使用开发者同意 API 设置自己的自定义同意解决方案，以符合 app 的 GDPR 要求。

所有版本的 Unity Ads SDK 都符合《通用数据保护条例》(GDPR)，该条例于 2018 年 5 月 25 日在欧洲经济区 (EEA) 生效。

访问我们的法务站点以了解有关 [Unity 的隐私方法](https://unity.com/legal)的更多信息。

## 实现自定义同意解决方案##implement-a-custom-consent-solution

如果在应用中实现自定义同意解决方案，必须将用户的同意状态发送给 Unity Ads SDK。

以下各部分将介绍以非 TCF 用户身份和具有集成 CMP 的 TCF 用户身份实现自定义同意的准则。

### 使用 Developer Consent API 实现自定义同意##custom-consent-implementation-using-developer-consent-api

如果发行商或聚合平台通过我们的 [Developer Consent API](#custom-consent-implementation-using-developer-consent-api) 向我们发送值，则不会显示 Unity 同意请求。请注意，用户仍然可以随时请求拒绝定向投放广告或删除他们的数据，并可以在广告展示期间随时通过选择 Unity Data Privacy（Unity 数据隐私）图标来访问他们的数据。

虽然建议最好对 `MetaData` 同意标志使用布尔值，但 Unity Ads SDK 也接受整数值（1 或 0），其中 1 表示“`true`”，0 表示“`false`”。这样可以确保与可能使用这些整数值的自定义 SDK 或旧版 SDK 实现之间兼容。虽然 Unity Ads SDK 支持整数值，但鼓励发行商使用布尔值传递同意标志，如以下代码示例中所示。

请使用以下 API 将同意标志传递给 Unity Ads SDK。

> **Tip:**
>
> 如果用户没有执行任何操作来表示接受或拒绝定向投放广告（例如，直接关闭了提示），建议最好稍后再次提示用户。

1. **Unity (C#)**

   ```cs
   // If the user opts out of personalized ads: 
   MetaData userMetaData = new MetaData("user");
   userMetaData.Set("nonbehavioral", "true");
   Advertisement.SetMetaData(userMetaData);

   // If the user opts in to personalized ads:
   MetaData userMetaData = new MetaData("user");
   userMetaData.Set("nonbehavioral", false);
   Advertisement.SetMetaData(userMetaData);
   ```

   > **Note:**
   >
   > 必须先为每个值提交 `MetaData` 对象的更改，然后才能尝试设置另一个值。

2. **iOS (Objective-C)**

   ```objective-c
   // If the user opts in to targeted advertising: 
   UADSMetaData *gdprConsentMetaData = [[UADSMetaData alloc] init];
   [gdprConsentMetaData set:@"gdpr.consent" value:@YES];
   [gdprConsentMetaData commit];

   // If the user opts out of targeted advertising:
   UADSMetaData *gdprConsentMetaData = [[UADSMetaData alloc] init];
   [gdprConsentMetaData set:@"gdpr.consent" value:@NO];
   [gdprConsentMetaData commit];
   ```

   > **Note:**
   >
   > 必须先为每个值提交 `MetaData` 对象的更改，然后才能尝试设置另一个值。

3. **Android (Java)**

   ```java
   // If the user opts in to targeted advertising: 
   MetaData gdprMetaData = new MetaData(this);
   gdprMetaData.set("gdpr.consent", true);
   gdprMetaData.commit();

   // If the user opts out of targeted advertising:
   MetaData gdprMetaData = new MetaData(this);
   gdprMetaData.set("gdpr.consent", false);
   gdprMetaData.commit();
   ```

   > **Note:**
   >
   > 必须先为每个值提交 `MetaData` 对象的更改，然后才能尝试设置另一个值。
