我正在开发一个应用程序,使用以下代码向Game Center报告分数(根据苹果的建议)。我的问题是,即使我的iPhone处于飞行模式,该应用程序也不会触发任何分数报告错误。它只是转到代码的"Submission ok"部分。知道为什么吗?谢谢你!
GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease];
scoreReporter.value = score;
[scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
if (error != nil)
{
// handle the reporting error
NSLog(@"Error Descr %@",error.localizedDescription);
NSLog(@"Error Code %@",error.code);
NSLog(@"Error Domain %@",error.domain);
}
else {
NSLog(@"Submission ok");
}
}];
从iOS 5.0开始,任何由reportScoreWithCompletionHandler
引起的网络错误都由GameKit内部处理。这意味着开发者不再需要担心由于网络故障而重新提交分数。如果你使用ios5.0或更高版本构建,reportScoreWithCompletionHandler
的完成处理程序将不会收到任何与网络相关的错误。
我建议使用Apple的可达性标志来自己检测活动连接。如果连接不可用,保存Game Center请求以备将来提交,并在网络恢复可用时提交。更多关于可达性的信息可以在这里找到