2016-04-08 1 views
0

J'ai configuré des jeux au tour par tour GameCenter pour mon jeu. En ce moment j'essaye juste d'afficher une liste des allumettes actuelles pour le joueur actuel de GK.GameCenter - GKTurnBasedMatch.loadMatchesWithCompletionHandler renvoie un tableau nul

Voici mon code:

GKTurnBasedMatch.loadMatchesWithCompletionHandler { (matchesOpt, errorOpt) in 

    if let error = errorOpt { 
     print("Error loading matches: \(error.localizedDescription)") 
    } else if let matches = matchesOpt { 
     self.matches = matches 
     self.gamesTableView.reloadData() 
    } else { 
     print("Matches array is nil") 
    } 
    } 
} 

Le troisième cas est toujours frappé, le tableau de résultats est nul.

Je pense qu'il devrait y avoir des correspondances. J'utilise

GKTurnBasedMatch.findMatchForRequest 

pour commencer les correspondances, et il réussit. De plus, si je note la matchId du match de findMatchForRequest, puis j'appelle

GKTurnBasedMatch.loadMatchWithID(matchId) 

il trouve le match, avec les données de match correct et tout.

Est-ce que quelqu'un sait comment je peux obtenir loadMatchesWithCompletionHandler pour retourner les mêmes jeux que je peux récupérer par ID?

Edit: Voici le code d'authentification:

GKLocalPlayer.localPlayer().authenticateHandler = { (viewControllerOpt, errorOpt) in 

    NSLog("GK local player authentication finished. Error: \(errorOpt)") 
    if let viewController = viewControllerOpt { 
    self.presentViewController(viewController, animated: true, completion: nil) 
    } 

    GKLocalPlayer.localPlayer().registerListener(self) 

} 
+0

Pouvez-vous ajouter le code où vous authentifiez l'utilisateur local? – Thunk

+0

Autre chose à vérifier, dans les gestionnaires de complétion 'findMatchForRequest' et' loadMatchWithID', essayez de vider le tableau 'participants' pour voir dans quel état se trouve le joueur local. – Thunk

+0

Modifier: Code d'authentification ajouté. –

Répondre

0

J'ai eu le même problème depuis deux semaines. D'une seconde à l'autre ça fonctionnait, il semble que c'était un problème @apple. Ne rien changer et réessayer :)

1

Il semble que plusieurs personnes l'aient récemment rencontré. Je ne sais pas si c'est pertinent, mais les exemples cités ont toujours utilisé swift. Basé sur How to list all available GKTurnBasedMatches for a player?, il semble que la création d'un classement permet de résoudre le problème. Selon le fil de discussion https://stackoverflow.com/a/34056115/1641444, il semble que parfois Game Center soit stupéfié et, pour une raison quelconque, en créant un classement/succès, ou même en changeant simplement la valeur par défaut, le kick le remet en action.

+0

Thunk a raison, cela l'a fixé pour moi. Accédez à iTunes Connect> Votre application> onglet App Store> recherchez la version de votre application> basculez le commutateur Game Center et ajoutez un classement. – Bokoskokos