04/29/2024 11:54:53

解决方案

1、MSDKSensitivity 插件是必接的吗?

不是必接的组件。
需要采集 IDFA 时,可根据第二点的步骤描述接入 MSDKSensitivity 插件。
不需要采集 IDFA 时,游戏可以删除 MSDKSensitivity.framework ;如果在使用 Xcode 12 编译需要在工程中删除 AppTrackingTransparency.framework 等,具体请参考 接入教程(iOS)

2、通过 AppTrackingTransparency 框架获取 IDFA 具体步骤有哪些?

(1)Xcode - Build Phases - Link Binary With Libraries 新增 AppTrackingTransparency.framework(XCode 12以上)。
(2)Info.plist 中新增 key Privacy - Tracking Usage Description ,value 填写使用 IDFA 原因。
(3)XCode 工程的 Bulid Phrases 中引入 MSDKSensitivity.framework。
(4)MSDKConfig.ini 文件中,将 MSDK_APP_TRACKING_ENABLE 参数的值置为 1(需要 MSDK V5版本,版本号5.12及以上);
在游戏开发工程的 info.plist添加键 MSDK_APP_TRACKING_ENABLE 和值 YES (需要 MSDK V3版本,版本号3.3.16及以上)。

3、业务接入了 MSDKSensitivity 插件并打入了相关的 MSDKConfig 和 info.plist 配置后,要怎么验证这个插件接入成功?有没有相应的表现或者log可以作为判断依据吗?

游戏如果自己获取的话,可以看到是否获取成功;如果是要验证msdk是否可以正常获取的话,需要从 tlog 中查询相关字段是否有 IDFA 数据。

4、游戏侧如何弹出相关的 IDFA 权限弹窗?

弹窗都是由游戏自己弹的,MSDK 目前没有提供接口。
弹窗可以通过 Apple 原生层接口,参考:

#import <AppTrackingTransparency/AppTrackingTransparency.h>
if (@available(iOS 14.0, *)) {
    [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {

    }];
}

5、新的 AppTrackingTransparency 方式与旧的 AdvertisingIdentifier(ASI)方式获取 IDFA 有何区别?

接入 ATT 框架后,依然是通过 ASI 的方式获取 IDFA,接口并没有发生变化(Apple 也没有提供新的接口),接入 ATT 框架只是给获取 IDFA 的过程中加上必要的权限申请和判断逻辑。
根据 Apple 官方文档说明的描述,接入 ATT 框架共分为3步:https://developer.apple.com/documentation/apptrackingtransparency/
步骤1:info.plist 设置请求权限的文案
步骤2:客户端弹窗对玩家请求权限
步骤3:根据玩家的授权情况判断是否调用接口获取 IDFA
MSDK 侧已处理步骤3,其他的两步需要由游戏侧处理。(处理的对应版本详见下面第6点)

图片描述

6、MSDK 侧是否通过 AppTrackingTransparency 框架来获取 IDFA?

MSDK 5.12/MSDK 3.3.15 之前版本没有通过 AppTrackingTransparency 框架来获取 IDFA。
MSDK收到苹果变更后,在 5.12/3.3.15及后面的版本新增 AppTrackingTransparency 框架来获取 IDFA,是否选择该方式获取,由项目组决定(是否接入 MSDKSensitivity 插件)。
附:几个关键版本

MSDK V5 版本 MSDK V3 版本
开始使用 ATT 框架版本 5.12 3.3.15
添加开关兼容 IDFA 的采集版本 5.12 3.3.16

7、如果不接入 AppTrackingTransparency 框架,提审时候具体会有怎么样的风险?

图片描述

https://developer.apple.com/app-store/user-privacy-and-data-use/

目前已知的风险是:苹果官方文档明确说明从 iOS14.5开始,必须接入 ATT 框架给用户弹窗授权。业务侧可自行决策。

8、在完全按照文档步骤配置 IDFA 相关配置后,调用 Apple ATT API:[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler],无法弹出询问授权 IDFA 的弹窗,永远返回结果是2(ATTrackingManagerAuthorizationStatusDenied)

iOS 系统的 bug,iOS 14.2/14.3/14.4 部分设备会复现, Apple 论坛说重置系统设置并重装应用可以解决,https://developer.apple.com/forums/thread/671623

图片描述

9、通过 ATT API 弹出 IDFA 弹窗并确认授予权限后,确认应用有 IDFA 权限,但是查看日志上报数据的 postBody 中,上报的 IDFA 数据为空,日志中有输出:[(TDeviceInfoHolder.cpp:141) IsDeviceInfoEnable] : is enable device info: 0

MSDK 5.8 版本开始,MSDK 开始使用 TDM 获取到的 IDFA ,如果关闭了 TDM 获取设备信息的开关,MSDK 将无法获取到 IDFA 数据。
http://docs.tdm.woa.com/docs/sdks/android-sdk.html#android-five

图片描述



Copyright © 2024 MSDK.
All rights reserved.

results matching ""

    No results matching ""