如何将AppTrackingTransparency权限添加到iOS应用程序
我对iOS非常陌生,没有任何iOS开发经验,但是,我被分配了一项任务,与准备iOS 14+有关。根据我的发现,为了确保收入不会损失,我需要做两件事如何将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 <
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, *)