2011-08-30 5 views
4

J'ai un jeu sur iPhone auquel j'ai ajouté le support de GameCenter, et tout semble fonctionner correctement. Mais, comme quelqu'un qui n'utilise pas GameCenter, j'ai ajouté une option pour que les utilisateurs puissent l'éteindre. Le seul problème est qu'une fois que GKLocalPlayer est connecté à GameCenter, je ne vois pas de moyen de les déconnecter - ce qui signifie que si l'utilisateur est connecté, il désactive le support de GameCenter, mon application ne l'utilisera pas, mais le La bibliothèque GK reconnait toujours l'utilisateur chaque fois que mon application revient au premier plan, jusqu'à ce que l'application soit terminée. Je ne veux pas que cela arrive!GameCenter - Déconnecter le lecteur

Y a-t-il un moyen de déconnecter le lecteur local de GameCenter, ou au moins d'empêcher le framework GK de vous reconnecter à chaque fois que votre application devient active?

+0

Vous pouvez essayer paramètre 'localPlayer.authenticateHandler = nil;' –

+0

Le 'authenticateHandler' ne doit pas être nul. –

Répondre

1

Il est impossible de se déconnecter du centre de jeu depuis l'application. La meilleure solution est d'ajouter un indicateur booléen indiquant l'état de connexion de l'utilisateur:

BOOL gameCenterOn = [[NSUserDefaults standardUserDefaults] boolForKey:@"gameCenterOn"]; 

défaut, YES, et situé juste à NO si l'utilisateur choisit la sortie du centre de jeu dans votre application.

Vous devrez également vérifier la valeur de ce drapeau avant de traiter toute demande de centre de jeu. (Y compris les appels [GKLocalPlayer localPlayer] authenticateWithCompletionHandler: dans le délégué app.)

+0

Ouais, c'est essentiellement ce que je fais déjà. Le problème est qu'une fois que vous êtes connecté, GK semble réauthentifier automatiquement le lecteur local chaque fois que votre application perd et récupère le statut de premier plan, et je n'arrive pas à trouver un moyen de le lui dire. Donc, si un utilisateur se connecte à GK, alors il décide de le désactiver, mon application ne parle plus à GameCenter, mais chaque fois que la tâche revient à mon application, GK s'authentifie de nouveau derrière le dos du joueur. Il ne * casse * rien, mais il utilise inutilement la précieuse bande passante 3G des gens! (Je suis l'OP) – GoatInTheMachine

+0

Pourquoi voulez-vous laisser les gens désactiver le centre de jeu dans votre App? S'ils ont un compte Game Center, pourquoi ne pas l'utiliser? Ils peuvent toujours se déconnecter dans l'application Game Center s'ils ne veulent pas l'utiliser. Quel est le scénario dans lequel quelqu'un serait connecté à Game Center mais ne voudrait pas l'utiliser avec votre application? Coder autour du comportement attendu est un bon signe d'avertissement. –

+0

J'ai un compte de centre de jeu, mais je ne l'utilise pas, parce que tant d'applications sont * vraiment vraiment mauvaises * à ne pas se briser/faire des choses bizarres lorsque la connexion est abandonnée. Cela signifie que certains autres jeux me demandent constamment de me connecter à GameCenter chaque fois qu'ils deviennent actifs, ce qui est incroyablement ennuyeux. – GoatInTheMachine