Admob 및 GPGS 또는 다른 바인딩으로 iOS에 LibGDX 게임을 출시하는 것은 힘든 과정이지만, 모든 것이 제대로 작동하고 게임이 현재 검토 상태를 기다리고 있습니다. 이 답변을 할 때 GPGS SDK가 사파리를 이용하여 로그인하기 때문에 애플이 Google Play 게임 서비스를 사용하는 앱을 거부하는 것처럼 보입니다. 이는 "불쌍한 사용자 환경"이기 때문에 Apple 당 허용되지 않습니다. 실제로 사용자가 로그인을 시도하면 GPGS SDK에 로그인하기 위해 Google+ 설치가 검색됩니다. 찾을 수없는 경우 다음은 Chrome 브라우저를 열고 Chrome이 설치되지 않은 경우 Safari가 마지막으로 Safari를 엽니 다. GPGS를 올바르게 통합하고 내 바이너리를 Apple에 제출하려고 시도한 후 Google SDK에 대한 다른 문제에 직면했습니다. 그 이후로 내 애플 리케이션이 GPGS를 버리고 애플의 게임 센터를 대신 사용하기로 결정한이 문제를 해결한다고해도 거부 될 것 같았다. 즉, Admob이 내 테스트 장치에서 작업하면서 GPGS를 얻을 수 있었기 때문에 여기에서 대답 할 수 있습니다.
먼저 BlueRiverInteractive의 샘플은 LibGDX 게임에 유용하지 않습니다. 모든 UIWindow, UIViewController 및 UIView 물건으로 혼란하면 안됩니다. IOSLauncher 클래스는 UIApplicationDelegateAdapter 대신 Delegate를 확장해야합니다. Delegate 내부를 살펴보면 응용 프로그램에 대한 UIApplication, UIWindow 및 기타 iOS 설정을 처리합니다. 확장하면 createApplication()을 구현해야합니다. 예를 들면 다음과 같습니다.
@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;
}
iosApplication을 IOSLauncher 클래스의 필드 멤버로 유지하십시오. 이를 통해 삽입 광고 및 리더 보드/업적을 표시하는 데 필요한 UIWindow를 얻을 수 있습니다. 할
두 번째 것은 당신의 IOSLauncher 클래스는 하나의 매개 변수와 함께 didFinishLaunching (UIApplication 응용 프로그램, UIApplicationLaunchOptions의 launchOptions) 대신 didFinishLaunching 방법을 무시하거나 그렇지 않으면 호출되지 않습니다 있는지 확인합니다. didFinishLaunching 메소드에서 GPGS 관리자 클래스를 인스턴스화하고 (잠시 후에 더 자세히) 로그인 할 수 있습니다.GPGS를 통합하려고 할 때 겪었던 또 다른 문제를 떠올리게합니다. GPGS 매니저 객체를 사용하여보다 쉽게 삶을 살 수 있도록하십시오 (PlayServicesManager). GPGS 바인딩 프로젝트에는 두 개의 샘플이 있으며 처음에는 PlayServicesManager 클래스를 사용하지 않는 '사용하기 힘든'것을보고있었습니다. 관리자 개체를 설정 한 후에는 manager.login() 또는 manager.getLeaderboards()와 같은 간단한 메서드를 호출하여 필요한 작업을 수행 할 수 있습니다. 게임 센터가이처럼
playManager = new PlayServicesManager();
playManager.setClientId(CLIENT_ID);
playManager.setUserDataToRetrieve(true, false);
playManager.setViewController(iosApplication.getUIViewController());
playManager.didFinishLaunching();
:
gcManager = new GameCenterManager(iosApplication.getUIWindow(), new GameCenterListener() {...(overridden methods left blank)
gcManager.login();
그런 다음 코드를 통해 필요한 함수를 호출 할 수 있습니다 핵심 프로젝트를 형성
이가하는 didFinishLaunching 방법에 관리자 클래스를 초기화하려면 ActionResolver 인터페이스 또는 네이티브 인터페이스의 이름을 지정합니다. 그래서 다음과 같은 것들을 가질 수 있습니다 :
@Override
public void getLeaderboards() {
log.debug("Showing all leaderboards.");
playManager.showLeaderboardsPicker();
}
모든 것이 작동합니다. 분명히 당신은 (단지 GPGS을 위해) 할 필요가
한가지 더는 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);
}
은 그래서 지금까지 내가 기억하는대로 관하여이다. 뭔가 잘못되었다고 생각하거나 중요한 것을 잊어 버린 경우 게시하십시오.
GPGS를 사용하는 게임을 거부하는 Apple의 한 가지 방법은 자동으로 로그인하지 않는 것입니다. 원할 경우 사용자가 GPGS 로그인을 시작할 수있는 기본 메뉴에 버튼을 넣습니다. 애플의 리뷰 팀은 그 점에 대해 잘 알고있었습니다. – XdebugX