Google Play 游戏服务 - 获取正在运行的比赛列表

Posted

技术标签:

【中文标题】Google Play 游戏服务 - 获取正在运行的比赛列表【英文标题】:Google Play Games Service - Get List of running matches 【发布时间】:2014-03-28 10:25:32 【问题描述】:

我正在使用 Google Play 游戏服务开发一款回合制游戏。 现在我想在 DrawerMenu 中列出您参与的所有游戏,这样您就可以非常轻松地进入游戏并查看您正在玩的游戏...

我的问题是,我如何获得这些游戏以及如何获得它们以便我可以通过点击重新进入它们?

希望我能把我的问题弄清楚 :) 谢谢!

【问题讨论】:

【参考方案1】:

我就是这样做的:

static final int[] statusesToLoad = new int[]
            TurnBasedMatch.MATCH_TURN_STATUS_INVITED,
            TurnBasedMatch.MATCH_TURN_STATUS_MY_TURN,
            TurnBasedMatch.MATCH_TURN_STATUS_THEIR_TURN,
            TurnBasedMatch.MATCH_TURN_STATUS_COMPLETE;

PendingResult<TurnBasedMultiplayer.LoadMatchesResult> loadMathesResult = Games.TurnBasedMultiplayer.loadMatchesByStatus(mGoogleApiClient, statusesToLoad);
loadMathesResult.setResultCallback(new loadMatchesCallback());

然后在回调中你可以获得你参与的所有活跃游戏和你收到的所有邀请的数据缓冲区:

    private class loadMatchesCallback implements ResultCallback<TurnBasedMultiplayer.LoadMatchesResult>

        @Override
        public void onResult(TurnBasedMultiplayer.LoadMatchesResult loadMatchesResult) 
            LoadMatchesResponse response = loadMatchesResult.getMatches();
            TurnBasedMatchBuffer myTurnMatches = response.getMyTurnMatches();
            TurnBasedMatchBuffer theirTurnMatches = response.getTheirTurnMatches();
            TurnBasedMatchBuffer completedMatches = response.getCompletedMatches();
            InvitationBuffer invitations = response.getInvitations();
            
        
    

您可以像使用ArrayList 一样使用这些缓冲区,但您需要记住,在您完成后,谷歌希望您release() 它们。否则,您将在日志中收到有关数据泄露的通知。

【讨论】:

感谢您的详细回答。但是我们在哪里可以找到变量中的 matchID,以便我使用它们使用 cancelmatch() 取消所有匹配。【参考方案2】:

你应该使用这个方法:

Games.TurnBasedMultiplayer.getInboxIntent(GoogleApiClient apiClient);

根据documentation of the method,此方法返回一个Intent,可用于启动显示邀请和匹配的活动。

希望这会有所帮助。有其他问题欢迎评论,我会尽力解答的。

【讨论】:

【参考方案3】:

ios 中是这样的: 这个获得了您被邀请并等待您回答的所有匹配项,然后您可以将 GPGTurnBasedUserMatchStatusInvited 更改为具有自动完成功能的另一种类型。

GPGTurnBasedModel *turnModel = [GPGManager sharedInstance].applicationModel.turnBased;
    NSArray *invited = [turnModel matchesForUserMatchStatus:GPGTurnBasedUserMatchStatusInvited];

还有一个函数可以获取所有匹配项,但它包括已完成的匹配项,也许你不想要那个。

【讨论】:

以上是关于Google Play 游戏服务 - 获取正在运行的比赛列表的主要内容,如果未能解决你的问题,请参考以下文章

从 Google Play 游戏服务获取用户分数?

如何从 Google Play 游戏服务的排行榜中获得排名?

如何在 Google Play 游戏服务中获取排行榜和成就信息

Android - Google Play 服务、游戏客户端、运行时错误

如何使用 Google Play 游戏服务在 RealTimeMultiplayer 中获取参与者的个人资料图像

使用 imageview 显示 google play 游戏服务播放器图像