Zac*_*ake 78
首先:
#import <AdSupport/ASIdentifierManager.h>
Run Code Online (Sandbox Code Playgroud)
如果您想将其作为NSString,请使用:
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]
Run Code Online (Sandbox Code Playgroud)
所以你的代码可能如下所示:
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
Run Code Online (Sandbox Code Playgroud)
Raf*_*fAl 67
首先,您必须检查用户是否已决定退出广告跟踪.只有他允许你才能使用IDFA
.
你可以通过调用isAdvertisingTrackingEnabled
方法来检查它ASIdentifierManager
.
isAdvertisingTrackingEnabled
在执行任何广告跟踪之前,请检查此媒体资源的价值.如果值为
NO
,则仅将广告标识符用于以下目的:频次上限,转换事件,估计唯一用户的数量,安全性和欺诈检测以及调试.
以下代码段显示了如何获取字符串值IDFA
.
@import AdSupport;
- (NSString *)identifierForAdvertising {
// Check whether advertising tracking is enabled
if([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSUUID *identifier = [[ASIdentifierManager sharedManager] advertisingIdentifier];
return [identifier UUIDString];
}
// Get and return IDFA
return nil;
}
Run Code Online (Sandbox Code Playgroud)
import AdSupport
func identifierForAdvertising() -> String? {
// Check whether advertising tracking is enabled
guard ASIdentifierManager.shared().isAdvertisingTrackingEnabled else {
return nil
}
// Get and return IDFA
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
Run Code Online (Sandbox Code Playgroud)
Cod*_*aFi 14
ASIdentifierManager是从运行iOS 6+的设备获取广告标识号的官方方式.你可以-[[ASIdentifierManager sharedManager] advertisingIdentifier];
用来获得它.
Amr*_*fie 12
在Swift中获取IDFA:
import AdSupport
...
let myIDFA: String?
// Check if Advertising Tracking is Enabled
if ASIdentifierManager.sharedManager().advertisingTrackingEnabled {
// Set the IDFA
myIDFA = ASIdentifierManager.sharedManager().advertisingIdentifier.UUIDString
} else {
myIDFA = nil
}
Run Code Online (Sandbox Code Playgroud)
yoA*_*ex5 10
IDFA
- 广告标识符
isAdvertisingTrackingEnabled -> trackingAuthorizationStatus
Run Code Online (Sandbox Code Playgroud)
从iOS v14 开始, Apple 弃用了isAdvertisingTrackingEnabled
并将逻辑移到AppTrackingTransparency
Framework 中。现在用户必须授予阅读权限idfa
(与位置权限相同)
用户可以通过以下方式控制它:
#iOS 13
#AdSupport
#ASIdentifierManager.shared().isAdvertisingTrackingEnabled
Settings -> Privacy -> Advertising -> Limit Ad Tracking
Run Code Online (Sandbox Code Playgroud)
#iOS 14
#AppTrackingTransparency
#ATTrackingManager.trackingAuthorizationStatus
#a global flag
Settings -> Privacy -> Tracking -> `Allow Apps to Request to Track`
#or select an app from list to control every app separately
#a local flag
Settings -> <app_name> -> Allow Tracking
Run Code Online (Sandbox Code Playgroud)
执行
import AppTrackingTransparency
import AdSupport
Run Code Online (Sandbox Code Playgroud)
func getIDFA() -> String? {
// Check whether advertising tracking is enabled
if #available(iOS 14, *) {
if ATTrackingManager.trackingAuthorizationStatus != ATTrackingManager.AuthorizationStatus.authorized {
return nil
}
} else {
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled == false {
return nil
}
}
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
Run Code Online (Sandbox Code Playgroud)
从iOS 10开始,当用户启用"限制广告跟踪"时,操作系统将沿着广告标识符发送新值"00000000-0000-0000-0000-000000000000".
根据这篇文章:https://fpf.org/2016/08/02/ios-10-feature-stronger-limit-ad-tracking/
这是Swift中一个注释的帮助器类,nil
如果用户关闭了广告跟踪,它将为您提供标识符的对象:
import AdSupport
class IDFA {
// MARK: - Stored Type Properties
static let shared = IDFA()
// MARK: - Computed Instance Properties
/// Returns `true` if the user has turned off advertisement tracking, else `false`.
var limited: Bool {
return !ASIdentifierManager.shared().isAdvertisingTrackingEnabled
}
/// Returns the identifier if the user has turned advertisement tracking on, else `nil`.
var identifier: String? {
guard !limited else { return nil }
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
}
Run Code Online (Sandbox Code Playgroud)
只需将其添加到项目中(例如,在名为的文件中IDFA.swift
),然后AdSupport.framework
通过"常规设置"选项卡中的"链接的框架和库"部分链接目标.
然后你可以像这样使用它:
if let identifier = IDFA.shared.identifier {
// use the identifier
} else {
// put any fallback logic in here
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特3和4
var IDFA = String()
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
IDFA = ASIdentifierManager.shared().advertisingIdentifier
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64591 次 |
最近记录: |