Как правильно реализовать общий findMatchForRequest для GKMatchmaker (поэтому GKMatch.expectedPlayerCount == 0)?

При переключении на GKMatchmaker из MatchmakerViewController мои две учетные записи игрового центра в песочнице, работающие на разных устройствах (оба iPhone 5), больше не подключаются к одному совпадению. Оба показывают ожидаемый PlayerCount все еще выше 0.

Я следовал руководству RayWenderlich по созданию многопользовательской игры с игровым центром. Это должно быть в режиме реального времени и работал как таковой. С помощью GKMatchmakerViewController все работало совершенно нормально (как с автоматическим соответствием, так и с приглашением). Однако, как только я переключил один блок кода, он больше не работает. Я уже некоторое время возился с этим, и документы по Apple, похоже, мне совсем не помогают. Кто-нибудь знает, что мне нужно сделать дополнительно?

func findMatchWithMinPlayers(minPlayers: Int, maxPlayers: Int, viewController: UIViewController, delegate: GameKitHelperDelegate) {

    if enableGameCenter == false {
        return
    }

    matchStarted = false
    gkMatch = nil
    gkDelegate = delegate
    viewController.dismissViewControllerAnimated(false, completion: nil)

    var request = GKMatchRequest()
    request.minPlayers = minPlayers
    request.maxPlayers = maxPlayers

    if pendingRecipients != nil {
        request.recipients = pendingRecipients!
    }

    GKMatchmaker.sharedMatchmaker().findMatchForRequest(request, withCompletionHandler: { (match: GKMatch!, error: NSError!) -> Void in

        self.gkMatch = match
        self.gkMatch?.delegate = self
        println(match)
        if self.matchStarted == false && match.expectedPlayerCount == 0 {
            self.lookupPlayers()
        }
    })
}

Это единственное различие между этим и тем, что работало, заключается в том, что вместо него есть GKMatchmaker, а не GKMatchmakerViewController и Delegate.

0 ответов

Другие вопросы по тегам