游戏中心成就通知重复

时间:2013-11-15 21:28:41

标签: ios notifications game-center achievements

我正在将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];
}

我的问题是,我不知道我做错了什么,但它应该显示一次通知,但是,如果我关闭我的应用程序并重新打开,当我再次完成成就时它会显示通知再次,即使它已经在我的游戏中心完成了!我究竟做错了什么?谢谢!

1 个答案:

答案 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];
}