5

iOS 6提供新的视图控制器来显示游戏中心信息:GKGameCenterViewController.

是否iOS 5.1提供类似的东西 ( except separate controllers for Leader-board and Achievements)?

4

1 回答 1

0

以下是我在我的应用程序中处理新旧 GameCenter API 的方法,它支持 iOS 4 和 7 之间的所有内容。

我从 GameCenterManager.m 示例代码开始。

1) 在 GameCenterManager.m 中,我更改了 authenticateLocalUser

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

        if ([[GKLocalPlayer localPlayer] respondsToSelector: @selector(setAuthenticateHandler:)]) {

             [[GKLocalPlayer localPlayer] setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {

                 [self callDelegateOnMainThread: @selector(processGameCenterAuth:error:) withArg: viewcontroller error: error];

             })];
         } else {


            [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
            {
                [self callDelegateOnMainThread: @selector(processOldGameCenterAuth:) error: error];
            }];
         }
    }
}

2)然后在我的主视图控制器中,这是我的两个版本的身份验证处理程序。

- (void) processOldGameCenterAuth: (NSError*) error; {
    // for iOS < 6.0 without the viewcontroller parameter

    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    if (localPlayer.isAuthenticated) {
        usingGamecenter = TRUE;
        [self.gameCenterManager reloadHighScoresForCategory: kOverallLeaderboard];
    } else {
        usingGamecenter = FALSE;
    }
    // *** this is where you update your UI after game center login
}

- (void) processGameCenterAuth: (UIViewController*) gameCenterController error: (NSError*) error; {
    if (gameCenterController) {
        [self presentViewController:gameCenterController animated:YES completion:nil];
    } else {
        [self processOldGameCenterAuth: error];
    }
}
于 2014-02-08T21:28:40.670 回答