Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将AppTrackingTransparency权限添加到iOS应用程序_Ios_Swift_Permissions_Ads_Ios14 - Fatal编程技术网

如何将AppTrackingTransparency权限添加到iOS应用程序

如何将AppTrackingTransparency权限添加到iOS应用程序,ios,swift,permissions,ads,ios14,Ios,Swift,Permissions,Ads,Ios14,我对iOS非常陌生,没有任何iOS开发经验,但是,我被分配了一项任务,与准备iOS 14+有关。根据我的发现,为了确保收入不会损失,我需要做两件事 为AdMob或Ad Manager安装最新的iOS版Google Mobile Ads SDK(7.64或更高版本) 将AppTrackingTransparency权限添加到iOS应用程序 我遵循了一些指南,现在正着手将AppTrackingTransparency权限添加到iOS应用程序中。这是我正在使用的指南 我在Info.plist <

我对iOS非常陌生,没有任何iOS开发经验,但是,我被分配了一项任务,与准备iOS 14+有关。根据我的发现,为了确保收入不会损失,我需要做两件事

  • 为AdMob或Ad Manager安装最新的iOS版Google Mobile Ads SDK(7.64或更高版本)
  • 将AppTrackingTransparency权限添加到iOS应用程序
  • 我遵循了一些指南,现在正着手将
    AppTrackingTransparency权限添加到iOS应用程序中。这是我正在使用的指南

    我在
    Info.plist

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

    问题2
    ,代码是否存在于
    AppDelegate.swift
    ?或者它真的只是代码库中合适的地方吗?谢谢。

    对于那些可能会遇到同样问题的人,我让AppTrackingTransparency对话框与函数一起出现

    import AppTrackingTransparency
    import AdSupport
    
    //NEWLY ADDED PERMISSIONS FOR iOS 14
    func requestPermission() {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                switch status {
                case .authorized:
                    // Tracking authorization dialog was shown
                    // and we are authorized
                    print("Authorized")
                    
                    // Now that we are authorized we can get the IDFA
                    print(ASIdentifierManager.shared().advertisingIdentifier)
                case .denied:
                    // Tracking authorization dialog was
                    // shown and permission is denied
                    print("Denied")
                case .notDetermined:
                    // Tracking authorization dialog has not been shown
                    print("Not Determined")
                case .restricted:
                    print("Restricted")
                @unknown default:
                    print("Unknown")
                }
            }
        }
    }
    //
    
    然后,我在应用程序的登录页面上简单地调用了函数
    requestPermission()
    ,以便用户在登录之前看到权限对话框。如果不调用该函数,则本指南中显示的对话框不会为我显示


    这篇文章有一个github项目的例子:

    还有一点,苹果添加了一个新的隐私设置“跟踪”,其中包含“允许应用程序请求跟踪”。如果禁用该选项,iOS将忽略所有权限屏幕请求


    您可以在

    中查看更多详细信息,作为@mark answer的完成,您还应该根据您发布的链接,在关键隐私-跟踪使用说明中的plist文件中添加权限声明:

    避免AdMob收入损失的主要方法是将其添加到Info.plist中:

    <key>SKAdNetworkItems</key>
    <array>
      <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cstr6suwn9.skadnetwork</string>
      </dict>
    </array>
    
    SKAdNetworkItems
    斯卡德网络标识符
    cstr6suwn9.skadnetwork
    

    我不知道何时/是否需要AppTrackingTransparency许可。我知道苹果公司说你需要它,但他们没有给出最后期限。谷歌说“如果你决定加入应用程序跟踪透明度”,这对我来说是暗示不要麻烦了

    如果用户未授予应用程序跟踪权限,会发生什么情况?然后,当用户不允许跟踪权限时,您无法获得IDFA,那么您的收入将再次下降…有关更多信息,请参阅

    为了解决这个问题,谷歌移动广告SDK支持使用苹果的转换跟踪,这使得谷歌可以在IDFA不可用的情况下安装应用程序

    为广告商提供的SKAdNetwork解决方案可为苹果的SKAdNetwork提供开箱即用的支持,并在iOS 14及更高版本上实现最大的未来增长

    要修复此问题,请启用SKAdNetwork跟踪转换

    Google Mobile Ads SDK支持使用苹果的SKAdNetwork进行转换跟踪,即使在IDFA不可用的情况下,该网络也允许Google安装应用程序

    要启用此功能,请使用另一个字典更新
    SKAdNetworkItems
    键,该字典定义Info.plist中Google的
    SKAdNetworkIdentifier

        <key>SKAdNetworkItems</key>
      <array>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>cstr6suwn9.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>4fzdc2evr5.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>2fnua5tdw4.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>ydx93a7ass.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>5a6flpkh64.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>p78axxw29g.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>v72qych5uu.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>c6k4g5qg8m.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>s39g8k73mm.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>3qy4746246.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>3sh42y64q3.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>f38h382jlk.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>hs6bdukanm.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>prcb7njmu6.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>wzmmz9fp6w.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>yclnxrl5pm.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>4468km3ulz.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>t38b2kh725.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>7ug5zh24hu.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>9rd848q2bz.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>n6fk4nfna4.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>kbd757ywx3.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>9t245vhmpl.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>2u9pt9hc89.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>8s468mfl3y.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>av6w8kgt66.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>klf5c3l5u5.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>ppxm28t8ap.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>424m5254lk.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>uw77j35x4d.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>e5fvkxwrpn.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>zq492l623r.skadnetwork</string>
        </dict>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>3qcr597p9d.skadnetwork</string>
        </dict>
      </array>
    
    SKAdNetworkItems
    斯卡德网络标识符
    cstr6suwn9.skadnetwork
    斯卡德网络标识符
    4fzdc2evr5.skadnetwork
    斯卡德网络标识符
    2fnua5tdw4.skadnetwork
    斯卡德网络标识符
    ydx93a7ass.skadnetwork
    斯卡德网络标识符
    5a6flpkh64.skadnetwork
    斯卡德网络标识符
    p78axxw29g.skadnetwork
    斯卡德网络标识符
    v72qych5uu.skadnetwork
    斯卡德网络标识符
    c6k4g5qg8m.skadnetwork
    斯卡德网络标识符
    s39g8k73mm.skadnetwork
    斯卡德网络标识符
    3qy4746246.skadnetwork
    斯卡德网络标识符
    3sh42y64q3.skadnetwork
    斯卡德网络标识符
    f38h382jlk.skadnetwork
    斯卡德网络标识符
    hs6bdukanm.skadnetwork
    斯卡德网络标识符
    prcb7njmu6.skadnetwork
    斯卡德网络标识符
    wzmmz9fp6w.skadnetwork
    斯卡德网络标识符
    yclnxrl5pm.skadnetwork
    斯卡德网络标识符
    4468km3ulz.skadnetwork
    斯卡德网络标识符
    t38b2kh725.0斯卡德网络
    斯卡德网络标识符
    7ug5zh24hu.skadnetwork
    斯卡德网络标识符
    9rd848q2bz.skadnetwork
    斯卡德网络标识符
    n6fk4nfna4.skadnetwork
    斯卡德网络标识符
    kbd757ywx3.skadnetwork
    斯卡德网络标识符
    9t245vhmpl.skadnetwork
    斯卡德网络标识符
    2u9pt9hc89.skadnetwork
    斯卡德网络标识符
    8s468mfl3y.skadnetwork
    斯卡德网络标识符
    av6w8kgt66.skadnetwork
    斯卡德网络标识符
    klf5c3l5u5.skadnetwork
    斯卡德网络标识符
    ppxm28t8ap.skadnetwork
    斯卡德网络标识符
    424m5254lk.skadnetwork
    斯卡德网络标识符
    uw77j35x4d.skadnetwork
    斯卡德网络标识符
    e5fvkxwrpn.skadnetwork
    斯卡德网络标识符
    zq492l623r.skadnetwork
    斯卡德网络标识符
    3qcr597p9d.skadnetwork
    
    我们正在使用Firebase和Facebook,为了让应用程序获得批准,我们将这两个电话“置于”ATT保护之后,即:

    对于Facebook(来自AppDelegate):

    对于Firebase:

        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                if status == .authorized {
                    Analytics.logEvent(eventName, parameters: [:])
                }
            }
        }
    

    至于通知的firebase令牌,我们没有将它们包括在保护之后,也没有问题。

    现在,根据iOS 14.0+提交到应用商店的所有新应用都需要此令牌

    1.在Xcode中添加框架 这可以通过导航到
    .xcproject/.xcworkspace->General->框架、库和嵌入式内容来实现

    2.添加
    NSUserTrackingUsageD
    
            if #available(iOS 14, *) {
                ATTrackingManager.requestTrackingAuthorization { status in
                    if status == .authorized {
                            ApplicationDelegate.shared.application(
                                application,
                                didFinishLaunchingWithOptions: launchOptions
                            )
                    }
                }
    
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                if status == .authorized {
                    Analytics.logEvent(eventName, parameters: [:])
                }
            }
        }
    
    if #available(iOS 14.0, *)