Попытка решить проблему Game Center, которая, кажется, происходит в пределах GCMatchmakerViewController
, но, возможно, я каким-то образом ее вызываю. Нажать кнопку «Пригласить друзей» можно двумя способами: набрав их электронную почту (или выбрав из контактов) или нажав в представленном списке людей, с которыми недавно играли.
Если я выбираю из списка людей, с которыми недавно играли, им отправляется уведомление, и если они принимают, приложение запускается, переходит на соответствующий экран, отображает GCMatchmakerViewController
, подключается, принимает, и мы идти с игрой.
Если я выбираю, набирая / выбирая их контакт, iMessage отправляется, они идут в Сообщения, нажмите на сообщение пузыря. Если игровое приложение уже запущено, оно выводится на передний план, отображается GCMatchmakerViewController
, подключается, принимает и мы отправляемся в путь. Но если приложение не запущено, оно запускается, переходит на нужный экран, представляет GCMatchmakerViewController
, пытается подключиться и просто сидит там навсегда.
Почему в этом последнем сценарии не происходит соединение?
Экран, который отображается, когда он застрял при подключении:
![GVMatchmakingViewController](https://i.stack.imgur.com/Cxzd7.jpg)
Код, представляющий виртуальный канал, который выдает приглашение:
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)
}
Насколько я могу судить, мое приложение не знает, какой сценарий находится в игре, и не выбирает другое поведение на основе этого. В тупик, и не уверен, как консультировать пользователей. Спасибо за любые идеи.