Какой правильный способ программно принять приглашение на матч с стандартным пользовательским интерфейсом GameKit?GKTurnBasedMatch как принять новое приглашение на матч
Я видя expectedState = "предложила" foundState = "Активный" Exception
Optional(Error Domain=GKErrorDomain Code=22
"The requested operation could not be completed because the specified participant is invalid."
UserInfo={GKServerStatusCode=5097,
NSLocalizedDescription=The requested operation could not be completed because the specified participant is invalid.,
NSUnderlyingError=0x14fa2cf70 {
Error Domain=GKServerErrorDomain Code=5097 "status = 5097,
Unexpected slot state expectedState="Invited" foundState="Active"
Исключение происходит по следующему сценарию:
Игрок 1 - создает новый матч с игроком 2
Игрок 1 - Делает первый ход
Игрок 2 - Попытки загрузить данные из поэтапного совпадения & принять приглашение на матч.
Я использую стандартный пользовательский интерфейс iOs для создания соответствий. GKTurnBasedMatchmakerViewController
запросить новый матч
let matchRequest = GKMatchRequest()
matchRequest.minPlayers = 2
matchRequest.maxPlayers = 2
matchRequest.defaultNumberOfPlayers = 2
matchRequest.inviteMessage = "Play BoxTheDots with me"
matchRequest.recipientResponseHandler = self.matchMaker?.recipientResponse
let matchView = GKTurnBasedMatchmakerViewController(matchRequest: matchRequest)
self.presentViewController(matchView, animated: true, completion: nil)
matchView.turnBasedMatchmakerDelegate = self.matchMaker?.matchViewController
Я принимаю приглашение матча программно, который вызывает и печать ошибки.
Поток кода начинается с GKTurnBasedMatchmakerViewControllerDelegate didFindMatch method
func turnBasedMatchmakerViewController(viewController: GKTurnBasedMatchmakerViewController, didFindMatch match: GKTurnBasedMatch){
match.loadMatchDataWithCompletionHandler(self.matchDataLoaded)
match.acceptInviteWithCompletionHandler(self.acceptInvite)
}
private func acceptInvite(match:GKTurnBasedMatch?, error:NSError?){
guard error == nil else {
LogUtil.log(.CRITICAL, sub: .ERROR, o: self, method: method, msg: "could not accept match invite. \(error)")
return
}
}
игрока 1 после того, как сделать первый поворот
игрока 2 перед загрузкой матча от игрока 1
Пожалуйста, добавьте блок кода, в котором вы вызываете 'acceptInviteWithCompletionHandler' – Thunk
@Thunk Я внес изменения для включения вызова. Я все еще придерживаюсь этого :( – sdc