我已经通过参考Google提供的quick start在我的游戏中实施了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 .. ???
答案 0 :(得分:5)
解锁成就的代码如下:
Games.Achievements.unlock(getApiClient(), "your_achievement_id");
此处,成就ID是您在Google游戏服务中创建成就时获得的ID。
这是在谷歌开发者控制台 - >游戏服务 - >您的应用程序 - >成就
希望这会对你有帮助..
答案 1 :(得分:1)
@Anu 100%正确。您确实使用了不正确的ID来表示您的成就。但是,使用游戏服务控制台中的代码是一种非常糟糕的方式来引用您的成就(并且它非常容易出错)。
参考成就的更好方法是使用游戏服务成就屏幕底部的Get resources
链接导出您的成就ID >控制台。然后将它们放在应用程序资源的xml文件中。看起来这就是您在问题中引用的内容(id.xml
文件),因此您可能已经完成了此步骤。
一旦xml文件到位,您就可以使用从控制台导出的描述性ID来引用您的成就。这样做如下:
activity.getBaseContext().getString( R.string.achievement_1_0 );
将您的主要活动用于activity
,并将achievement_1_0
更改为xml文件中成就的name
属性。 注意:achievement_1_0
不能是字符串(即不在当前代码中的引号中),因为它指的是字符串资源。
始终使用此方法来引用您的成就 - 不要对控制台中的字符串或代码进行硬编码,因为它会使您的代码难以维护。
答案 2 :(得分:0)
我在调试未发布的应用时遇到此错误。 我解决了将我的帐户/电子邮件添加为新测试人员的问题。
<input type="checkbox" id="SelectAll" name="SelectAll" value="SelectAll" (click)="toggleSelect($event)" />
<input type="checkbox" name="data[{{i}}]" [checked]="data.selected" value="data.selected" id="{{data.name}}" (change)="data.selected =!(data.selected)" />
toggleSelect = function(event){
this.SelectAll = event.target.checked;
this.data.forEach(function(item){
console.log(item);
item.selected = event.target.checked;
});
}