我正在将Game Center集成到我的应用程序中,我已经做好了一切,但它很好,但我遇到了问题。当用户完成成就时,我想添加通知。我确实设法做到这一点:
GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:@"theFirstAchievement"];
achievement.percentComplete = sharedApp.firstAchievement = sharedApp.firstAchievement + 50;
[achievement reportAchievementWithCompletionHandler:^(NSError *error)
{
if (error != nil)
{
NSLog(@"achievement failed");
}
else
{
NSLog(@"achievement succeded");
}
}];
if (achievement.percentComplete == 100.0)
{
[GKNotificationBanner showBannerWithTitle:@"Achievement Unlocked:" message:@"Master Question Master!" completionHandler:nil];
}
我的问题是,我不知道我做错了什么,但它应该显示一次通知,但是,如果我关闭我的应用程序并重新打开,当我再次完成成就时它会显示通知再次,即使它已经在我的游戏中心完成了!我究竟做错了什么?谢谢!
答案 0 :(得分:3)
看看这一点:
if (achievement.percentComplete == 100.0)
这意味着如果成就百分比完成率为100%,则显示横幅。但是,当您再次打开应用程序并读取百分比时,百分比仍为100%,因此它会再次显示横幅。
您必须记录已获得哪些成就 并获得
我建议这样的事情:
BOOL awarded = [[NSUserDefaults standardUserDefaults] boolForKey:@"theFirstAchievement"];
if (achievement.percentComplete == 100.0 && !awarded)
{
[GKNotificationBanner showBannerWithTitle:@"Achievement Unlocked:" message:@"Master Question Master!" completionHandler:nil];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"theFirstAchievement"];
[[NSUserDefaults standardUserDefaults] synchronize];
}