J'apporte le support Game Center à mon jeu. Parce que mon jeu peut fonctionner sur des versions iOS à partir de la version 3.0, je veux que ce soit un moyen de sauvegarder les réussites et les classements localement en l'absence de Game Center.Comment détecter par programme Game Center?
En ce moment, j'ai ceci:
+ (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;
}
Cependant, cela ne semble pas fonctionner du tout. D'une part, malgré le GKLocalPlayer reference indiquant que cette classe est disponible dans iOS 4.1 et supérieur, le test ci-dessus passe dans iOS 4.0 (je n'ai pas essayé les versions antérieures). Pour une autre chose, le test passe également sur les appareils qui ont iOS 4.1, mais qui ne prennent pas en charge Game Center (par exemple, un iPhone 3G).
J'ai parcouru les divers documents de GameKit et de Game Center en ligne, et je n'ai pas eu de chance de le savoir. Je pourrais certainement détecter la version du système d'exploitation, mais cela semble boiteux. Cela n'aiderait pas non plus dans le cas d'un matériel non supporté (comme une 3G). Cela pourrait également être détecté, je suppose, mais encore une fois, semble un peu boiteux.
Quelle est la «bonne façon» de détecter par programme le support de Game Center?
+1. Et wow, Apple, que diable. – kennytm
+1 Un des rares cas où la vérification de la version est nécessaire, car certains éléments privés étaient disponibles plus tôt. – Eiko
Je ne sais pas comment j'ai raté ça, merci! – zpasternack