2013-01-20 18 views
7

Sto lavorando al gioco che utilizza Game Center e ricevo il prossimo avviso;authenticateWithCompletionHandler: obsoleto: prima deprecato in iOS 6.0

... 'authenticateWithCompletionHandler:' è deprecato: prima obsoleta in iOS 6.0

Ok, ho cercato e scoperto che non v'è nuovo codice per l'autenticazione utente locale così ho sostituito

vecchio codice :

- (void)authenticateLocalUser { 

    if (!gameCenterAvailable) return; 

    NSLog(@"Authenticating local user..."); 
    if ([GKLocalPlayer localPlayer].authenticated == NO) { 
     [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil]; 
    } else { 
     NSLog(@"Already authenticated!"); 
    } 
} 

con quella nuova:

- (void)authenticateLocalUser { 

    if (!gameCenterAvailable) return; 

    NSLog(@"Authenticating local user..."); 

    if ([GKLocalPlayer localPlayer].authenticated == NO) { 

     GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 
     [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) { 
     //[localPlayer authenticateWithCompletionHandler:^(NSError *error) { OLD CODE! 
      if(localPlayer.isAuthenticated) { 
       //do some stuff 
      }else { 
       // not logged in 
      } 
     })]; 
    } else { 
     NSLog(@"Already authenticated!"); 
    } 
} 

e tutto è ok tranne una cosa. Se l'utente non ha effettuato l'accesso, non c'è un modulo di accesso al Game Center. Con il vecchio codice mostra il modulo di login di Game Center se l'utente non ha effettuato il login.

c'è qualche codice aggiuntivo che devo inserire o qualcos'altro?

informazioni Extra: - modalità orizzontale - destinazione della distribuzione: 6,0

risposta

10

Sì, è necessario presentare manualmente il form di login con iOS6, questo ti dà maggiore controllo su quando presentare lo schermo. Dare una prova

localPlayer.authenticateHandler = ^(UIViewController *viewController,NSError *error) { 
if (localPlayer.authenticated) { 
//already authenticated 
} else if(viewController) { 
[self presentViewController:viewController];//present the login form 
} else { 
//problem with authentication,probably bc the user doesn't use Game Center 
} 
}; 
+0

ottengo questo errore: Warning: tentativo di presentare CroiOS

+0

Ulteriori informazioni: - modalità orizzontale - obiettivo di distribuzione: 6.0 – CroiOS

+0

dove viene chiamato il codice di autenticazione? –

Problemi correlati