2011-06-17 76 views
7

我正在嘗試爲我的應用製作一個Game Center排行榜。我一直在遵循Apple的步驟並遵循GKTapper的示例代碼,但我無法在Game Center中顯示任何分數。我已經在iTunes Connect中設置了排行榜。下面是報告得分的代碼:沙盒排行榜空

- (void) reportScore: (int64_t) score forCategory: (NSString *) category { 
    GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease]; 
    scoreReporter.value = score; 

    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) { 
     if (error != nil) 
     { 
      UIAlertView* alert= [[[UIAlertView alloc] initWithTitle: @"Score Report Failed!" message: [NSString stringWithFormat: @"Reason: %@", [error localizedDescription]] delegate: self cancelButtonTitle: @"Try Again..." otherButtonTitles: NULL] autorelease]; 
      [alert show]; 
     } 
    }]; 
} 

該代碼似乎運行良好。該警報從不顯示。但是,當我進入Game Center時,排行榜是空白的。我正在運行Xcode 4.2和iOS 5.任何想法?

回答

-1

爲reportScoreWithCompletionHandler文檔說:

「您的應用程序應該保持一個強有力的參考分數對象,直到報告的任務就完成了。」

您正在autoreleasing。由於任務稍後會完成,因此在執行操作之前可能會刪除該對象。

2

在init爲我修復後,再次顯式設置類別。

Scoreobject.category = category 

此外,爲了顯示正確的排行榜我也設置了類別。

leaderboardobject.category = @"mycategory"; 
0

1)請檢查您的拼寫是否正確。令人驚訝的是,即使我的拼寫錯誤,我也沒有收到錯誤信息。糾正錯字糾正了我的問題。

2)在展示GKLeaderboardViewController之前,請檢查您是否設置了正確的排行榜?正確設置如下:

GKLeaderboardViewController *leaderboardViewController = [[[GKLeaderboardViewController alloc] init] autorelease]; 
leaderboardViewController.category = @"yourcategoryname"; 
[youviewcontroller presentModalViewController:leaderboardViewController animated: YES]; 
0

兩個經過驗證的GameCenter用戶必須在排行榜中出現任何分數之前向排行榜報告分數。

如果您的沙盒中只有一個用戶,請創建另一個用戶並報告分數。

如果它仍然無效,請確保您驗證了這兩個用戶的電子郵件地址。

3

不管一直說是完全正確的:

  • 你需要一個int_64t分數;
  • 你需要iTunesConnect上設置的所有東西;
  • 您需要使用沙盒帳戶。

我剛剛發現的是iTunesConnect中沒有這樣的東西作爲類別。另一方面,您應該使用排行榜類別啓動您的GKScore。

從我在論壇中看到的情況來看,大約2/3的人都是對的。

在iTunesConnect,當配置排行榜,可以設置:

  • 其參考(我長想到的是類);
  • 它的ID(原來是實際類別)。

我試圖使用引用而不是ID發佈分數。

兩件事情:

  • 第一,我沒有錯誤從程序(其在一些方式,是可以接受的);
  • 第二,一旦我弄清楚了,我注意到,雖然很多人聲稱相反,但不需要多個沙箱帳戶來顯示分數。