Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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跟踪这个步骤。