我正在尝试在我的应用中进行在线评分和修复,使用谷歌播放服务。我是第一次这样做,我无法理解它在代码中的含义。
Games.Achievements.unlock(client, "CgkI2qWM-fIQEAIQAQ");
Games.Achievements.increment(client, "CgkI2qWM-fIQEAIQAQ", 1);
所以,我的问题。我如何获得Api客户端?
我正在尝试使用此代码,来自docs。但是得到一个错误。
client = new GoogleApiClient.Builder(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.setAccountName("myMail@gmail.com")
.build();
client.connect();
我的日志
07-05 10:25:49.604: E/AndroidRuntime(14410): FATAL EXCEPTION: main
07-05 10:25:49.604: E/AndroidRuntime(14410): java.lang.IllegalStateException: GoogleApiClient is not connected yet.
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.google.android.gms.internal.hn.a(Unknown Source)
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.google.android.gms.common.api.c.b(Unknown Source)
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.google.android.gms.games.internal.api.AchievementsImpl.unlock(Unknown Source)
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.pahanuch.candiesmaster.Main.Save(Main.java:1926)
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.pahanuch.candiesmaster.Main$4.run(Main.java:1912)
07-05 10:25:49.604: E/AndroidRuntime(14410): at android.os.Handler.handleCallback(Handler.java:615)
07-05 10:25:49.604: E/AndroidRuntime(14410): at android.os.Handler.dispatchMessage(Handler.java:92)
07-05 10:25:49.604: E/AndroidRuntime(14410): at android.os.Looper.loop(Looper.java:137)
07-05 10:25:49.604: E/AndroidRuntime(14410): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-05 10:25:49.604: E/AndroidRuntime(14410): at java.lang.reflect.Method.invokeNative(Native Method)
07-05 10:25:49.604: E/AndroidRuntime(14410): at java.lang.reflect.Method.invoke(Method.java:511)
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-05 10:25:49.604: E/AndroidRuntime(14410): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-05 10:25:49.604: E/AndroidRuntime(14410): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
连接是异步的。 GoogleApiClient
将在连接时执行回调,或者更有可能是第一次无法连接并需要进一步操作。
查看文档,了解如何实施onConnectionFailed()
,onConnectionSuspended()
和onConnected()
。只有在收到GoogleApiClient
回调而没有相应onConnected()
回调的情况下,您才能使用onConnectionSuspended()
。
答案 1 :(得分:1)
Google建议使用BaseGameUtils来管理Play游戏服务。这会自动处理大部分艰苦的工作(例如登录,解锁成就等),并且是与Play游戏服务进行交互的更简单,更安全的方式。
查看this article,其中介绍了如何使用BaseGameUtils
进行登录,然后阅读后续成就等等。所有信息都提供给您,以便您快速入门
注意:BaseGameUtils
包中提供了android-samples
。可以下载here - 查看/BasicSamples/libraries
内部以找到它。