---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/ios/support-ios14.md
  - https://ads.yandex.com/helpcenter/ru/dev/ios/support-ios14.md
  - https://ads.yandex.com/helpcenter/zh/dev/ios/support-ios14.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/zh/llms.txt

# 支持 iOS 14


从 2021 年 1 月开始，Apple [限制 iOS 14 上对 IDFA 的访问](https://developer.apple.com/news/?id=hx9s63c5)。这意味着 Apple 将不再默认提供 IDFA。IDFA（广告商标识符）是用于广告归因和重定向的唯一设备 ID。

Yandex Mobile Ads SDK 使用 IDFA 通过展示更相关的广告来最大限度地提高发布商收入。

要接收 IDFA，应用开发人员现在必须明确请求用户的许可。您可以使用 [AppTrackingTransparency 框架](#tech) 来执行此操作。

它的工作原理类似于发送推送通知的请求。

## 请求访问 IDFA 的权限 {#request-idfa}

启动应用时，使用 [trackingAuthorizationStatus](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547038-trackingauthorizationstatus) 属性检查权限状态。进一步的建议取决于用户是否禁用了对 IDFA 的访问。

<!-- source: zh/dev/_includes/idfa-access.md -->
### 用户没有禁用对 IDFA 的访问 {#no-access-ban}

该应用只能向用户显示一次 IDFA 访问权限请求，因此说服用户授予权限非常重要。

与用户互动的策略：

1. 在显示系统对话框之前，显示一个对话框解释以下内容：

   - 具体请求是什么。
   - 它将如何使用。
   - 为什么用户应该允许访问。

   您可以在屏幕上添加按钮，例如 **Allow** 和 **Not Now**。

   {% note info %}

   如果用户同意在附带解释的应用对话框中授予权限，那么他们很可能会在系统对话框中表示同意。如果用户拒绝在附带解释的对话框中授予权限，您将能够再次显示此对话框。

   {% endnote %}
   

   {% cut "附带说明的示例对话框" %}

   <img src="https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/ru/images/alert-ios-14-2-en.png">

   {% endcut %}

2. 通过 [App Tracking Transparency](#tech) 请求访问 IDFA。

### 用户禁用了对 IDFA 的访问 {#access-ban-exists}

用户可能在系统对话框中拒绝授予 IDFA 访问权限。

与用户互动的策略：

1. 在应用中，显示一个对话框解释以下内容：

   - 具体请求是什么。
   - 它将如何使用。
   - 为什么用户应该允许访问。

   您可以在屏幕上添加按钮，例如 **Allow** 和 **Not Now**。

   {% cut "附带说明的示例对话框" %}

   <img src="https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/ru/images/alert-ios-14-2-en.png">

   {% endcut %}

2. 通过 [UIApplication.openSettingsUrlString](https://developer.apple.com/documentation/uikit/uiapplication/1623042-opensettingsurlstring) 将用户重定向到设置。

   {% cut "禁用访问权限的示例用户设置" %}

   <img src="https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/ru/images/alert-ios-14-3.png">

   {% endcut %}
<!-- endsource: zh/dev/_includes/idfa-access.md -->

<!-- source: zh/dev/_includes/idfa-app-tracking-transparency.md -->
## 通过 App Tracking Transparency 请求访问 IDFA 的权限 {#tech}

在 iOS 14 中，使用名为 [App Tracking Transparency](https://developer.apple.com/documentation/apptrackingtransparency) 的新框架来显示应用中的系统对话框。用户将在其中选择允许或拒绝对 IDFA 的访问权限。

{% note info %}

该系统对话框只能在每次安装应用时显示一次。如果用户选择 **Ask App Not to Track**，您将无法再次显示此应用的对话框。

{% endnote %}

1. 您无法更改系统对话框，但可以向其添加附带解释的文本。为此，请将 `NSUserTrackingUsageDescription` 键添加到 Info.plist。例如：

   ```xml
   <key>NSUserTrackingUsageDescription</key>
   <string>This identifier will be used to deliver personalized ads to you.</string>
   ```

   Info.plist 中的文本将在系统对话框中向用户显示。在文本中，向用户解释应用请求使用 IDFA 的权限的原因。
2. 要显示请求访问 IDFA 权限的对话框，请调用 [requestTrackingAuthorization(completionHandler:)](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorization) 方法。

   {% cut "系统对话框示例" %}

   <img src="https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/ru/images/alert-ios-14.png">

   {% endcut %}

3. 在加载广告之前，请等待收到回调。然后，Yandex Mobile Ads SDK 将能够在广告请求中使用 IDFA。

   ```swift
   import AppTrackingTransparency
   // ...

   func requestTrackingAuthorization() {
       ATTrackingManager.requestTrackingAuthorization { status in
           // 开始广告加载

       }
   }
   ```
4. 要检查 App Tracking Transparency 状态，请使用 [trackingAuthorizationStatus](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547038-trackingauthorizationstatus) 属性。

在 [Apple](https://developer.apple.com/documentation/apptrackingtransparency) 文档中阅读了解有关 App Tracking Transparency 的更多信息。
<!-- endsource: zh/dev/_includes/idfa-app-tracking-transparency.md -->

