XCode12编译出错:Undefined symbol: _OBJC_CLASS_$_ATTrackingManager

5 篇文章 0 订阅

说明:

从 iOS 14 开始,若开发者设置 App Tracking Transparency 向用户申请跟踪授权,在用户授权之前IDFA 将不可用。 如果用户拒绝此请求,应用获取到的 IDFA 将自动清零,可能会导致您的广告收入的降低

应用编译环境升级至 Xcode 12.0 及以上版本

报错信息

Showing All Messages
Arm64 function not 4-byte aligned: _unwind_tester from /Users/yz/Desktop/CSJ_Test/Build/CSJ_TestXCode/Libraries/libiPhone-lib.a(unwind_test_arm64.o)

Showing All Messages
Undefined symbol: _OBJC_CLASS_$_ATTrackingManager

解决方法:

原因是缺少了一个 Libraries 引用 “AppTrackingTransparency.framework"

在XCode中配置即可: Build Phases -> Link Binary With Libraries 

AppTrackingTransparency配置

 

穿山甲SDK

最近接入穿山甲广告SDK时遇到的这个错误问题:

后得到穿山甲官方回应:

对于国内的媒体,ATT相关的目前苹果未做强制要求。

SKAdNetworkIdentifier对海外媒体的,国内媒体也可不设置

--------------

穿山甲SDK需求:

需要 App Tracking Transparency(ATT)适用于请求用户授权,访问与应用相关的数据以跟踪用户或设备。

访问 https://developer.apple.com/documentation/apptrackingtransparency了解更多信息。

海外流量开发者需要注意: SKAdNetwork(SKAN)是 Apple 的归因解决方案,可帮助广告客户在保持用户隐私的同时衡量广告活动。

使用 Apple 的 SKAdNetwork 后,即使 IDFA 不可用,广告网络也可以正确获得应用安装的归因结果。 访问 https://developer.apple.com/documentation/storekit/skadnetwork 了解更多信息。

Checklist

  1. 应用编译环境升级至 Xcode 12.0 及以上版本
  2. 升级穿山甲 iOS SDK 3.2.5.0 及以上版本,穿山甲提供了 iOS 14 与 SKAdNetwork 支持
  3. 海外流量开发者需要检查: 将穿山甲的 SKAdNetwork ID 添加到 info.plist 中,以保证 SKAdNetwork 的正确运行
<key>SKAdNetworkItems</key>
  <array>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>238da6jt44.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>22mmun2rn5.skadnetwork</string>
    </dict>
  </array>
  1. 持苹果 ATT:从 iOS 14 开始,若开发者设置 App Tracking Transparency 向用户申请跟踪授权,在用户授权之前IDFA 将不可用。 如果用户拒绝此请求,应用获取到的 IDFA 将自动清零,可能会导致您的广告收入的降低
<key>NSUserTrackingUsageDescription</key>
<string>该标识符将用于向您投放个性化广告</string>
  • 要获取 App Tracking Transparency 权限,请更新您的 Info.plist,添加 NSUserTrackingUsageDescription 字段和自定义文案描述。代码示例:

        要向用户申请权限时,请调用 requestTrackingAuthorizationWithCompletionHandler:,我们建议您申请权限后在请求广告,以便获得穿山甲准确获得用户的授权。

Objective-C 代码示例

#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>

- (void)getIDFA {
    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
                NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
                NSLog(@"idfaStr - %@", idfaStr);
            }
        }];
    } else {
        // 使用原方式访问 IDFA
        if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
            NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
            NSLog(@"idfaStr - %@", idfaStr);
        }
    }
}

 

其它参考:https://blog.csdn.net/wuwei54321/article/details/107581070

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值