检查您是不是已在 Game Center/GameKit 中解锁成就
Posted
技术标签:
【中文标题】检查您是不是已在 Game Center/GameKit 中解锁成就【英文标题】:Check if you've already unlocked an achievement in Game Center/GameKit检查您是否已在 Game Center/GameKit 中解锁成就 【发布时间】:2011-06-13 16:20:39 【问题描述】:我已经为此困惑了很长时间。我了解如何在 Game Center 中解锁成就,我什至让整个消息传递系统正常工作。但我不知道如何检查成就是否已经解锁:(
显然这不起作用:
GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease];
NSLog(@"%i",achievement.completed);
它总是跟踪“0”。
解锁成就确实有效:
GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease];
achievement.percentComplete = 100;
所以并不是我在整个成就方面犯了错误,只是 GameKit 无法告诉我成就是否已经解锁。
如果有人能帮我解决这个问题,我将不胜感激!
【问题讨论】:
【参考方案1】:为当前登录的用户加载之前提交的成就,您需要调用:
[GKAchievement loadAchievementsWithCompletionHandler: ^(NSArray *scores, NSError *error)
if(error != NULL) /* error handling */
for (GKAchievement* achievement in scores)
// work with achievement here, store it in your cache or smith
];
您知道从 Game Center 开始的绝对最佳方式 - 成就和高分者是在此处查看 Apple 在线提供的演示项目: http://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html
看看代码 - 它非常简单,可以快速掌握正在发生的事情,它具有本地成就缓存、提交到不同的排行榜等功能。
【讨论】:
【参考方案2】:我即将自己开始实施。
根据我对文档的阅读,我认为您需要做的就是调用
loadAchievementsWithCompletionHandler:
http://developer.apple.com/library/ios/documentation/GameKit/Reference/GKAchievement_Ref/Reference/Reference.html#//apple_ref/doc/uid/TP40009959-CH1-SW1
【讨论】:
只是为了确认,这正是如何做到这一点。我有一个 GameKitHelper 类来管理 GK 交互,包括成就。效果很好。以上是关于检查您是不是已在 Game Center/GameKit 中解锁成就的主要内容,如果未能解决你的问题,请参考以下文章
如何检查输入的电子邮件 ID 是不是已在 Paypal 中注册?
如何持续检查 AVAudioplayer 是不是已在 Swift 中播放完毕?