所以我有一个完成的游戏,我只是在提交到App Store之前整理一下。
由于我完成了大部分编码,我已经将xCode更新为7.1.1,将我的设备从8.1更新到iOS 9.1。
我学到的第一件事是游戏中心没有沙盒切换(这是我最常使用的没有问题)
现在,当我运行应用程序时,使用此代码报告分数时:
-(void)reportScore{
GKScore *this_score = [[GKScore alloc] initWithLeaderboardIdentifier:_leaderboardIdentifier];
this_score.value = gameScore;
[GKScore reportScores:@[this_score] withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"%@", [error localizedDescription]);
}
}];
NSLog(@"Reported to Game Center...");
}
我将此错误打印到控制台:
*** Terminating app due to uncaught exception 'GKInvalidArgumentException', reason: 'A GKScore must specify a leaderboard.'
*** First throw call stack:
(0x184e60f48 0x199a13f80... ...0x1000d9748... ...0x19a2628b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
指出,GKScore
必须指定leaderboard
...
我很困惑,因为直到我更新到iOS 9,这都运行良好。
我一直在阅读一堆关于iOS 9中沙箱合并的内容,但我并不了解所有内容。
从我可以收集的信息中,它被合并到真实账户中,所有沙箱数据都被删除,测试是在真实的排行榜上进行的?我可能错了。就像我说的那样,我不是百分之百的。
我该如何解决这个问题?我不确定找到准确资源的正确术语......我刚刚谷歌搜索了很长时间。
也许我需要在本地指定我的LeaderboardIdentifier?
提前致谢。
更新
这比我想象的更糟糕...... 当我试图打开/提交给Game Center时,App Store中的所有应用程序都崩溃了??
我只是想从reading this ...
开始测试它们是否有更清晰或更新的方法来实施Game Center?
答案 0 :(得分:0)
所以,我有一个解决方案......似乎有效。我将在接下来的几个小时(或几天)内相应更新...
我的预感是对的,如果我在方法中使用字符串指定LeaderboardIdentifier
,它现在看起来像这样:
//GKScore *this_score = [[GKScore alloc] initWithLeaderboardIdentifier:_leaderboardIdentifier];
GKScore *this_score = [[GKScore alloc] initWithLeaderboardIdentifier:@"myGameLeaderboardID"];
方便NSLogs
我也加入了call
& method
看起来像这样:
-(void) GameOver {
.
.
.
if(_gameCenterEnabled){
NSLog(@"--Reporting Score to Game Center...");
[self reportScore];
}
}
-(void)reportScore{
NSLog(@"--- Got to the method");
GKScore *this_score = [[GKScore alloc] initWithLeaderboardIdentifier:@"Enemies_Located"];
NSLog(@"---- Alloc GKScore done");
this_score.value = gameScore;
NSLog(@"----- Score assigned to GKScore");
[GKScore reportScores:@[this_score] withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"%@", [error localizedDescription]);
}
}];
NSLog(@"Reported to Game Center...");
}
导致以下控制台打印出来:
2015-12-07 23:20:24.666 myGame[88.....48] Some InGame Ref: 15
2015-12-07 23:20:24.704 myGame[88.....48] --Reporting Score to Game Center...
2015-12-07 23:20:24.704 myGame[88.....48] --- Got to the method
2015-12-07 23:20:24.705 myGame[88.....48] ---- Alloc GKScore done
2015-12-07 23:20:24.705 myGame[88.....48] ----- Score assigned to GKScore
2015-12-07 23:20:24.705 myGame[88.....48] Reported to Game Center...
这绝不是解决这个问题的正式方法,它围绕着许多人现在所拥有的论坛,因此为什么我几天都没有回答这个问题......但似乎为我工作如果您对此有任何好运,请告诉我,或者您知道为iOS 9实现此更好的方法。
同时,我应该更新我的所有应用程序-_-