谷歌游戏服务 - 无法解锁成就

3
我已经参考了Google提供的快速入门,将Google Play游戏服务集成到我的游戏中。
我在“id.xml”文件中添加了成就ID。我的游戏有大约10个成就。解锁成就的代码如下:
Games.Achievements.unlock(getApiClient(), "achievement_1_0");

这里的 'achievement_1_0' 是我的一个成就的字符串名称。

我的问题是,即使条件正确,我的所有成就都没有被解锁。查看日志后,我得到了这个错误信息:E/AchievementAgent(13528): Couldn't find local achievement to update for achievement ID achievement_1_0,来自会话过滤器 com.google.android.gms(Session Filter)

你有什么想法是哪里出了问题吗?还是这是一个bug..???

3个回答

5
解锁成就的代码如下:
Games.Achievements.unlock(getApiClient(), "your_achievement_id");

在这里,成就ID是您在Google游戏服务中创建成就时获得的ID。

这个ID可以在Google开发者控制台中找到->游戏服务->您的应用程序->成就

enter image description here

希望这能帮助您...


谢谢 Anu,如你所见,我已经将这行代码添加到我的项目中。希望你能帮我解决我在问题中发布的日志报告。 - Sathya
您提供的ID似乎是错误的。这就是为什么我解释了解锁功能的参数应该是什么。您应该在开发者控制台中使用其ID替换“achievement_1_0”。 - Anu

1

@Anu是100%正确的。您确实在使用错误的ID来表示您的成就。但是,使用游戏服务控制台中的代码引用您的成就是一种非常糟糕的方式(而且很容易出错)。

更好的引用成就的方法是通过在游戏服务控制台的成就屏幕底部使用获取资源链接导出您的成就ID。然后将它们放置在应用程序资源中的xml文件中。看起来这就是您在问题中提到的(id.xml文件),所以您可能已经完成了这个步骤。

一旦xml文件就位,您就可以使用从控制台导出的描述性ID引用您的成就。请按以下方式操作:

activity.getBaseContext().getString( R.string.achievement_1_0 );

使用您的主Activity作为activity,并将xml文件中成就的name属性更改为achievement_1_0。请注意:achievement_1_0不能是字符串(即不要像您当前代码中那样用引号括起来),因为它是指向一个字符串资源。
始终使用此方法来引用您的成就 - 不要硬编码字符串或控制台中的代码,否则会使您的代码难以维护。

感谢free3dom的提示。 :) - Sathya

0

我在调试一个非发布版本的应用程序时遇到了这个错误。 我通过将我的帐户/电子邮件添加为新测试人员来解决了这个问题。

Google play console > Game Services > Testing > Add tester

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