如果帐户从未与游戏中心一起使用,则取消GameCenter操作

时间:2013-02-16 19:21:21

标签: iphone ios ipad game-center

我在我的应用上使用GameCenter。我有这些行

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

        }

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

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

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

我正在为iOS 4.3编译。

感谢


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

1 个答案:

答案 0 :(得分: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];
        }
    }

}