gamecenter没有得到结果
if(myScoreValue.value==300)//achievement for getting 300 points.
{
GKAchievement *achievement= [[GKAchievement alloc] initWithIdentifier:@"Score4"];
achievement.percentComplete = 100.0;
achievement.showsCompletionBanner=YES;
if(achievement!= NULL)
{
[achievement reportAchievementWithCompletionHandler: ^(NSError *error)
{
if(error != nil){
NSLog(@"Achievement failed");
} else {
NSLog(@"Achievement Success");
}
}];
}
}
当用户得到刚好300的分数时,他们得到了一个成就,但是如果他们超过300,它就不能工作。我该如何解决?gamecenter没有得到结果
当用户获得的分数恰好为300时,他们会得到一个成就,但如果他们超过300则无法工作。我该如何解决?
问题是您正在检查分数是否恰好为300;如果分数是(例如)302,则您显示的代码不会执行。您应该检查如果分数高于或等于300
在GameCenterManager.m,在苹果的开发者中心提供一个例子,你可以阅读下面的注释(这是在开始的-submitAchievement:percentComplete:
):
GameCenter会在提交成就时检查重复成就,但如果您只想向用户报告新成就,则需要在提交之前检查是否已获得成就。否则,您将以
loadAchievementsWithCompletionHandler
和reportAchievementWithCompletionHandler
之间的竞争状态结束。为了避免这种情况,我们一次性获取当前成就列表,然后缓存并随时更新任何新成就。
这意味着最终您可以报告已经从用户获得的成就;如果您使用的是loadAchievementsWithCompletionHandler
和reportAchievementWithCompletionHandler
,则需要小心。
对于您的代码,这意味着您可以使用if (myScoreValue.value >= 300) { /*…*/ }
。
这是我的建议。
阅读苹果的这个官方纪录片作为类引用http://developer.apple.com/library/ios/#documentation/GameKit/Reference/GKAchievement_Ref/Reference/Reference.html
OR
这里是GitHub-非常有用的源TypeOneError http://www.typeoneerror.com/articles/post/game-center-achievement-notification上市
请把'在每一个句子的结尾.'。 – vikingosegundo
除了可能的问题? –
更多细节可能会有所帮助;你什么时候运行这段代码?也许它运行频繁? –