如何检索Game center的成就百分比并修改后提交?
How to retrieve Game center's achievement percentage and submit back with modification?
我已经配置了所有 Game Center 功能和下面用于解锁成就的代码,运行良好。
- (void) unlockAchievementThis:(NSString*)achievementID {
GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:
achievementID];
if (achievement){
achievement.percentComplete = 100;
achievement.showsCompletionBanner = true;
[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"Error at unlockAchievementThis()");
}
}];
}
}
现在我的问题是增量成就。我有另一种方法来获得很少的成就,我希望以前的成就百分比以常数增加。
我的游戏是cpp的,我不太了解ObjC。
我在下面得到了一些我认为应该对我有帮助的代码,但我不知道如何使用 achievementDescriptions 来获取百分比并将 incStep 添加到其中并提交后台游戏中心
- (void) incrementAchievementThis:(NSString*)achievementID :(NSInteger) incStep
{
NSMutableDictionary *achievementDescriptions = [[NSMutableDictionary alloc] init];
[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:^(NSArray *descriptions, NSError *error) {
if (error != nil) {
NSLog(@"Error getting achievement descriptions: %@", error);
}
for (GKAchievementDescription *achievementDescription in descriptions) {
[achievementDescriptions setObject:achievementDescription forKey:achievementDescription.identifier];
}
}];
百分比存储在 GKAchievement percentComplete
中,因此您需要加载(以及更新和报告)GKAchievement
而不是 GKAchievementDescription
。
GKAchievmenentDescription
s 是在 iTunes Connect 中配置的,从您的应用程序的角度来看是 "read-only"。
最后我通过下面的代码得到了输出...
- (void) incrementAchievementThis:(NSString*)achievementID :(NSInteger) incStep
{
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error)
{
if (error == nil) {
for (GKAchievement* achievement in achievements) {
if ([achievementID isEqualToString:achievement.identifier]) {
achievement.percentComplete += incStep;
[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"Error at incrementAchievementThis()");
}
}];
}
}
}
else {
NSLog(@"Error in loading achievements: %@", error);
}
}];
}
我已经配置了所有 Game Center 功能和下面用于解锁成就的代码,运行良好。
- (void) unlockAchievementThis:(NSString*)achievementID {
GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:
achievementID];
if (achievement){
achievement.percentComplete = 100;
achievement.showsCompletionBanner = true;
[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"Error at unlockAchievementThis()");
}
}];
}
}
现在我的问题是增量成就。我有另一种方法来获得很少的成就,我希望以前的成就百分比以常数增加。
我的游戏是cpp的,我不太了解ObjC。 我在下面得到了一些我认为应该对我有帮助的代码,但我不知道如何使用 achievementDescriptions 来获取百分比并将 incStep 添加到其中并提交后台游戏中心
- (void) incrementAchievementThis:(NSString*)achievementID :(NSInteger) incStep
{
NSMutableDictionary *achievementDescriptions = [[NSMutableDictionary alloc] init];
[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:^(NSArray *descriptions, NSError *error) {
if (error != nil) {
NSLog(@"Error getting achievement descriptions: %@", error);
}
for (GKAchievementDescription *achievementDescription in descriptions) {
[achievementDescriptions setObject:achievementDescription forKey:achievementDescription.identifier];
}
}];
百分比存储在 GKAchievement percentComplete
中,因此您需要加载(以及更新和报告)GKAchievement
而不是 GKAchievementDescription
。
GKAchievmenentDescription
s 是在 iTunes Connect 中配置的,从您的应用程序的角度来看是 "read-only"。
最后我通过下面的代码得到了输出...
- (void) incrementAchievementThis:(NSString*)achievementID :(NSInteger) incStep
{
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error)
{
if (error == nil) {
for (GKAchievement* achievement in achievements) {
if ([achievementID isEqualToString:achievement.identifier]) {
achievement.percentComplete += incStep;
[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"Error at incrementAchievementThis()");
}
}];
}
}
}
else {
NSLog(@"Error in loading achievements: %@", error);
}
}];
}