2013-01-20 7 views
7

Pracuję nad grą, która używa Game Center i otrzymuję kolejne ostrzeżenie;authenticateWithCompletionHandler: jest nieaktualny: najpierw przestarzały w iOS 6.0

... 'authenticateWithCompletionHandler:' jest przestarzałe: najpierw przestarzałe w iOS 6.0

Ok, szukałem i okazało się, że jest nowy kod uwierzytelnienia użytkownika lokalnego więc wymieniłem

stary kod :

- (void)authenticateLocalUser { 

    if (!gameCenterAvailable) return; 

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

z nowym:

- (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!"); 
    } 
} 

i wszystko jest ok, oprócz jednej rzeczy. Jeśli użytkownik nie jest zalogowany, nie ma formularza logowania do Game Center. Ze starym kodem wyświetla się formularz logowania do Game Center, jeśli użytkownik nie jest zalogowany.

Czy jest jakiś dodatkowy kod, który muszę włożyć lub coś jeszcze?

Dodatkowe info: - tryb krajobrazu - target Wdrożenie: 6,0

Odpowiedz

10

Tak, trzeba ręcznie przedstawić formularz logowania z iOS6, to daje większą kontrolę nad tym, kiedy przedstawienie ekran. Dać to spróbuj

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

otrzymuję ten błąd: Ostrzeżenie: próba przedstawienia CroiOS

+0

Dodatkowe informacje: - tryb krajobrazowy - miejsce docelowe wdrożenia: 6.0 – CroiOS

+0

gdzie jest wywoływany kod uwierzytelniający? –

Powiązane problemy