首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从接口中检索iPhone IDFA?

如何从接口中检索iPhone IDFA?
EN

Stack Overflow用户
提问于 2012-10-18 06:40:18
回答 12查看 83.5K关注 0票数 82

我想要设备的IDFA。如何从iOS官方接口获取此信息?

EN

回答 12

Stack Overflow用户

发布于 2013-10-04 03:50:31

首先:

代码语言:javascript
复制
#import <AdSupport/ASIdentifierManager.h> 

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

代码语言:javascript
复制
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

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

代码语言:javascript
复制
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
票数 95
EN

Stack Overflow用户

发布于 2014-04-22 18:18:03

如果用户决定退出广告跟踪,首先必须检查。只有他允许,你才能使用IDFA

可以通过调用ASIdentifierManagerisAdvertisingTrackingEnabled方法进行查看。

isAdvertisingTrackingEnabled

在执行任何广告跟踪之前,请检查此属性的值。如果值为NO,则仅将广告标识符用于以下目的:频率上限、转换事件、估计唯一用户数、安全性和欺诈检测以及调试。

下面的代码片段显示了如何获取字符串值IDFA

ObjC

代码语言:javascript
复制
@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;
}

斯威夫特

代码语言:javascript
复制
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
}
票数 83
EN

Stack Overflow用户

发布于 2020-09-21 22:57:34

IDFA -用于广告的标识符

代码语言:javascript
复制
isAdvertisingTrackingEnabled -> trackingAuthorizationStatus

来自iOS v14的苹果弃用了isAdvertisingTrackingEnabled,并将逻辑转移到了AppTrackingTransparency Framework中。现在用户必须授予读取idfa的权限(与位置权限相同)

用户可以通过以下方式进行控制:

代码语言:javascript
复制
#iOS 13
#AdSupport
#ASIdentifierManager.shared().isAdvertisingTrackingEnabled
Settings -> Privacy -> Advertising -> Limit Ad Tracking
代码语言:javascript
复制
#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 

实现

代码语言:javascript
复制
import AppTrackingTransparency
import AdSupport
代码语言:javascript
复制
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
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12944504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档