标签: google-play-games

Google Play游戏服务 - 无法登录

在昨天的Google I/O主题演讲之后,我更新了我的Android SDK,将游戏服务集成到我的一个应用程序中.

到目前为止我做的事情:

  1. 在Dev Console(游戏服务)中添加并链接了我的应用程序
  2. 将OAuth客户端ID包含到我的app/manifest中
  3. 添加BaseGameActivityGameHelper我的项目(从GitHub)
  4. 将google-play-services库添加到我的项目中
  5. 延长BaseGameActivity,补充一个com.google.android.gms.common.SignInButton

我还设置了游戏元数据,当然还有一些成就.开发控制台声明它已准备好发布.为了测试登录流程和成就,我添加了两个Google+帐户作为测试用户.

但是当我测试SignInButton时,会弹出一个警告:未知错误.这是logcat:

ERROR/Volley: il.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/me
ERROR/SignInIntentService: Access Not Configured
ERROR/LoadSelfFragment: Unable to sign in - application does not have a registered client ID
Run Code Online (Sandbox Code Playgroud)

我已经在生产模式下构建了我的应用程序 - 使用ProGuard和正确的证书.

我错过了什么?

更新 - 更多尝试

这里是我在此期间尝试过的简短概述.什么都没有帮助.

  • 删除并重新创建链接的Android应用程序条目(双重检查证书指纹)
  • 禁用反盗版
  • 跳过proguard
  • 创建一个新的(测试)游戏并使用其客户端ID

该问题与测试部分的帐户无关.使用未启用测试的帐户将导致另一条错误消息:

E/GameAgent: Unable to retrieve 1P application 547xxxxxx457 from network
E/CheckGameplayAcl: Unable to load metadata …
Run Code Online (Sandbox Code Playgroud)

android google-play-services google-play-games

61
推荐指数
4
解决办法
6万
查看次数

Android实时多人游戏 - 房间创建失败

我正在使用Android Play Games - Real Time Multiplayer我的应用程序.当我创建一个新房间时,回调onRoomCreated()返回STATUS_NETWORK_ERROR_NO_DATA5%的时间.我不知道为什么我偶然发现这个错误.

某些帖子建议应在创建新帖子之前关闭.我总是在super.onstop()打电话之前离开我的房间.我也在onLeftRoom()创建一个新房间之前等待回调.

堆栈跟踪

02-20 22:57:07.208: I/libjingle(1763): Token type:OAuth2
02-20 22:57:07.208: I/libjingle(1763): Final XMPP server hostname talk.google.com port to 5222
02-20 22:57:07.316: I/libjingle(1763): OpenSSLAdapter::OnConnectEvent
02-20 22:57:07.416: I/libjingle(1763): BeginSSL: talk.google.com
02-20 22:57:07.476: W/libjingle(1763): Warning(openssladapter.cc:388): ContinueSSL -- error -1
02-20 22:57:07.480: W/libjingle(1763): Warning(openssladapter.cc:397): OpenSSLAdapter::Error(ContinueSSL, -1)
02-20 22:57:07.504: I/libjingle(1763): SSL Cleanup
02-20 22:57:07.532: I/libjingle(1763): Token type:OAuth2
02-20 22:57:07.532: I/libjingle(1763): Final XMPP server hostname talk.google.com port to 5222
02-20 …
Run Code Online (Sandbox Code Playgroud)

android multiplayer libjingle google-play-games

42
推荐指数
1
解决办法
1401
查看次数

如何让Play游戏服务在启动时不自动登录?

谷歌提供BaseGameUtils图书馆,并建议我们扩展它BaseGameActivity.但是,该课程使游戏在游戏开始时自动登录.如果玩家不想或不能连接到他的Google帐户,那么在游戏开始这可能非常耗时.

所以我不想要这个功能.相反,我想提供一个登录按钮.只有当他点击该按钮时才能连接播放器.从那时起,每次玩家开始游戏时,他都会自动连接到他的Google帐户,而无需点击任何按钮.我怎样才能做到这一点?

android google-play-services google-play-games

28
推荐指数
2
解决办法
3万
查看次数

如何允许用户使用loadConnectedPlayers

我希望让所有连接的玩家都能玩游戏.我可以获得谷歌+圈子中的玩家,但我希望玩家获得所有用户.我无法找到我需要做什么许可才能做到这一点.

我正在使用此代码来获取玩家,但它总是返回0.

PendingResult<LoadPlayersResult> players = Games.Players.loadConnectedPlayers(mGoogleApiClient, false);

