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

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

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

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

【问题讨论】:

    标签: android google-play-games


    【解决方案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];
      

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

      【讨论】:

        猜你喜欢
        • 2014-09-30
        • 2014-02-02
        • 2017-05-23
        • 1970-01-01
        • 2013-07-31
        • 2017-09-27
        • 2018-05-09
        • 1970-01-01
        相关资源
        最近更新 更多