ios 5中的GKGameCenterViewController模拟?
ios 5中的GKGameCenterViewController模拟?,ios,game-center,Ios,Game Center,iOS 6提供了新的视图控制器来显示游戏中心信息:GKGameCenterViewController iOS 5.1是否提供了类似的功能(除了领导板和成就的单独控制器)?以下是我在应用程序中处理新旧GameCenter API的方法,它支持iOS 4和iOS 7之间的所有功能 我从GameCenterManager.m示例代码开始 1) 在GameCenterManager.m中,我更改了authenticateLocalUser - (void) authenticateLocalUser
iOS 6
提供了新的视图控制器来显示游戏中心信息:GKGameCenterViewController
iOS 5.1是否提供了类似的功能(
除了领导板和成就的单独控制器)
?以下是我在应用程序中处理新旧GameCenter API的方法,它支持iOS 4和iOS 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];
}
}
-(void)processOldGameCenterAuth:(NSError*)错误;{
//对于iOS<6.0且不带viewcontroller参数
GKLocalPlayer*localPlayer=[GKLocalPlayer-localPlayer];
if(localPlayer.isAuthenticated){
使用GameCenter=TRUE;
[self.gameCenterManager重新加载HighScores类别:KoverAlleaderBoard];
}否则{
usingGamecenter=FALSE;
}
//***这是您在登录游戏中心后更新UI的地方
}
-(void)processGameCenterAuth:(UIViewController*)gameCenterController错误:(NSError*)错误;{
if(gameCenterController){
[自我呈现视图控制器:gameCenterController动画:是完成:无];
}否则{
[自处理OldGameCenterAuth:错误];
}
}
不,没有。但是你可以自己做谢谢你。我只是需要有人来确认一下。那有可能吗?你能在这里显示代码吗?