ios - 如何从 API 检索 iPhone IDFA?

标签 ios iphone tvos idfa

我想获取设备 IDFA。如何从 iOS 官方 API 获取此信息?

最佳答案

首先,您必须征求用户的许可才能使用他们的 IDFA:

#import <AppTrackingTransparency/AppTrackingTransparency.h> 

[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
 // Tracking authorization completed. Start loading ads here. 
 }];

此权限流只会运行一次,即第一次调用时,即使您重新启动应用程序和/或再次调用它也是如此。如果您想以不同的方式回答,则必须从设备或模拟器中完全删除该应用程序并重新安装。请注意,无论权限流的答案如何,iOS 模拟器都会返回空白 IDFA(全为零)。参见 https://developer.apple.com/documentation/apptrackingtransparency有关详细信息,包括如何自定义在要求跟踪用户时向用户显示的消息。请注意,许多广告 SDK 都有自己的同意流程调用供您使用。

在获得许可后实际获取 IDFA:

#import <AdSupport/ASIdentifierManager.h> 

如果您想将其作为 NSString 获取,请使用:

[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

因此您的代码可能如下所示:

NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog (@"IDFA: %@", idfaString);

关于ios - 如何从 API 检索 iPhone IDFA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944504/

相关文章:

ios - 如何加速 tvOS 中的 UICollectionView 单元格渲染

swift - modalPresentationStyle .overCurrentContext 导致呈现 View Controller 上的远程按钮按下出现问题

ios - 在 Swift 中的动态表中的自定义单元格之间移动数据

ios - Swift:字符串 url 编码没有按预期工作

iphone - GLSL ES 1.1 中卷积的高效邻域纹理访问

ios - swift : How to programmatically change a label/view size depending on iPhone (eg. iPhone SE,iPhone 8)?

swift - 如何在计时器过期后从 UIButton 移除焦点(tvOS)

ios - 如何从苹果源码编译使用objc runtime?

ios - 我如何观察 ReactiveSwift 中 UIControl 子类的变化?

ios - swift 3.0 的选择器语法