问题描述
我正在使用Game Center的回合制比赛来构建游戏。
I'm building a game using Game Center's turn based matches.
我想显示所有可用匹配项的列表。我已尝试使用 loadMatchesWithCompletionHandler()
,但游戏数组返回 nil
,错误也会返回为零
。有一些正在进行的比赛。
I want to display a list of all the available matches. I've tried using loadMatchesWithCompletionHandler()
, but the array of games returns as nil
, and the error also returns as nil
. There are some ongoing matches.
这是我到目前为止:
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")
}
}
创建新匹配时我甚至得到 nil
(它会打印我刚刚创建的匹配):
I even get nil
when creating a new match (it will print the match I just created, though):
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)
}
})
})
})
}
推荐答案
这不是代码。这就是在iTunes Connect中设置游戏的方式。我需要这样做:
It wasn't the code. It was how the game was set up in iTunes Connect. I needed to do this:
- 转到我的应用程序> App Store>准备提交并切换游戏中心的开关
- 添加我之前在功能下创建的排行榜
稍后,我将尝试删除排行榜,看看它是否仍然有效。实际的应用程序不会有排行榜。
Later, I will try to delete the leaderboard, and see if it still works. The actual app won't have a leaderboard.
我的困惑是因为我没有得到无法识别的游戏错误,我能够创建比赛,玩转,列出玩家的朋友,但不列出匹配。
My confusion was because I wasn't getting the "unrecognized game" error, and I was able to create matches, play turns, list player's friends, but not list matches.
这篇关于如何为玩家列出所有可用的GKTurnBasedMatches?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!