2013-02-16 1 views
1

내 게임에서 GameCenter를 사용하고 있습니다. 나는게임 센터에서 계정을 사용한 적이 없다면 GameCenter 작동이 취소됩니다.

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 
[localPlayer authenticateWithCompletionHandler:^(NSError *error) { 
    if (localPlayer.isAuthenticated) 
    { 

     } 

문제가 localPlayer.isAuthenticated 플래그가 TRUE 가시 오류 변수가 항상 있다는 것입니다이 선은 "취소 된 작업"코드 2 =되어 있습니다 (???).

기기의 게임 센터와 상점에서 로그 아웃했지만이 플래그는 항상 true이며 게임 앱이 시작될 때 표시해야하는 게임 센터 로그인이 표시되지 않습니다. 게임 센터를 사용하는 게임이 시작될 때 항상 표시되는 "환영"배너가 표시되지 않습니다.

로그인 창을 다시 표시하도록 게임 센터에서 로그 아웃하려면 어떻게합니까?

iOS 4.3 용으로 컴파일 중입니다.

감사


은 내가 지금 발견하면 장치의 게임 센터에 로그인하지 않을 경우 이러한 상황이 발생한다는 것입니다. 일단 거기에 로그인하고 게임 센터에서 사용자 이름을 사용한다고 말하면 앱이 작동합니다. 최악의 부분은 누군가가 게임을 다운로드하지만 게임 센터가 아직 설정되지 않았다고 가정합니다. 그래서, 게임은 그들을 위해 결코 작동하지 않을 것입니까? 내 게임은 게임 센터를 독점적으로 사용하기로되어 있습니다. 그래서, 제게 이것은 문제입니다.

답변

0

나를 위해 잘 작동합니다. 그냥

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

if([GKLocalPlayer localPlayer].authenticated) 

에서 코드를 변경 // 기타 코드

if([GKLocalPlayer localPlayer].authenticated == NO) 
    { 
       [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) 
      { 
        [self processGameCenterAuth: error]; 
      }]; 
    } 


- (void) processGameCenterAuth: (NSError*) error 
{ 
    if(error == NULL) 
    { 
     [mGameCenterManager reloadHighScoresForCategory: self.currentLeaderBoard]; 
    } 
    else 
    { 
     // NSLog(@"%@\n\n",[NSString stringWithFormat: @"Reason: %@", [error localizedDescription]]); 

     AppController *app = (AppController*)[UIApplication sharedApplication].delegate; 

     if(!app.isgameCenterStarted) 
     { 
      UIAlertView* alert= [[[UIAlertView alloc] initWithTitle:@"Game Center Unavailable" message: @"Player is not signed in" 
                  delegate: NULL cancelButtonTitle: @"OK" otherButtonTitles: NULL] autorelease]; 
      [alert show]; 
     } 
     else 
     { 
      [[NSNotificationCenter defaultCenter] postNotificationName:@"GameCenterUnAvailable" object:nil]; 
     } 
    } 

} 
관련 문제