我已经学习了一些教程&关于使用Objective C验证本地玩家的Game Center功能的苹果文档。目前,我们的测试版具有适用于排行榜的Game Center验证功能。然而,对成就的认证似乎有问题,因为我们的成就都不是来自iTunes Connect。在ViewController.m中,第一次身份验证如下所示:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(showAuthenticationViewController)
name:PresentAuthenticationViewController
object:nil];
[[GameKitHelper sharedGameKitHelper] authenticateLocalPlayer];
}
- (void)showAuthenticationViewController
{
GameKitHelper *gameKitHelper = [GameKitHelper sharedGameKitHelper];
UIViewController *vc = self.view.window.rootViewController;
[vc presentViewController: gameKitHelper.authenticationViewController animated:YES completion:nil]; }
在GameKitHelper中,下一个身份验证步骤发生:
- (void)authenticateLocalPlayer
{
//1
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
//3
[self setLastError:error];
if(viewController != nil) {
//4
[self setAuthenticationViewController:viewController];
} else if([GKLocalPlayer localPlayer].isAuthenticated) {
//5
_enableGameCenter = YES;
NSLog(@"Successful");
} else {
//6
_enableGameCenter = NO;
NSLog(@"Failure");
}
};
}
加载成绩时,使用以下功能:
-(void)achievementLoad {
if (_enableGameCenter) {
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {
if (error != nil) {
NSLog(@"Error in loading achievements.");
}
if (achievements != nil) {
//Process achievements.
for (GKAchievement *temp in achievements) {
//temp
[[GameKitHelper sharedGameKitHelper].achievementsDictionary setObject:temp forKey:temp.identifier];
//[_achievementsDictionary setObject:temp forKey:temp.identifier];
}
NSLog(@"Achievements Retrievemented");
}
}];
} else {
NSLog(@"Achievements not loaded");
}
}
当尝试检索成就时,游戏将始终报告"错误代码6:玩家未通过身份验证"(错误!=nil为true)。然后,当我尝试使用成就字典时,它被设置为nil,这没有意义。
我已经激活了Game Center的iTunes Connect信息,并且我已经使用沙箱帐户登录。还有什么是我做错的吗?
任何帮助都将不胜感激。谢谢
- 确保在developer.apple.com上的标识符下,检查您的应用程序,验证"Game Center已打开"
- 在Xcode中,确保在"功能"下的"目标"中,确保Game Center Switch已打开
- 确保你包括GameKit.framework(构建阶段,链接二进制与库)
- 在iTunes Connect中,对于您的应用程序,请确保应用程序和iTunes Connect中的版本号相同
- 在您的应用程序版本(预提交)中的iTunes Connect中,确保该版本的游戏中心按钮已打开,并且您已在应用程序版本屏幕中添加排行榜/成就(单击+)
- 确保您的iOS设备确实已登录Game Center(请注销并重新登录)