我正在使用Xamarin开发使用Google Play游戏服务的
Android游戏.我正在使用Genymotion Android Emulator进行测试.我遇到了一个似乎是Google Play或Xamarin实施中的错误的问题.
如果我退出Google帐户,则对IGoogleapiclient.IsConnected()的调用将继续返回true(即使我已经明确注销).如果我然后尝试使用该API对象,我会得到以下异常:
public void StartNewmatch() { if (!mGoogleapiclient.IsConnected) { return; } Intent intent = GamesClass.TurnBasedMultiplayer.GetSelectOpponentsIntent(mGoogleapiclient,1,true); StartActivityForResult(intent,RC_SELECT_PLAYERS); }
我正在Google Play游戏收件箱(匹配选择器)中退出;如下图所示.
有没有人遇到过这个?我错过了什么吗?有任何解决方法吗?
注意:只有通过Google的用户界面退出时才会出现这种情况.如果我用mGoogleapiclient.disconnect()之类的方式手动签出用户,则不会出现问题; mGoogleapiclient.IsConnected()现在返回false(按预期方式).
解决方法
为了保持登录状态同步,你必须正确实现onActivityResult.
这应该看起来如下:
注意:这是java代码,我不确定这将如何使用Xamarin,但希望你应该能够弄明白:)
@Override protected void onActivityResult(int requestCode,int responseCode,Intent data) { // check for "inconsistent state" if ( responseCode == GamesActivityResultCodes.RESULT_RECONNECT_required && requestCode == <your_request_code_here> ) { // force a disconnect to sync up state,ensuring that mClient reports "not connected" mGoogleapiclient.disconnect(); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。