我正在为我的游戏添加 Game Center 支持。因为我的游戏可以在 3.0 版本的 iOS 上运行,所以我想让它回退到在没有 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 中通过(我没有尝试早期版本)。另一方面,该测试还通过了具有 iOS 4.1 但不支持 Game Center 的设备(例如,iPhone 3G)。
我已经在线浏览了各种 GameKit 和 Game Center 文档,但没有任何运气能弄清楚这一点。我当然可以检测到操作系统版本,但这似乎很蹩脚。对于不受支持的硬件(如 3G)的情况,这也无济于事。我想这也可以被检测到,但同样,似乎有点蹩脚。
以编程方式检测 Game Center 支持的“正确方法”是什么?