Пошаговый мультиплеер: createMatch () возвращает ложное задание - PullRequest
0 голосов
/ 14 апреля 2019

Когда я вызываю createMatch() на TurnBasedMultiplayerClient, задача, которую он возвращает, является false(task.isSuccessful), и я получаю исключение com.google.android.gms.common.api.ApiException: 26502: CLIENT_RECONNECT_REQUIRED.
В документации говорится, что GoogleApiClient находится в несовместимом состоянии, но как это сделать?Я переподключаю это?У меня нет объекта GoogleAPiClient, поэтому я не могу просто вызвать GoogleAPiClient.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)
                }
            }
    }
}
...