iOS游戏中心群组

9

当我在 Game Center 中使用 Group Leaderboard 时,我是否需要在我的应用程序中枚举的ID中使用“grp”前缀?
换句话说,如果我将我的现有游戏设置为使用 Group Leaderboard,那么我是否需要在我的应用程序中的每个ID中添加“grp”前缀?

4个回答

7

即使成就ID从testID变为grp.testID,使用testID提交成就仍然有效吗?您能否为我确认一下? - Kaan Dedeoglu
1
嗨,Kaan Dedeoglu, 我不确定我是否清楚地理解了你的意思。在我的情况下,我已经有了带有成就的游戏,例如testID。然后我将我的排行榜放入组中,成就ID被更改为grp.testID,所有内容都继续工作。 如果您想将新的成就ID添加到已经在组中的排行榜中,我认为这是可能的,并且成就ID将具有grp前缀。 P.S.对我的英语感到抱歉 :-) - Artem Shmatkov
你理解了我的问题 :) 答案已经足够 - 我不需要重新定义我的常量,谢谢。 - Kaan Dedeoglu
我阅读了这个帖子,我有一个奇怪的问题。将两个应用程序 - 免费和付费应用程序移动到组后。所有成就都有grp前缀。在免费应用程序中运行良好。但是在付费应用程序中,当我使用新标识符(即具有grp前缀)报告成就时,它显示成功报告。但是当我尝试加载已经报告的成就时,它显示早期的标识符而没有grp前缀,这只发生在付费应用程序中。是的,在所有iOS版本中都会发生同样的事情,但在iOS6中共享成就会反映出来,而在iOS7中,付费应用程序在游戏中心中不显示任何成就。 - Rahul Patel

2

如果我没有正确理解您的问题,请原谅。但我相信答案是肯定的。

我在我的游戏中使用小组排行榜,并按如下方式提交分数。

            #define LeaderboardID @"grp.yourleaderboardname"

            GKScore *scoreReporter = [[GKScore alloc] initWithCategory:LeaderboardID];
            scoreReporter.value = yourscore;
            [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
                if (error != nil) {  
                     NSLog(@"%@", error);
                } else {
                     NSLog(@"%@", @"Success submitting score");
                }
            }];
            [scoreReporter release]; 

以前的游戏没有使用团队排行榜,我的LeaderboardID定义如下。

#define LeaderboardID @"com.yourcomapny.yourgame.yourleaderboardname"

所以我认为您需要将id更改为包含grp前缀。


1
答案是,是的,您必须更改为“grp.”前缀。这就是zakhej可能认为自己找到答案的原因:
例如,当您将单个排行榜放入组中时,该单个排行榜将继续存在。如果您继续使用原始类别ID报告分数,则会将它们添加到原始单个排行榜中,而使用“grp.”前缀将把它们添加到新的分组排行榜中,这正是您想要做的。简而言之,将排行榜放入组中将导致有两个排行榜,每个排行榜都使用自己的类别ID进行更新。
因此,似乎原始类别ID仍将起作用,但那时您正在查看旧的单个排行榜。这就是为什么您可能会注意到有时旧的类别ID会更新分数,有时则不会。
这花费了相当长的时间才弄清楚,但是Apple itunes Connect支持以这种方式解释了它,并且很有道理。不更新游戏的玩家将继续向旧的排行榜报告分数,并在游戏中心中看到它。当他们稍后更新时,他们可能会惊讶地发现他们的高分是开发人员将该排行榜添加到组中时的先前高分。
这份文档对规划Game Center实现非常有帮助:https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnectGameCenter_Guide/iTunesConnectGameCenter_Guide.pdf

0

对于这个问题,有两种不同且相反的答案,所以我想表达一下我的经验:

简而言之,不要添加grp.前缀。

  • 在应用程序上有排行榜,没有游戏中心组。该应用程序已上线
  • 使用GKGameCenterViewController显示最高分数可以正常工作
  • 当应用程序上线后,我创建了一个新的游戏中心组并将其添加到其中
  • 将排行榜ID更改为显示在组上的新ID,即带有grp.前缀
  • 我能够将分数发布到排行榜上,但是当启动GKGameCenterViewController时,它没有打开我实例化的排行榜,它只打开了仪表板,好像无法再识别ID。
  • 将排行榜ID更改回原始ID(不带grp.),现在我又能够再次发布分数,并按预期使用GKGameCenterViewController

结论: 你可以用 grp. 将 id 更改为新的,是否提交分数都是一样的结果,但只有在使用原始 id 时,GKGameCenterViewController 才有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接