7

我正在开发使用 Game Center 的游戏,我收到下一个警告;

... 'authenticateWithCompletionHandler:' 已弃用:首先在 iOS 6.0 中弃用

好的,我搜索并发现有用于验证本地用户的新代码,所以我替换了

旧代码:

- (void)authenticateLocalUser {

    if (!gameCenterAvailable) return;

    NSLog(@"Authenticating local user...");
    if ([GKLocalPlayer localPlayer].authenticated == NO) {
        [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil];
    } else {
        NSLog(@"Already authenticated!");
    }
}

与新的:

- (void)authenticateLocalUser {

    if (!gameCenterAvailable) return;

    NSLog(@"Authenticating local user...");

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

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
        [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
        //[localPlayer authenticateWithCompletionHandler:^(NSError *error) { OLD CODE!
            if(localPlayer.isAuthenticated) {
                //do some stuff
            }else {
                // not logged in   
            }
        })]; 
    } else {
        NSLog(@"Already authenticated!");   
    }   
}

一切都很好,除了一件事。如果用户未登录,则没有 Game Center 登录表单。使用旧代码,如果用户未登录,它会显示 Game Center 登录表单。

有没有我必须输入的额外代码或其他东西?

额外信息:-横向模式-部署目标:6.0

4

1 回答 1

10

是的,您必须使用 iOS6 手动呈现登录表单,这让您可以更好地控制何时呈现屏幕。试试这个

localPlayer.authenticateHandler = ^(UIViewController *viewController,NSError *error) {
if (localPlayer.authenticated) { 
//already authenticated
} else if(viewController) {
[self presentViewController:viewController];//present the login form
} else {
//problem with authentication,probably bc the user doesn't use Game Center
} 
};
于 2013-01-21T08:14:45.323 回答