2012-06-20 11 views
7

Sto eseguendo Xcode 4.3.3 e sto scegliendo iOS 5.1. Sto tentando di includere la funzionalità di Game Center in un gioco.Comportamento bizzarro del GameKit. Qualcun altro vedendo questo?

Quando autenticare l'GKLocalPlayer l'utente è presentato con la Accedi al Game Center visualizzazione degli avvisi o dimostrato di essere loggato. Finora questo è tutto bene, ma se l'utente preme il Crea nuovo account tasto poi eventuali vista aperta modale vengono spostati dietro il controller della vista radice e il seguente errore viene sputo dalla console:

chiamate bilanciati per iniziare/transizioni aspetto finali per < GKModalRootViewController: indirizzo di memoria >.

Ho provato a spostare il codice di autenticazione GKLocalPlayer tra il delegato dell'app e il controller di visualizzazione radice. Ho anche provato a implementare l'autenticazione in un nuovo progetto vuoto. L'ho provato con e senza Storyboard e ARC. In tutti questi casi i risultati sono stati gli stessi: le modalre nascoste dietro il controller della vista radice e l'errore fornito.

Ecco il metodo di autenticazione GKLocalPlayer sto chiamando da applicativi mia applicazione del delegato: didFinishLaunchingWithOptions: metodo:

- (void)authenticateLocalPlayer 
{ 
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 
    [localPlayer authenticateWithCompletionHandler:^(NSError *error) { 
     if (localPlayer.isAuthenticated) { 
      // Perform additional tasks for the authenticated player. 
     } else { 
      // Disable Game Center features. 
     } 
     if (error) { 
      // Handle error. 
     } 
    }]; 
} 

Here è uno screenshot di esso. In questa immagine il controller della vista radice ha uno sfondo con un valore alfa del 50%. Il modal è stato spostato dietro il controllore della vista radice da questo bug.

This stackoverflow question contiene l'unico riferimento a questo errore (relativo a GKModalRootViewController) che riesco a trovare e che non si adatta poiché (a.) Non sto utilizzando cocos2d. (b.) Accade se eseguo o meno un seguito e non sto toccando viewWillAppear: o viewDidAppear :. (c.) Non è stata data una risposta accettabile.

This question e this one sembrano coinvolgere lo stesso problema (con la gerarchia della vista che viene distrutta) ma non hanno risposta e non menzionano il messaggio di errore della console.

Questo succede a chiunque altro? Qualche idea su cosa potrebbe causare questo?

UPDATE 1: Sono arrivato al punto di mettere il codice di autenticazione in un IBAction collegato a un pulsante nella vista modale in modo da evitare eventuali conflitti di inizializzazione. Non ha aiutato.

UPDATE 2: Ho provato a spostare il codice di autenticazione in una coda di sfondo GCD. i risultati erano gli stessi.

Here è il progetto di test (che è già pronto per GameCenter con l'ID bundle della mia app).

A prova:

  1. Log di Game Center sul test del dispositivo/simulatore (se siete loggato).
  2. Costruisci ed esegui l'app.
  3. Premere il pulsante Info.
  4. Premere Autenticare.
  5. Quando viene visualizzato l'avviso Accedi al centro giochi, premere Crea nuovo Account.
  6. Premere Annulla.
  7. Il messaggio "Squilibri chiamate ..." viene visualizzato nella console? La vista modale è scomparsa (con il pulsante Autentica)?
  8. Premere il pulsante Info.
  9. Il display modale è di nuovo disponibile?
+1

Hai ancora riscontrato questo problema? – NathanChristie

+0

Il problema persiste in iOS 5.1.1, tuttavia iOS 6 ha risolto il problema. – Endersstocker

risposta

2

Questo bug viene visualizzato nell'elenco di "bug risolti da Apple in 6.0". Capisco che ti piacerebbe una soluzione alternativa, ma quando le API dipendono dal fatto che sono bacate, è probabile che le probabilità siano ridotte.

È tuttavia possibile gioire del fatto che gli utenti di 5.x si stiano lentamente estinguendo.

Buona fortuna con la tua app.

Problemi correlati