2010-10-04 4 views
1

в яблоках документации для Game Center он говорит, чтобы использовать этот код, чтобы обнаружить, если Game Center доступен:Как определить поддержку Game Center?

+ (BOOL) isGameCenterAvailable { 
    Class gcClass = (NSClassFromString(@"GKLocalPlayer")); 

    NSString *reqSysVer = @"4.1"; 
    NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; 
    BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending); 

    return (gcClass && osVersionSupported); 
} 

Но он возвращает YES на моем iPhone 3G, который не имеет Game Center. Кто-нибудь, кто решил это?

ответ

0

Ответ в том, что вы не можете. Apple хочет, чтобы мы попытались войти в систему, чтобы узнать, есть ли там Game Center. Странно, но так оно и есть.

1

Я не пробовал это, но попробуйте получить местный игрок синглтон:

if (![gcClass localPlayer]) { 
    // then you havnt got game center support 
} 
+0

Спасибо, но это не работает. Похоже, что Apple планировала поддерживать Game Center на 3G, но потянула его за последнюю секунду или что-то в этом роде. – PEZ

+0

Вы никогда не сможете пройти аутентификацию на 3G-телефоне ... пока вы тестируете это, тогда не должно быть проблем с оборудованием, на котором вы находитесь. –

+1

Проблема в том, что если я попытаюсь выполнить аутентификацию, пользователь на поддерживаемом устройстве получит диалоговое окно входа. В этом диалоге ничего не говорится о Game Center (не знаю, почему Apple сделала это так). Я пытаюсь справиться с этим, предоставив кнопку, которая инициирует функции Game Center для приложения. И я не хочу показывать эту кнопку, если игровой центр недоступен. – PEZ

2

На самом деле вы можете проверить, может ли ваше приложение открыть одну из схем gamecenter: URL.

BOOL canOpenGC = [[UIApplication sharedApplication] canOpenURL:[NSURL urlWithString:@"gamecenter:/me/account]]; 

See this StackOverflow answer on the matter