1

我想在我的应用中使用谷歌播放服务在线评分和achivments。我第一次这样做,我不明白它是如何在代码中。我如何获得API客户端? (谷歌播放服务)

Games.Achievements.unlock(client, "CgkI2qWM-fIQEAIQAQ"); 
Games.Achievements.increment(client, "CgkI2qWM-fIQEAIQAQ", 1); 

所以,我的问题。我如何获得Api客户端?

我正在尝试使用此代码,来自文档。但是得到一个错误。

client = new GoogleApiClient.Builder(this) 
     .addApi(Plus.API) 
     .addScope(Plus.SCOPE_PLUS_LOGIN) 
     .setAccountName("[email protected]") 
     .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) 

回答

1

Google建议您使用BaseGameUtils来管理Play游戏服务。这会自动处理大部分艰苦工作(例如登录,解锁成就等),并且与Play游戏服务交互更容易,更安全。

查看this article,它描述了如何使用BaseGameUtils进行登录,然后阅读后续的成就等。所有的信息都提供给您,让您快速入门。

注意:在android-samples包中提供了BaseGameUtils。它可以下载here - 看/BasicSamples/libraries找到它。

1

连接是异步的。 GoogleApiClient将在连接时执行回拨,或者更可能是第一次连接失败并需要进一步操作。

查看有关如何实施onConnectionFailed(),onConnectionSuspended()onConnected()的文档。只有当您收到onConnected()回叫而没有相应的onConnectionSuspended()回叫时,才能使用GoogleApiClient