2012-04-29 2 views
1

리더 보드를 내 iOS 게임과 통합하려고합니다.iOS 순위표 GameCenter

GKScore 클래스에는 범주가 필요하지만 한 개의 리더 보드 만 있습니다. 필드 카테고리는 어디에도 표시되지 않습니다. 리더 보드 ID, 리더 보드 참조 이름 및 현지화 된 리더 보드 이름이 있습니다. 어떤 것을 사용합니까?

두 개의 계정으로 점수를 제출하지만 리더 보드에 점수가 표시되지 않습니다. 나는 에뮬레이터를 사용하고있다.

+0

시뮬레이터를 사용 중입니다. iOS 용 에뮬레이터가 없습니다. (나는 당신의 질문을 편집하려했지만, 편집이 너무 작아서 받아 들일 수 없었고, 나는 고칠 가치가있는 것을 찾지 못했다 : P) –

답변

3

먼저 에뮬레이터를 사용하지 마십시오. 게임 센터에 점수를 제출하는 것과 같은 많은 기능이 시뮬레이터에서 작동하지 않기 때문에 가능한 경우 장치를 사용하십시오. 시도한 점수보고로 반환 된 오류 로깅을 시도 했습니까? 이것은 당신에게 미래의 어려움에 대한 더 자세한 정보를 줄 것입니다. 질문에 답하기 위해 리더 보드 ID를 카테고리로 사용합니다. 다음은 범주의 점수를 제출하는 데 사용할 수있는 샘플 기능입니다 :

는 헤더 파일에 isGameCenterAvailable 부울을 정의하고 다음 코드를 사용하여 값을 설정 :이 방법을 사용하여 점수를 제출

Class gameKitLocalPlayerClass = NSClassFromString(@"GKLocalPlayer");   
bool isLocalPlayerAvailable = (gameKitLocalPlayerClass != nil);  

// Test if device is running iOS 4.1 or higher 
NSString* reqSysVer = @"4.1"; 
NSString* currSysVer = [[UIDevice currentDevice] systemVersion]; 
bool isOSVer41 = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending); 

isGameCenterAvailable = (isLocalPlayerAvailable && isOSVer41); 
NSLog(@"GameCenter available = %@", isGameCenterAvailable ? @"YES" : @"NO"); 

를 :

-(void) submitScores:(int64_t)score category:(NSString*)category { 

    if (!isGameCenterAvailable){ 
     return; 
    } 

    GKScore* gkScore = [[[GKScore alloc] initWithCategory:category] autorelease]; 
    gkScore.value = score; 

    [gkScore reportScoreWithCompletionHandler:^(NSError* error) { 
     bool success = (error == nil); 
     if(!success){ 
      NSLog(@"Error Reporting High Score: %@", [[error userInfo] description]); 
     } 
     [delegate onScoresSubmitted:success]; 
    }]; 
} 

이 코드는 cocos2d 게임 개발에 대한 훌륭한 책을 저술 한 Steffen Itterheim이 썼습니다. 여기에 대한 링크 및 그로 많은 다른 제품에 대한 링크가 있습니다 : http://www.learn-cocos2d.com/

+0

코드를 보내 주셔서 감사합니다! 또한 도움이되는 것으로 나타났습니다. http://www.cocos2d-iphone.org/forum/topic/20998 –

관련 문제