players.setResultCallback(new ResultCallback<Players.LoadPlayersResult>()
{
    @Override
    public void onResult(LoadPlayersResult result) 
    {
        PlayerBuffer buf = result.getPlayers(); 
        Toast.makeText(getApplicationContext(), "players"+buf.getCount(), Toast.LENGTH_SHORT).show();
    }
}); 
Run Code Online (Sandbox Code Playgroud)

android google-play-services google-play-games

26
推荐指数
1
解决办法
360
查看次数

第一次加载后,Turnbased匹配消失

我正在使用Google Play服务开发Android游戏,以创建基于回合的匹配.

起初一切都很好,我为登录用户加载了turnbased匹配

Games.TurnBasedMultiplayer.loadMatchesByStatus(getApiClient(),
        new int[]{TurnBasedMatch.MATCH_TURN_STATUS_MY_TURN,
                TurnBasedMatch.MATCH_TURN_STATUS_THEIR_TURN,
                TurnBasedMatch.MATCH_TURN_STATUS_INVITED,
                TurnBasedMatch.MATCH_TURN_STATUS_COMPLETE})
        .setResultCallback(this);
Run Code Online (Sandbox Code Playgroud)

它总是加载任何给定状态的所有匹配.但是从上周末开始调用回调但是没有匹配,因为我没有参与任何匹配(状态响应没问题).我在手机上删除了Google Play服务的缓存,然后重新启动了设备.在那一刻,所有比赛再次显示,直到我下次打开应用程序.所有比赛都失踪了.一旦我开始新的比赛,比赛将继续显示上述方法(刷新列表),直到我关闭应用程序.在下一次发布时,比赛也消失了.

我不得不说游戏尚未发布,但在Google Play开发者控制台的测试阶段.我在模拟器上发现了同样的问题.它运行好几天但突然遇到了与我的真实设备相同的问题(后来的构建因此不是单个代码更改导致这一点).

有没有其他人注意到这种行为或有关于如何解决它的想法?

可能与多个应用程序连接到一个游戏有关?我有两个连接调试证书签名的应用程序,今天下午为签名的apk添加了一个.当我使用签名的apk时,它再次起作用,直到我部署了一个新的测试应用程序(debug signed).切换回签名的apk后,错误仍然存​​在.

由于似乎没有人知道答案让我重新解释这个问题.我应该自己在设备上缓存TurnBasedMatches吗?我刚刚删除了播放服务缓存并重新打开了我的应用程序.结果?数百个游戏的列表(因为我每次测试时都必须开始一个新游戏...)

我的代码来处理loadMatchesResult

@Override
public void onResult(TurnBasedMultiplayer.LoadMatchesResult loadMatchesResult)
{
    showToast("GotMatches status: " + loadMatchesResult.getStatus().getStatusCode());

    //add matches to listview (only caching matchId, no references to turnbasedmatch)

    loadMatchesResult.getMatches().getMyTurnMatches().close();
    loadMatchesResult.getMatches().getInvitations().close();
    loadMatchesResult.getMatches().getTheirTurnMatches().close();
    loadMatchesResult.getMatches().getCompletedMatches().close();
    loadMatchesResult.release();

}
Run Code Online (Sandbox Code Playgroud)

找到另一个兴趣点..它开始看起来像在设备上部署新的apk时出现的问题...一旦我部署新的apk(通过从谷歌播放安装alpha版本或从Android Studio直接调试版本)匹配消失了.当我不更改apk时,我可以重新启动手机/关闭应用程序,它工作正常...

如果我通过Play商店更新应用程序也会出现问题......应该有更多人遇到此问题!

android google-play-services google-play-games

24
推荐指数
1
解决办法
647
查看次数

为什么GetServerAuthCodeResult已弃用?如何在已安装的应用程序中执行相同的操作?

关注这篇文章:http://android-developers.blogspot.com/2016/01/play-games-permissions-are-changing-in.html我已经获得了一个使用授权代码,可以在我的后端服务器上使用,如下所示:

import com.google.android.gms.games.Games;    
//later
Games.GetServerAuthCodeResult result = Games.getGamesServerAuthCode(gameHelper.getApiClient(), server_client_id).await(); 
if (result.getStatus().isSuccess()) {
    String authCode = result.getCode();
    // Send code to server...
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但它提出了一个问题:

1)getGamesServerAuthCode和GetServerAuthCodeResult被标记为已弃用.为什么?我应该使用其他东西吗?

2)如何在非Android安装的Java应用程序中执行相同的操作?我能够在客户端应用程序上获取令牌,但我还需要获取一个使用代码以传递到我的后端服务器,如上所述.我找不到相同的函数来获取服务器验证码.(使用com.google.api.client.extensions.java6.auth.oauth2)

