Почему игровой центр Game Matching застрял на «подключении»? - PullRequest
0 голосов
/ 22 января 2019

Попытка решить проблему Game Center, которая, кажется, происходит в пределах GCMatchmakerViewController, но, возможно, я каким-то образом ее вызываю. Нажать кнопку «Пригласить друзей» можно двумя способами: набрав их электронную почту (или выбрав из контактов) или нажав в представленном списке людей, с которыми недавно играли.

Если я выбираю из списка людей, с которыми недавно играли, им отправляется уведомление, и если они принимают, приложение запускается, переходит на соответствующий экран, отображает GCMatchmakerViewController, подключается, принимает, и мы идти с игрой.

Если я выбираю, набирая / выбирая их контакт, iMessage отправляется, они идут в Сообщения, нажмите на сообщение пузыря. Если игровое приложение уже запущено, оно выводится на передний план, отображается GCMatchmakerViewController, подключается, принимает и мы отправляемся в путь. Но если приложение не запущено, оно запускается, переходит на нужный экран, представляет GCMatchmakerViewController, пытается подключиться и просто сидит там навсегда.

Почему в этом последнем сценарии не происходит соединение?

Экран, который отображается, когда он застрял при подключении:

GVMatchmakingViewController

Код, представляющий виртуальный канал, который выдает приглашение:

    let localPlayer: GKLocalPlayer = GKLocalPlayer.local

    if localPlayer.isAuthenticated {
            let matchrequest = GKMatchRequest()
            matchrequest.minPlayers = 2
            matchrequest.maxPlayers = 4
            matchrequest.defaultNumberOfPlayers = 2
            matchrequest.inviteMessage = "Want to play: " + "some name"

            if let mmVC = GKMatchmakerViewController(matchRequest: matchrequest) {
                mmVC.matchmakerDelegate = self
                self.present(mmVC, animated: true)
            }
    }

Код, принимающий приглашение:

                    if let response = GKMatchmakerViewController.init(invite: invite) {
                        response.matchmakerDelegate = newGameVC
                        present(response, animated: true, completion: nil)
                    }

Насколько я могу судить, мое приложение не знает, какой сценарий находится в игре, и не выбирает другое поведение на основе этого. В тупик, и не уверен, как консультировать пользователей. Спасибо за любые идеи.

...