代码之家  ›  专栏  ›  技术社区  ›  zpasternack

如何编程检测游戏中心?

  •  4
  • zpasternack  · 技术社区  · 14 年前

    我正在为我的游戏添加游戏中心支持。因为我的游戏可以在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 reference 声明这个类在ios4.1和更高版本中可用,上面的测试在ios4.0中通过(我没有尝试更早的版本)。另一方面,测试也通过了iOS4.1,但不支持Game Center的设备(例如,iPhone3G)。

    以编程方式检测Game Center支持的“正确方法”是什么?

    1 回复  |  直到 14 年前
        1
  •  11
  •   swilliams    14 年前

    这是苹果网站上GameKit文档中提供的代码:

    BOOL isGameCenterAvailable()
    {
        // Check for presence of GKLocalPlayer API.
        Class gcClass = (NSClassFromString(@"GKLocalPlayer"));
    
        // The device must be running running iOS 4.1 or later.
        NSString *reqSysVer = @"4.1";
        NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
        BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending);
    
        return (gcClass && osVersionSupported);
    }
    

    http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html%23//apple_ref/doc/uid/TP40008304-CH5-SW7