我最近决定为已经在App Store上存放多年的游戏增加成就,而且我在使它们工作方面遇到了问题。
我使用以下代码发布成就:
onRestoreInstanceState()
但GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier: identifier];
[achievement setPercentComplete:100.0];
[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error){
}];
只记录reportAchievements
。
我想知道它是否与成就尚未存在且Apple已移除沙盒服务器这一事实有关。但它们已在iTunes Connect中注册,我使用的是测试用户。
同样重要的是要注意此应用程序是从其他开发人员转移的。
对于我尝试使用的应用ID:
no bundle for bundleID: (null)
com.olddeveloper.ach_id
com.olddeveloper.appid.ach_id
ach_id
com.newdeveloper.ach_id
自转移之前一直存在的排行榜仍在使用,它使用的是旧版开发人员的ID。
我甚至尝试使用第一个答案here中的代码获取所有成就的列表,但它仍然说com.newdeveloper.appid.ach_id
。
修改
我发现即使它说no bundle for bundleID: (null)
,它仍会正确返回所有成就的列表。我认为这个消息只是系统中的一些小问题,无论如何它都可以工作。
那就是说,我仍然无法使用任何ID组合解锁成就。
答案 0 :(得分:1)
对我来说,问题是成就正在解锁,但没有显示。我不知道有什么方法可以不显示信息,但这是无害的。
答案 1 :(得分:1)
我遇到了同样的问题。谨慎地调查我的调试器中的代码,我开始弄清楚如果我使用GKScore代替GKAchievement,警告消息就会消失。 所以拇指规则是检查你的成就和排行榜。使用GKScore代替GKAchievement。
[ GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
if ( error != 0 )
NSLog( @"Reporting of %@ failed: %@", achievement, [ error localizedDescription ] );
}];
你也可以看到雷达。它没有。 rdar:// 23149890
答案 2 :(得分:0)
我在意外尝试报告我的应用中未在iTunes Connect中配置的成就时收到了相同的错误消息。
因此,以下步骤可能会对您有所帮助: