首页 > 解决方案 > 回合制多人游戏:createMatch() 返回错误任务

问题描述

当我调用它返回的任务时,createMatch()我得到的异常是. 文档说 GoogleApiClient 处于不一致的状态,但我该如何重新连接它?我没有对象,所以我不能只调用.TurnBasedMultiplayerClientfalse(task.isSuccessful)com.google.android.gms.common.api.ApiException: 26502: CLIENT_RECONNECT_REQUIRED
GoogleAPiClientGoogleAPiClient.reconnect()

我使用默认用户界面来选择玩家:

private fun onStartMatchClicked() {
    val allowAutoMatch = true
    mTurnBasedMultiplayerClient = Games.getTurnBasedMultiplayerClient(this@MultiplayerActivity, clientAccount!!)
    mTurnBasedMultiplayerClient!!.getSelectOpponentsIntent(1, 1, allowAutoMatch)
        .addOnSuccessListener { intent -> startActivityForResult(intent, RC_SELECT_PLAYERS) }
}

这是 onActivityResult 方法:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == RC_SELECT_PLAYERS) {
        if (resultCode != Activity.RESULT_OK) {
            finish()
            return
        }
        val invitees = data!!.getStringArrayListExtra(Games.EXTRA_PLAYER_IDS)

        // Get automatch criteria
        var autoMatchCriteria: Bundle? = null


        val minAutoPlayers = data.getIntExtra(Multiplayer.EXTRA_MIN_AUTOMATCH_PLAYERS, 0)
        val maxAutoPlayers = data.getIntExtra(Multiplayer.EXTRA_MAX_AUTOMATCH_PLAYERS, 0)

        autoMatchCriteria = RoomConfig.createAutoMatchCriteria(minAutoPlayers,
            maxAutoPlayers, 0)
        val tbmc = TurnBasedMatchConfig.builder()
            .addInvitedPlayers(invitees)
            .setAutoMatchCriteria(autoMatchCriteria).build()
        mTurnBasedMultiplayerClient!!.createMatch(tbmc).addOnCompleteListener { task ->
                if (task.isSuccessful) { //this is where I get the exception
                    match = task.result
                } else {
                    // There was an error. Show the error.
                    var status = CommonStatusCodes.DEVELOPER_ERROR
                    val exception = task.exception
                    if (exception is ApiException) {
                        val apiException = exception as ApiException?
                        status = apiException!!.statusCode
                    }
                    handleError(status, exception)
                }
            }
    }
}

标签: androidgoogle-play-gamesturn

解决方案


推荐阅读