Developer Sadettin Polat wrote in with a link to a demo he wrote which implements AdMob interstitials in Delphi XE5 Firemonkey. The demo is a good demonstration of using the Delphi Android JNI. In previous demos of using Admob with Delphi I’ve only seen banner ads demonstrated. One caveat is that Google Play may no longer be accepting applications with the original Admob SDK in them as of August 1st 2014. Google has a new Admob SDK which is part of the Google Play Services SDK. However, even if you can no longer use the SDK from this demo on Google Play it does give you a great starting point for converting it forward to the new Google Play Services Admob SDK. Google has a migration guide here that shows the differences between the two SDKs. Similar Android JNI code should work in Delphi XE6 and AppMethod. Here is a sample of the type section from the Admob interstitial demo:
type
TInterstitialAdListener = class(TJavaLocal, JAdListener)
public
FParent:TForm;
//Â Â Â constructor Create(aParent:TForm);
procedure onReceiveAd(ad: JAd); cdecl;
procedure onFailedToReceiveAd(ad: JAd; error: JAdRequest_ErrorCode); cdecl;
procedure onPresentScreen(ad: JAd); cdecl;
procedure onDismissScreen(ad: JAd); cdecl;
procedure onLeaveApplication(ad: JAd); cdecl;
end;
Head over and check out the full source code for the Admob SDK interstitial demo on Github before downloading it.
I can preview an Admosb type ad if it does not click on a button but I can not in the OnCloseQuery event.
I debugged the app a lot and I came to the conclusion that the commands are called and executed by both the button and the FormCloseQuery, but in the latter case it does not show the Interstitial ad and by the button it is shown. The commands are:
procedure.
var
  LADRequestBuilder: JAdRequest_Builder;
  LadRequest: JAdRequest;
begin
  LADRequestBuilder: = TJAdRequest_Builder.Create;
  LADRequestBuilder.addTestDevice (MainActivity.getDeviceID);
  LadRequest: = LADRequestBuilder.build ();
  LAdViewListener: = TMyAdViewListener.Create (FInterStitial);
  CallInUIThread (
    procedure
    begin
      FInterStitial.setAdListener (TJAdListenerAdapter.JavaClass.init
        (LAdViewListener));
      FInterStitial.loadAd (LadRequest);
    end);
end;
Is there any restriction on using these commands in FormCloseQuery, that is, in the output of the app?