1

我在我的应用程序上使用 GameCenter。我有这些线

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[localPlayer authenticateWithCompletionHandler:^(NSError *error) {
    if (localPlayer.isAuthenticated)
    {

        }

问题是 localPlayer.isAuthenticated 标志始终为 TRUE bur 错误变量带有代码 2 =“操作被取消”(???)。

我已从设备的游戏中心和商店注销,但此标志始终为真,我没有看到我的应用程序启动时应显示的游戏中心登录。当使用游戏中心的游戏开始时,我看不到总是显示的“欢迎”横幅。

如何强制退出游戏中心以使登录窗口再次显示?

我正在为 iOS 4.3 编译。

谢谢


我现在发现的是,如果您从未登录设备的游戏中心,就会发生这种情况。一旦你在那里登录,并说你想在游戏中心使用你的用户名,该应用程序就可以工作了。最糟糕的是:假设有人下载了游戏,但还没有设置游戏中心。那么,游戏永远不适合他们?我的游戏应该只在游戏中心上运行。所以,对我来说这是一个问题。

4

1 回答 1

0

对我来说它工作得很好。刚刚更改了代码

if([GKLocalPlayer localPlayer].authenticated)

if([GKLocalPlayer localPlayer].authenticated == NO)

//其他代码

if([GKLocalPlayer localPlayer].authenticated == NO)
    {
              [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
             {
                  [self processGameCenterAuth: error];
             }];
    }


- (void) processGameCenterAuth: (NSError*) error
{
    if(error == NULL)
    {
        [mGameCenterManager reloadHighScoresForCategory: self.currentLeaderBoard];
    }
    else
    {
        // NSLog(@"%@\n\n",[NSString stringWithFormat: @"Reason: %@", [error localizedDescription]]);

        AppController *app = (AppController*)[UIApplication sharedApplication].delegate;

        if(!app.isgameCenterStarted)
        {
            UIAlertView* alert= [[[UIAlertView alloc] initWithTitle:@"Game Center Unavailable" message: @"Player is not signed in"
                                                           delegate: NULL cancelButtonTitle: @"OK" otherButtonTitles: NULL] autorelease];
            [alert show];
        }
        else
        {
            [[NSNotificationCenter defaultCenter] postNotificationName:@"GameCenterUnAvailable" object:nil];
        }
    }

}
于 2013-02-17T08:38:39.120 回答