0

私のゲームは、iOS5 で 1 年間完全に正常に動作しています。iOS6 で動作するようにアップデートした後、Game Center でスコアを送信しようとするとクラッシュするようになりました。reportScoreWithCompletionHandlerコードの行でクラッシュします

- (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);                
                           }
                       });
    }];
}

ここで何が間違っていますか?

アップデート

少し調べてみると、問題がある可能性もあるようauthenticateWithCompletionHandlerです...そのための私のコードは以下のとおりです..これが原因である場合、どうすれば動作するように更新できますか?

- (void)authenticateLocalUser { 

    if (!gameCenterAvailable) return;

    NSLog(@"Authenticating local user...");
    if ([GKLocalPlayer localPlayer].authenticated == NO) {     
        [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil];        
    } else {
        NSLog(@"Already authenticated!");
    }
}
4

1 に答える 1

1

ここで解決策を見つけました

スコアのコピーを作成し、コピーを提出する必要があるようです。保存したスコアを再送信するときにのみ発生するようです。これは、リーダーボードから を送信できないようにするためでしょうGKScoreか?

// Pull the score value and category from the passed in score
int scoreValue = score.value;
NSString*scoreCategory = score.category;

// Create a new temporary score with these values
GKScore *toReport = [[[GKScore alloc]
initWithCategory:scoreCategory] autorelease];
toReport.value = scoreValue;
于 2013-01-11T13:32:31.877 に答える