我基本上试图遵循这个流程:https://developers.google.com/games/services/web/serverlogin但是用Java,而不是Javascript.我试图在Android应用程序和桌面Java应用程序中执行此操作.

java android oauth oauth-2.0 google-play-games

19
推荐指数
1
解决办法
844
查看次数

不应在android清单文件中声明minSdk版本

Gradle Sync错误出现在我的build.gradle文件中,我导入的模块名为BaseGameUtils,The minSdk version should not be declared in the android manifest file.我说我根本就没有看到这个,我也不在Android Manifest中?

这里是我的build.gradle文件.请帮忙!

java xml android google-play-services google-play-games

17
推荐指数
1
解决办法
2万
查看次数

如何重置Google游戏服务的成就?

我正在使用谷歌的新游戏服务测试我的游戏,我想重置我的帐户的成就以进行测试.

我发现你可以使用谷歌的API(https://developers.google.com/games/services/management/api/#Achievements)重置成就,我正在使用OAuth 2.0游乐场发送POST请求,但是它不工作:(

具体来说,我是发送POST请求" https://www.googleapis.com/games/v1management/achievements/reset ",详见该链接.

并且,当我转到code.google com并检查我的服务时,所有Play服务都是"开启".

这是输出.如何重置我的成就以进行测试?我甚至关闭了吗?显然我的"访问没有配置"我该怎么做?如果不授予我的访问权限,OAuth2.0游乐场的前两个步骤的重点是什么?

HTTP/1.1 403 Forbidden
Content-length: 205
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
X-google-cache-control: remote-fetch
-content-encoding: gzip
Server: GSE
Reason: Forbidden
Via: HTTP/1.1 GWA
Cache-control: private, max-age=0
Date: Sun, 19 May 2013 04:11:38 GMT
X-frame-options: SAMEORIGIN
Content-type: application/json; charset=UTF-8
Expires: Sun, 19 May 2013 04:11:38 GMT
{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured"
   }
  ],
  "code": 403,
  "message": "Access Not Configured"
 }
}
Run Code Online (Sandbox Code Playgroud)

achievements oauth2-playground google-play-services google-play-games

16
推荐指数
2
解决办法
2万
查看次数

Google Play服务泄漏

我刚开始使用Google Play游戏服务,昨天在检查logcat时我无法注意到这个错误:

E/DataBuffer(3183):检测到DataBuffer对象内部数据泄漏!确保在完成所有DataBuffer扩展对象后显式调用close().(内部对象:com.google.android.gms.common.data.DataHolder@40555410)

它连续发生几次.我不完全确定它为什么会出现.它不会使我的应用程序崩溃,也不会使谷歌成就/排行榜功能停止工作.

我所知道的是它与"unlockAchievementImmediate"和"submitScoreImmediate"功能有关.

有没有人遇到此问题或有任何建议?


编辑:在我的应用程序中,我只使用"unlockAchievementImmediate"和"submitScoreImmediate".这些函数不返回任何需要关闭的缓冲区.

android memory-leaks google-play-services google-play-games

16
推荐指数
1
解决办法
1万
查看次数

如何避免TagManager"IllegalStateException:结果已经设置"

我最近在我的Android应用中引入了Google TagManager,以便将更改推送到app config,而无需重新部署应用.

但我得到的例子是:

java.lang.IllegalStateException: Results have already been set
at com.google.android.gms.common.internal.p.a(Unknown Source)
at com.google.android.gms.common.api.b$a.a(Unknown Source)
at com.google.android.gms.tagmanager.ed.a(Unknown Source)
at com.google.android.gms.tagmanager.ed.a(Unknown Source)
at com.google.android.gms.tagmanager.ed$b.a(Unknown Source)
at com.google.android.gms.tagmanager.ed$b.a(Unknown Source)
at com.google.android.gms.tagmanager.cj.c(Unknown Source)
at com.google.android.gms.tagmanager.ck.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Run Code Online (Sandbox Code Playgroud)

它们出现在Android 4.4到5.0.1的各种设备上

正如您所看到的,堆栈跟踪中没有我的应用程序的元素,我真的不知所措,我可以做什么(除了删除TagManager)以避免或减轻错误.

我找到了与GooglePlus登录相关的同一错误消息的一个引用,因此我认为它可能与Google Play服务库有关.

有人看过吗?有任何想法吗?

引发了Play-Games项目的问题:https: //code.google.com/p/play-games-platform/issues/detail?id = 209

android google-play-services google-tag-manager google-play-games

15
推荐指数
1
解决办法
1787
查看次数