La boîte de dialog de connection au Game Center ne s'affiche plus après l'avoir annulée pour la première fois (iOS7)

J'ai un problème avec la connection d'un user au Game Center. Je présente d'abord la boîte de dialog de connection juste après le chargement de l'application. Si l'user annule la boîte de dialog, je veux lui donner la possibilité de changer d'avis en fournissant un button de connection dans mon menu principal. Cependant, sur les iPads avec iOS7, le button ne fait rien – la boîte de dialog Game Center ne s'affiche pas (cela fonctionne correctement sur iOS6). Au lieu de cela, je reçois immédiatement l'erreur "L'opération demandée a été annulée ou désactivée par l'user." Le même code est appelé au lancement de l'application et sur le button. Il utilise la méthode authenticateWithCompletionHandler et ressemble fondamentalement à:

GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer]; [localPlayer authenticateWithCompletionHandler:^(NSError *error) { OnLogin(error); }]; 

(Je sais que la méthode est déconseillée, mais mon expérience avec le nouveau a été encore pire).

Ce qui est intéressant, c'est que la boîte de dialog GC apparaît si je déplace l'application en arrière-plan et la ramène au premier plan.

Le problème que je décris se produit même après la première annulation, donc je ne pense pas que cela ait quelque chose à voir avec les applications interdisant le Game Center après 3 annulations.

Est-ce que quelqu'un sait comment réparer ceci?

    En ce qui concerne votre commentaire, j'ai trouvé la documentation d'Apple qui mentionne la politique de Game Kit de ne pas requestr à un user de se reconnecter après avoir annulé la connection une fois.

    C'est dans le Guide de programmation de Game Center sous Common Tasks When Working with Players > Authenticating a Local Player on the Device . (le type en gras est le mien)

    Important: Game Kit gère la désactivation de Game Center sur tous les jeux compatibles avec Game Center. Si un joueur a déjà refusé de créer un count, lorsque votre jeu authentifie le joueur, il est dit qu'il n'y a pas de joueur authentifié. Le joueur ne voit jamais une boîte de dialog d'authentification. Étant donné que Game Kit gère ce process pour tous les jeux, votre jeu ne doit pas inclure son propre mécanisme pour désactiver l'authentification Game Center ou requestr l'autorisation d'un joueur à s'authentifier. Au lieu de cela, votre jeu devrait simplement authentifier le lecteur chaque fois qu'il se lance et répondre de manière appropriée lorsque l'authentification est terminée.

    Vous pouvez le confirmer en incluant un NSLog dans le gestionnaire d'authentification pour afficher chaque fois que le gestionnaire est appelé et s'il a réussi ou échoué. J'espère que cela t'aides…