android - 在玩家未登录时处理 Google Play 游戏成就

标签 android google-play-games google-api-client achievements

我是第一次使用 Google 的 Achievements API,发现它的设置相当简单。我在大约一个小时内启动并运行了它,但是,我只是想不通的一件事是如何在用户未登录时解锁成就(或者存储事实上,成就 x 已在本地解锁,因此实际上可以在用户下次登录时解锁)。

如果用户已登录,我的成就可以正常解锁。

最初,当我在未登录的情况下进行测试时,我的 LogCat 中弹出“googleAPIClient 尚未连接”错误。

所以我做了这样的事情:

public void unlockAchievements(){
    if (isSignedIn()){        
        Games.Achievements.unlock(getApiClient(), myAchievementID);
    }
}

这显然避免了崩溃,但(同样,显然)如果用户尚未登录则不会解锁成就。

是否有处理此问题的“官方”方式(我似乎无法在文档中找到任何提及 - 尽管我可能已经错过了)。

如果没有,执行此操作的好方法是什么?

我可以这样做:

if (score>1000){  
    score1000Achievement = true;  //Save this to SharedPreferences
}

然后,执行此操作:

onSignInSucceeded(){
    if (score1000Achievement){
        Games.Achievements.unlock(getApiClient(), myAchievementID);  
    }
}

但是,这会在每次 登录时运行并尝试解锁,如果有多个成就和多个用户,这肯定会增加我的 API 调用,从而不必要地占用我的配额吗?

感谢任何建议

编辑

刚在 Android 开发者网站上找到这个

An unlocked achievement means that the player has successfully earned the achievement. An achievement can be unlocked offline. When the game comes online, it syncs with the Google Play games services to update the achievement's unlocked state.

但是,似乎没有进一步提及它,也没有说明这是如何实现的。

最佳答案

我采用了与您相同的方法,但我保存了另一个 bool 值以了解该成就是否已在 Google Play 上解锁。但是不记得解锁是否有成功返回值。

关于android - 在玩家未登录时处理 Google Play 游戏成就,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31787861/

相关文章:

google-plus - Google+ JavaScript API : How to detect user sign in status?

android - 如何从 Android 中的 GoogleApiClient 中删除 api 和范围?

android - 在 Debug模式下重新安装应用程序时,AlarmManager 是否会清除先前设置的 Intent ?

android - 如何从 Cloud Firestore 制作可读的时间戳?

android - 在 finishMatch 上结束多人游戏

android - 取消 Google Play 游戏登录后 Facebook 登录崩溃(反之亦然)

android - 实时多人游戏还是回合制多人游戏 API?

java - Android Activity 正在重新启动

java - 启动应用程序时在 Android 上找不到类异常

php - 从 Android 上传图像到服务器不起作用