iOS 6
提供新的视图控制器来显示游戏中心信息:GKGameCenterViewController
.
是否iOS 5.1
提供类似的东西 ( except separate controllers for Leader-board and Achievements)
?
iOS 6
提供新的视图控制器来显示游戏中心信息:GKGameCenterViewController
.
是否iOS 5.1
提供类似的东西 ( except separate controllers for Leader-board and Achievements)
?
以下是我在我的应用程序中处理新旧 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];
}
}