我现在正在与 Game Center 合作。我在 ITC 上创建了成就并登录了 Game Center。游戏通知我。没关系。但我必须从游戏中心加载所有成就并检查其进度。我阅读了 Apple Reference,这是类方法loadAchivementsWithCompletionHandler:
。
我有类似的东西,但是当我调用它时,我没有任何结果-控制台中没有 NSLog。
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {
if (error){
NSLog(@"Error in syncing achievements: %@", error);
}
else {
NSLog(@"Number of achievements: %d", [achievements count]);
}
}];
如何正确从 Game Center 获得成就?我认为该achivements
数组应该大于 0,但我不知道 - 不会调用任何 NSLog。
更新!!!
- (void)authenticateLocalUser:(void(^)(UIViewController *))delegate {
if (!_gameCenterAvailable) return;
NSLog(@"Authenticating local user...");
if (![GKLocalPlayer localPlayer].authenticated) {
[[GKLocalPlayer localPlayer] setAuthenticateHandler:^(UIViewController *viewController, NSError *error) {
if (viewController) {
delegate((UIViewController *)viewController);
}
else {
[NSThread sleepForTimeInterval:2];
[sharedHelper syncAchivements:^(NSString *delegate) {
}];
}
if (error) {
NSLog(@"Error in AuthenticateLocalUser: %@", [error description]);
}
}];
} else {
NSLog(@"Already authenticated!");
}
}
我在身份验证后调用了我的上述syncAchievement:
方法并且我得到了响应:Number of achievements: 0
但是我的应用程序创建了 2 个成就。哪里有问题?
更新2!!!
我看到 loadAchievementWithCompletionHandler 方法只加载有一些进展的成就。这个我明白了。。