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.