iOS Game Center Sandbox: таблица лидеров показывает «Нет очков» - PullRequest
4 голосов
/ 03 февраля 2012

Таким образом, я отправляю оценки в списки лидеров GC, я не получаю ошибок, и результаты отправляются по отдельности, но я все еще не вижу результатов, перечисленных в таблицах лидеров!Сама таблица лидеров указана в Game Center, там просто нет баллов.

Согласно поиску Google и здесь это может быть решено попыткой зарегистрировать баллы с несколькими аккаунтами.,Я пробовал использовать три разных аккаунта в Simulator (iOS5) и на моем iPhone;ни одна из них не показывает никаких ошибок при отправке результатов.

Код для отправки оценки находится здесь:

- (void)reportScore:(NSString *)identifier score:(int)rawScore {

    GKScore *score = [[[GKScore alloc] initWithCategory:identifier] autorelease];
    score.value = rawScore;
    [scoresToReport addObject:score];
    [self save]; // Save here even though we save again in didEnterBackground, just in case of crash...

    if (!gameCenterAvailable || !userAuthenticated) return;
    [self sendScore:score];
}

- (void)sendScore:(GKScore *)score {
    [score reportScoreWithCompletionHandler:^(NSError *error) {
        dispatch_async(dispatch_get_main_queue(), ^(void)
                       {
                           if (error == NULL) {
                               NSLog(@"Successfully sent score!");
                               [scoresToReport removeObject:score];                
                           } else {
                               NSLog(@"Score failed to send... will try again later.  Reason: %@", error.localizedDescription);                
                           }
                       });
    }];
}

Ответы [ 2 ]

10 голосов
/ 03 февраля 2012

Он неожиданно начал работать (без изменения кода или даже перекомпиляции). Я полагаю, что на самом деле появятся таблицы лидеров, у меня около 18 часов.

Результаты, поданные в течение этого времени, будут записываться, они просто не будут видны мгновенно.

0 голосов
/ 03 февраля 2012

У меня никогда не было очков, которые можно было бы добавить в песочницу, но вот код, который я реализовал, и он отлично работает с версией, которая в настоящее время находится в магазине приложений:

GKScore * score = [[[GKScore alloc] initWithCategory:@"com.example.appname.scoreboardname"] autorelease];
score.value = [[NSUserDefaults standardUserDefaults] integerForKey:@"NEWSCORE"];
[score reportScoreWithCompletionHandler:^(NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^(void) {
        if (error == NULL) {
            NSLog(@"Score Sent");
        } else {
            NSLog(@"Score Failed");
        }
    });
}];

просто убедитесь, что ваш GKScore.значение имеет тип int64_t

...