我正在为我的游戏添加Game Center支持。由于我的游戏可以在iOS 3.0版本及以上运行,所以我希望在没有Game Center的情况下,它可以回退到本地保存成就和排行榜。
目前,我有以下代码:
+ (BOOL) isGameCenterAvailable {
Class playerClass = NSClassFromString( @"GKLocalPlayer" );
if( playerClass != nil && [playerClass localPlayer] != nil ) {
DebugLog( @"Game Center is available" );
return YES;
}
DebugLog( @"Game Center is NOT available" );
return NO;
}
然而,这似乎根本不起作用。一方面,尽管GKLocalPlayer参考声称该类在iOS 4.1及更高版本中可用,但上述测试在iOS 4.0中通过(我没有尝试早期版本)。另一方面,在不支持Game Center的设备上(例如iPhone 3G),即使其运行iOS 4.1,测试也会通过。
我查阅了各种在线的GameKit和Game Center文档,但仍未能找到答案。我当然可以检测操作系统版本,但这似乎很糟糕。对于不受支持的硬件(如3G),这也无济于事。我想这也可以被检测到,但再次,似乎有点糟糕。
编程方式检测Game Center支持的“正确方法”是什么?