[英]With the iOS Photos Framework how do I list all PHAssetCollections available?
[英]How to list all available GKTurnBasedMatches for a player?
我正在使用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")
}
}
在創建新匹配時我甚至會得到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)
}
})
})
})
}
這不是代碼。 這就是在iTunes Connect中設置游戲的方式。 我需要這樣做:
稍后,我將嘗試刪除排行榜,看看它是否仍然有效。 實際的應用程序將沒有排行榜。
我的困惑是因為我沒有得到“無法識別的游戲”錯誤,我能夠創建比賽,轉彎,列出玩家的朋友,但不能列出匹配。
從您展示的片段中分辨出來有點難。 要仔細檢查的事情:
你假設.authenticated
是YES然后你登錄。不幸的是,這並不總是正確的。 GC將在無法與GC服務器通信但使用先前會話的緩存數據的情況下報告YES。 (通常情況下,當您在此狀態下嘗試加載匹配項時,實際上會收到有關未進行身份驗證的錯誤)
假設VC為零,那么您將通過身份驗證。 這也不總是正確的。 如果設置了錯誤,VC也將為零。 始終在身份驗證處理程序中首先檢查錯誤的值。 (我不認為這會對您的問題產生影響,但是,因為:如果您在實際未經過身份驗證時嘗試加載匹配項,則會出現錯誤)
如果您有興趣,可以在https://stackoverflow.com/a/37216566/1641444上查看我的身份驗證處理程序示例,該處理程序可以捕獲各種邊緣情況和故障。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.