Game Center 欢迎回来横幅何时触发?

When is Game Center Welcome Back banner firing?

我的 iOS 游戏正在使用 Game Center。

我正在通过以下代码进行身份验证:

GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];

localPlayer.authenticateHandler = ^(UIViewController* viewController, NSError* error) {
    if (viewController != nil) { [self.window.rootViewController presentViewController:viewController animated:YES completion:nil]; }
    else {            
        if ([GKLocalPlayer localPlayer].authenticated) {
            // code for Game Center enabled
            [[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:getLeaderboardIdentifier]; }
        else {
            // code for Game Center disabled
        }
    } // viewController was nil
}; // localPlayer.authenticateHandler

一切正常,但是当游戏在后台运行一段时间并重新启动时,即使我没有调用之前的代码,也会显示烦人的 "welcome back banner",因为我已经检查过( [GKLocalPlayer localPlayer].authenticated == YES)...

有没有办法知道我是否可以在 applicationWillEnterForeground 中使用此横幅?

更糟糕的是,是否存在触发它的已知背景延迟?

在这种情况下,为了更好的用户体验,我会稍微延迟恢复游戏...

由于似乎没有办法提前确定在 localPlayer 已经通过身份验证后是否会显示 "Welcome Back" 横幅,我现在将坚持使用后台延迟技巧。

我通过玩游戏做了二分法测试,把App留在后台,延迟D后返回App

如果 D < 8 分钟,"Welcome Back" 横幅似乎不会出现,如果 D 大于 8 分钟,则会出现。如果这可以帮助其他人改善他们的用户体验...

在我的例子中,如果当 applicationWillEnterForeground 时 D >= 8 分钟,我会禁用恢复游戏按钮 2.5 秒。大多数时候,"Welcome Back" 横幅会在那段时间出现,并且不会在艰难的游戏重新开始时打扰用户。