Google Play游戏服务 - 获取正在运行的匹配项列表

时间:2014-02-25 21:51:19

标签: android google-play-games

我正在使用Google Play游戏服务开发TurnBased游戏。 现在我想列出你参与DrawerMenu的所有游戏,这样你就可以很容易地进入游戏并看看你在哪些游戏......

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

希望我可以让我的问题清楚:) 谢谢!

3 个答案:

答案 0 :(得分:2)

我就这样做了:

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一样使用这些缓冲区,但是您需要记住,Google完成后会要求您release()使用这些缓冲区。如果您不能在日志中收到有关数据泄漏的通知。

答案 1 :(得分:0)

您应该使用此方法:

Games.TurnBasedMultiplayer.getInboxIntent(GoogleApiClient apiClient);

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

希望这会有所帮助。任何其他问题随时可以发表评论,我会尽力回答。

答案 2 :(得分:0)

iOS中的

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

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

还有一个获取所有匹配的功能,但它包括已完成的匹配,也许你不希望这样。