Okej, więc wydanie gry LibGDX na iOS z AdMob i GPGS lub innymi powiązaniami jest bolesnym procesem, ale udało mi się sprawić, że wszystko działa, a moja gra jest już w stanie oczekiwania na sprawdzenie. W chwili udzielenia odpowiedzi wygląda na to, że Apple odrzuca aplikacje korzystające z Usług gier Google Play, ponieważ pakiet GPGS SDK przenosi użytkownika do Safari w celu zalogowania. Jest to niedopuszczalne dla Apple, ponieważ jest "kiepskim doświadczeniem użytkownika". W rzeczywistości, gdy użytkownik próbuje się zalogować, GPGS SDK szuka instalacji Google+ w celu zalogowania, jeśli nie można go znaleźć, to następnie otwiera przeglądarkę Chrome, a na końcu Safari, jeśli Chrome nie jest zainstalowany. Po prawidłowym zintegrowaniu GPGS i próbie przesłania mojego pliku binarnego do Apple napotkałem kolejny problem związany z brakiem podpisu Google SDK. Ponieważ wyglądało na to, że moja aplikacja zostałaby odrzucona, nawet jeśli miałbym rozwiązać ten problem, postanowiłem zrezygnować z GPGS i zamiast tego użyć Apple Game Center. Mimo to wciąż byłem w stanie uzyskać GPGS z AdMobem pracującym na moim urządzeniu testowym, więc mogę odpowiedzieć jak tu.
Po pierwsze, próbki w BlueRiverInteractive nie są zbyt użyteczne w grze LibGDX. Wszystkie funkcje UIWindow, UIViewController i UIView, z którymi nie powinieneś się bawić. Twoja klasa IOSLauncher powinna przedłużyć Delegata zamiast UIApplicationDelegateAdapter. Jeśli zajrzysz do wnętrza Delegata, dba o ustawienie UIApplication, UIWindow i innych rzeczy iOS dla twojej aplikacji. Po jej rozszerzeniu będziesz zmuszony do implementacji createApplication(). Jest to kopalnia na przykład:
@Override
protected IOSApplication createApplication() {
final IOSApplicationConfiguration config = new IOSApplicationConfiguration();
config.orientationLandscape = false;
config.orientationPortrait = true;
config.useAccelerometer = false;
config.useCompass = false;
iosApplication = new IOSApplication(new SplishGame(this), config);
return iosApplication;
}
Przechowywać iosApplication jako członek pola klasy IOSLauncher. Dzięki niemu możesz uzyskać UIWindow, w którym musisz wyświetlać reklamy pełnoekranowe i Tabele wyników/osiągnięcia.
Po drugie, upewnij się, że klasa IOSLauncher jest nadrzędna. W swojej metodzie didFinishLaunching możesz utworzyć instancję klasy menedżera GPGS (więcej o tym za chwilę) i spróbować zalogować się w trybie cichym.Co przypomina o innym problemie, na który natknąłem się podczas próby integracji GPGS - upewnij się, że używasz obiektu menedżera GPGS, aby ułatwić sobie życie (PlayServicesManager). Są dwie próbki w projekcie wiązania GPGS i początkowo patrzyłem na "trudny w użyciu", który nie używa klasy PlayServicesManager. Po skonfigurowaniu obiektu menedżera można wywołać proste metody, takie jak manager.login() lub manager.getLeaderboards(), aby wykonać to, co trzeba.
Aby zainicjować swoją klasę menedżera w metodzie didFinishLaunching to zrobić:
playManager = new PlayServicesManager();
playManager.setClientId(CLIENT_ID);
playManager.setUserDataToRetrieve(true, false);
playManager.setViewController(iosApplication.getUIViewController());
playManager.didFinishLaunching();
Dla Game Center to tak:
gcManager = new GameCenterManager(iosApplication.getUIWindow(), new GameCenterListener() {...(overridden methods left blank)
gcManager.login();
Następnie kod tworzą swój podstawowy projekt może wywołać niezbędne funkcje poprzez Twój interfejs ActionResolver - lub jakkolwiek nazwałeś swój macierzysty interfejs. Tak więc masz coś takiego:
@Override
public void getLeaderboards() {
log.debug("Showing all leaderboards.");
playManager.showLeaderboardsPicker();
}
I wszystko powinno działać.
Jeszcze jedna rzecz, która widocznie trzeba zrobić (tylko dla GPGS) jest skopiować tę metodę w swojej klasie IOSLauncher:
// copy-paste this to your app delegate.
@Override
public boolean openURL(UIApplication application, NSURL url, String sourceApplication, NSPropertyList annotation) {
return GPPURLHandler.handleURL(url, sourceApplication, annotation);
}
Więc to o tym o ile pamiętam. Proszę pisać, jeśli uważasz, że coś jest nie tak lub zapomniałem coś ważnego.
Jednym ze sposobów, w jaki pokonałem Apple, odrzucając moją grę, która używa GPGS, było automatyczne logowanie. W menu głównym wcisnąłem przycisk, aby użytkownik mógł zainicjować logowanie GPGS, gdyby chciał. Zespół oceny Apple był z tym w porządku. – XdebugX