ISSUE-022
App跟踪询问窗口不显示
常见表现
加载卡住,登录卡住。
游戏提示接下来会弹出App跟踪询问窗口,但没有出现任何界面。
相关源码
PlayTools PlayShadow.m
+ (void) load {
//...
[objc_getClass("ATTrackingManager") swizzleClassMethod:@selector(requestTrackingAuthorizationWithCompletionHandler:) withMethod:@selector(pm_return_2_with_completion_handler:)];
[objc_getClass("ATTrackingManager") swizzleClassMethod:@selector(trackingAuthorizationStatus) withMethod:@selector(pm_return_2)];
//...
}
原因分析
游戏请求弹出App跟踪询问窗口,等待窗口关闭后才会继续下一步加载或登录操作。但是在Mac上运行的iOS应用是不会弹出这个窗口的,所以应用会一直等待结果,故而卡住了。
如上面的源码所示,其实PlayCover早已对这个问题做了处理。但是在运行某些游戏时,由于AppTrackingTransparency.framework加载得太慢,源码中的objc_getClass("ATTrackingManager")为nil,导致这个处理被跳过了。
解决方法
方法一:修改PlayCover代码,提前加载AppTrackingTransparency.framework。
方法二:写入补丁,让游戏跳过App跟踪这个步骤。