游戏中心成就问题

16

我最近决定给已经上架多年的游戏添加成就系统,但是在让它们起作用方面遇到了问题。

我正在使用以下代码来发布成就:

GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier: identifier];

[achievement setPercentComplete:100.0];

[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error){

}];

但是 reportAchievements 仅记录 no bundle for bundleID: (null)

我想知道这是否与成就尚未上线以及Apple已删除沙盒服务器有关。但它们已在iTunes Connect中注册,并且我正在使用测试用户。

还要注意,此应用程序是从不同的开发人员转移而来。

对于应用程序ID,我尝试使用:

  • com.olddeveloper.ach_id
  • com.olddeveloper.appid.ach_id
  • ach_id
  • com.newdeveloper.ach_id
  • com.newdeveloper.appid.ach_id

自转移之前存在的排行榜仍在工作,并且它使用旧开发人员的ID。

我甚至尝试只使用此处第一个答案中的代码获取所有成就的列表,但它仍然显示 no bundle for bundleID: (null)

编辑:

我发现即使它显示 no bundle for bundleID: (null),它仍然会正确返回所有成就的列表。 我假设此消息只是系统中的一些错误,并且它仍然可以正常工作。

也就是说,我仍然无法使用任何ID组合解锁成就。

3个回答

1

对我来说,问题是成就已经解锁了,但没有显示。我不知道有什么方法可以不显示这个消息,但它是无害的。


在游戏中心应用程序中根本没有显示成就。苹果关于删除测试服务器的页面上说,即使尚未启用,解锁后成就和排行榜也会显示出来。 - user513064

1
我遇到了相同的问题。在我的调试器中小心地逐步执行代码时,我发现如果我使用GKScore而不是GKAchievement,则警告消息会消失。 因此,经验法则是检查您的成就和排行榜。请使用GKScore而不是GKAchievement。

[ GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {    if ( error != 0 )        NSLog( @"Reporting of %@ failed: %@", achievement, [ error localizedDescription ] );
}];

您还可以查看雷达。它是通过编号 rdar://23149890 进行标识的。


0

我在我的应用程序中意外尝试报告未在iTunes Connect中配置的成就时,收到了相同的错误消息。

因此,以下步骤可能会帮助您:

  1. 检查iTunes Connect中是否缺少成就
  2. 检查您的成就ID是否存在拼写错误

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