
Castle Game Engine posiada wiele integracji z usługami dla gier mobilnych. Przy okazji prac nad grą na Androida, wprowadziłem wiele usprawnień do modułu Admob.
Wymagany identyfikator aplikacji
Od wersji 17 Ads SDK, Admob wymaga podania identyfikatora aplikacji (App ID) w AndroidManifest.xml. W przypadku silnika CGE, identyfikator ten podajemy w CastleEngineManifest.xml:
<service name="admob">
<parameter key="app_id" value="..."/>
</service>
Do testów można użyć identyfikatora ca-app-pub-3940256099942544~3347511713. Pamiętaj, że korzystanie z tej usługi wymaga również dodania google_play_services.
Reklamy z nagrodą (rewarded)
Moduł obsługuje teraz reklamy z nagrodą (rewarded). Aby ich użyć wystarczy zainicjować Admoba procedurą TAds.InitializeAdMob z dodatkowym parametrem RewardedUnitId:
procedure TAds.InitializeAdMob(const BannerUnitId, InterstitialUnitId, RewardedUnitId: string; const TestDeviceIds: array of string);
Jeżeli nie chcemy używać jakiejś formy reklam np. interstitial możemy w InitializeAdMob użyć pustego stringa. Do Wyświetlenia reklamy z nagrodą używamy procedury ShowFullScreen z typem atReward:
CGEAds.ShowFullScreenAd(anAdMob, atReward, true);
Dokładniejszy wynik w TAdClosedEvent
Zdarzenie TAdClosedEvent zostało przebudowane, parametr Watched jest teraz typu TAdWatchStatus zamiast Boolean.
Możliwe wartości nowego parametru Watched podaje poniższa tabela:
| TAdWatchStatus | Odpowiednik AdMob errorCode | Opis |
| wsWatched | – | Reklama została wyświetlona i obejrzana |
| wsUnknownError | ERROR_CODE_INTERNAL_ERROR | Błąd wewnętrzny Admob lub nieznany błąd. |
| wsNetworkNotAvailable | ERROR_CODE_NETWORK_ERROR | Brak połączenia z internetem. |
| wsNoAdsAvailable | ERROR_CODE_NO_FILL | Brak reklam do wyświetlenia. |
| wsUserAborted | – | Wyświetlanie reklamy z nagrodą zostało przerwane przez użytkownika |
| wsAdNotReady | – | Reklama wciąż jest ładowana (błąd pojawia się gdy nie chcemy czekać). |
| wsAdNetworkNotInitialized | – | Sieć reklamowa nie jest zainicjowana lub próba wyświetlenia niezainicjowanej reklamy. |
| wsInvalidRequest | ERROR_CODE_INVALID_REQUEST | Invalid Request np. niepoprawny Unit ID. |
| wsApplicationReinitialized | – | Aplikacja Java została zabita, ale kod natywny przetrwał, czekając na zakończenie reklamy. |
Debug
Jeśli chcesz widzieć więcej logu z modułu Admob, zmień wartość ServiceAdMob.debug z false na true. Plik źródłowy usługi znajduje się w: tools/build-tool/data/android/integrated-services/admob/app/src/main/java/net/sourceforge/castleengine/ServiceAdMob.java
Skąd to pobrać?
Zmiany zostały zmergowane i są dostępne w gałęzi master na githubie.
