如何为玩家列出所有可用的 GKTurnBasedMatches?

coo*_*ita 5 ios game-center gkturnbasedmatch

我正在使用 Game Center 的回合制比赛构建游戏。

我想显示所有可用匹配项的列表。我试过使用loadMatchesWithCompletionHandler(),但游戏数组返回为nil,错误也返回为nil。有一些正在进行的比赛。

这是我到目前为止:

func authenticateLocalUser() {
    if !gameCenterAvailable { return }

    let player = GKLocalPlayer.localPlayer()
    if player.authenticated == false {
        player.authenticateHandler = {(viewController, error) -> Void in
            if viewController != nil && self.presentingViewController != nil
            {
                self.presentingViewController!.presentViewController(viewController!, animated: true, completion: {
                    GKLocalPlayer.localPlayer().registerListener(self)

                    GKTurnBasedMatch.loadMatchesWithCompletionHandler({games, error in
                        print(games)
                        if games != nil {
                            print(games!.count)
                        }else {
                            print(error)
                        }
                    })
                })
            } else {

                if player.authenticated == true {
                    GKLocalPlayer.localPlayer().registerListener(self)

                    GKTurnBasedMatch.loadMatchesWithCompletionHandler({games, error in
                        print(games)
                        if games != nil {
                            print(games!.count)
                        }else {
                            print(error)
                        }
                    })
                }
            }
        }
    } else {
        print("already authenticated")
    }
}
Run Code Online (Sandbox Code Playgroud)

我什至nil在创建新匹配时得到(不过它会打印我刚刚创建的匹配):

func findMatchWith(minPlayers: Int, maxPlayers: Int) {
    if !gameCenterAvailable { return }

    let request = GKMatchRequest()
    request.minPlayers = minPlayers
    request.maxPlayers = maxPlayers
    request.defaultNumberOfPlayers = 2

    GKLocalPlayer.localPlayer().loadFriendPlayersWithCompletionHandler({players, error in
        if error != nil {return}
        request.recipients?.append(players![0])

        GKTurnBasedMatch.findMatchForRequest(request, withCompletionHandler: { match, error in
            if error != nil {
                print(error?.localizedDescription)
                return
            }
            print(match)

            GKTurnBasedMatch.loadMatchesWithCompletionHandler({games, error in
                print(games)
                if games != nil {
                    print(games!.count)
                }else {
                    print(error?.localizedDescription)
                } 
            })
        })
    })
}
Run Code Online (Sandbox Code Playgroud)

coo*_*ita 2

这不是代码。这就是游戏在 iTunes Connect 中的设置方式。我需要这样做:

  1. 进入我的应用 > App Store > 准备提交并切换 Game Center 开关
  2. 添加我之前在“功能”下创建的排行榜

稍后我会尝试删除排行榜,看看它是否仍然有效。实际的应用程序不会有排行榜。

我的困惑是因为我没有收到“无法识别的游戏”错误,并且我能够创建比赛、轮流玩、列出玩家的朋友,但不能列出比赛。