Oops. I have set up Admob Interstitial wrongly. I have add it in mediation section because I thought it should combine all ads type into one app…
How can i run InterstialAd in landscape? I tried this but don’t work:
<activity android:name="com.google.ads.AdActivity"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
How can i do? Thanks
Admob Interstitials will NOT work as you think they should in landscape mode.
If phone is set to auto-rotate - THEN the admob interstitial WILL SHOW correctly in landscape mode.
But if the phone is set to no-auto-rotate - THEN the admob interstitials will ALWAYS show in portrait mode.
This is something that admob has acknowledged - on the admob forum and elsewhere etc.
So users using your app in landscape mode WILL see the jarring effect of a portrait mode ad if their phone does not have auto-rotate enabled.
This is something we would not tolerate from an ad network (or they would fix it in a day) but of course with admob it is “my way or the highway”.
From their comments - they don’t seem terribly concerned about it either - i.e. not consider it a big issue.
If you find a workaround, please post back.
Thanks.
What is the tag for posting code ? EDIT: added the CODE tag
Some implementation details ..
I was confused by the explanation at:
https://developers.google.com/mobile-ads-sdk/docs/admob/advanced
Since it lumps the allocation of an ad object - and then request-for-ad using that ad object - both together in onCreate().
So it is not clear if one should allocate multiple times or can split those two things.
I can CONFIRM that you can do the allocation ONCE (in onCreate/onDestroy or onResume/onPause whatever):
----------
// ad object
private InterstitialAd interstitial = null;
onCreate():
----------
// Create the interstitial
interstitial = new InterstitialAd(this, MY_INTERSTITIAL_UNIT_ID);
----------
onDestroy():
----------
if (interstitial != null) {
interstitial.stopLoading();
}
interstitial = null;
----------
And then reuse that instance for every new request-for-ad afterwards (if you are wanting to show interstitial ad more than once in your app):
----------
// normally false
// will remain true
// - starting when first initiate a fetch of an ad
// - and will end when the fetched ad is shown
//
// is used to prevent repeated fetches of an ad
private boolean fetchingAdAndNotShownYet_flag = false;
// return true - if a fetch was initiated
// return false
// if are alrady fetching an ad
// if have no ad object
//
// ASSERTION: no harm in calling this method multiple times
private boolean fetchAd() {
if (fetchingAdAndNotShownYet_flag) {
// are already fetching an ad
// do nothing
return false;
}
// fetchingAdAndNotShownYet_flag == false
if (interstitial == null) {
// not allocated ad object yet
// can't do anything
return false;
}
// interstitial != null
// initiate a fetch of a new ad
{
// Create ad request
AdRequest adRequest = new AdRequest();
// Begin loading your interstitial
interstitial.loadAd(adRequest);
// Set Ad Listener to use the callbacks below
// can skip this also if are only wanting to use isReady()
// for listener:
// https://developers.google.com/mobile-ads-sdk/docs/admob/intermediate#android
//interstitial.setAdListener(activity);
}
// have queued a fetch of an ad
fetchingAdAndNotShownYet_flag = true;
return true;
}
----------
Then do the actual show of ad using:
----------
// return true - if displayed an ad
// return false
// if have no ad object
// if have no ad fetched available for display (not queued ad fetch or a queued ad is still being fetched)
private boolean showAd(boolean initiateFetchAdIfNeeded_flag) {
if (interstitial == null) {
// ad object not been allocated yet
// obviously cannot display an ad in such a situation
// do nothing
return false;
}
// interstitial != null
if (!interstitial.isReady()) {
// ad is not ready
// obviously will not be able to show ad right now ..
// if want to automatically fetch ads
if (initiateFetchAdIfNeeded_flag) {
// check if is need to queue the fetch of an ad ..
if (fetchingAdAndNotShownYet_flag) {
// still fetching
// so no need to try another fetch ..
} else {
// were not fetching - maybe should fetch
//----------
fetchAd();
//----------
}
}
// do nothing else
return false;
}
// interstitial.isReady() == true
// i.e. ad is ready - have an ad to show
//----------
interstitial.show();
// have just shown an ad
// so no longer fetching
// and no longer waiting for a fetched ad to be shown
fetchingAdAndNotShownYet_flag = false;
//----------
// did setup an ad to be displayed
return true;
}
----------
Would be interested in knowing others’ view on:
-
how the Description (see above post) affects admob targeting - just put in app description or a tailored list of keywords ? It would seem a description that best describes the audience viewing the ads would get the ads which would give higher user-inclination-to-click i.e. CTR (though wouldn’t say anything about the payment per ad).
-
the fill rate they are getting (still close to 100% just like Admob banner ads ?)
-
eCPM (can then compare this to Leadbolt HTML AppWall etc.)
I have been confused about how Admob deals with ads - i.e. the com.google.ads.AdView is the view used to show banner ads. That much is clear. A publication ID is specified in the XML for this (or programmatically. The activity in AndroidManifest.xml probably is the one used to show the Admob Interstitial. However admob documentation talks about both in the same way - including using similar publication ID (i.e. a new Site/App you create on Admob Developer Console does NOT identify whether it is a banner or interstitial ad). Also the admob docs (when they talk of Admob Interstitial mediation) talk about using mediation in the same way as for admob banner ads.
The links to mediation for banner ads and for Interstitials:
https://developers.google.com/mobile-ads-sdk/training/mediation/custom-events/banners
Banners
https://developers.google.com/mobile-ads-sdk/training/mediation/custom-events/interstitials
Interstitials
The question now arises is:
-
can we now use Admob eCPM floor beta, Admob ads as the sources for a new mediation (using the mediation ID as the APP ID in your code) - what happens if we add a banner ad source like millennial media as one of the sources for this mediation ?
-
how does Google Admob make it all seamless - is it that Admob DOES NOT CARE what format an ad is shown as ? - i.e there could be interstitial-specific ads - but it COULD BE that Admob SEAMLESSLY converts ANY banner ad to an interstitial form. Since Admob is responsible to the advertisers for driving traffic to them - THEY won’t care how it happens - so Admob may be able to translate ANY banner ad format to an interstitial (the ads I saw in my location were the same ads I see for banner - except expanded into interstitial form - it was a “Download this app” type of ad - except now in addition to the banner ad image, there were screenshots below that for the app - perhaps automatically generated by Google/Admob from the Google Play listing). If THIS is how Google is doing - it is NO WONDER that they are now able to offer Admob Interstitials to ALL developers - with perhaps the SAME type of 100% fill rate we have come to expect of Admob banner ads. That is, Google now may not need a separate “interstitial” advertiser source - but can DYNAMICALLY alter any banner ad to an interstitial format - and thus provide 100% fill rate for “interstitial” ads. I have not see any other types of “truly interstitial” ads in my location - but others perhaps can identify the types of ads they are seeing.
-
what types of ads are you seeing - are they all mostly banner ads converted to interstitials (dynamically) - or do you see some very interstitial-specific ads - are there any video ads in there also - or some dynamic/changing ads (javascript or HTML5 powered ones)
EDIT: I can now confirm that you can use Admob eCPM floor beta plus Admob Network - and show them mediated in your Admob Interstitial. That is, just like banner ads - setup is similar (i.e. create a new Site/App for Admob eCPM floor beta and can reuse the Admob Network you used for Admob Interstitials - or create that if you haven’t already - should be new i.e. not the same as banner ad one). Then create an Admob mediation - and link that to the two Site/Apps. Then use the mediation code as the “publisher ID” (APP_ID).
EDIT: I have a feeling that a feeling that developers may have that “Admob Interstitials” may run out of ads or not have sufficient ad inventory for all the developers who use it - maybe wrong. Because at least for the “Download this app” type of Admob BANNER ADS - it seems that Admob could just seamlessly convert that to an “Admob Interstitial” where it shows the same info as the banner ad - plus the screenshots taken from the advertised app’s Google Play page and make it into a “full screen interstitial” - this innovation may itself ENSURE that there will no longer be any ad inventory issue with Admob Interstitials - and the fill rate could also be 100% or so - i.e. same as banner ads. Because the advertiser may not care HOW the ad is presented - so long as user likes their product and clicks through.
Use the [ CODE ] tag. See this thread: Posting Code - Android Development - Making Money with Android.
I’ve been using interstitials for about a month now. When I started, fill rate was around 50%, and today it is 80-90%.
As my revenue/click stats are totally screwed up by “unknown location” glitch (yes, interstitials also), I can only be guessing about revenue/eCPM.
Are the ads mostly the same as the ones you see for banner ads (esp. for the “Download this app” type of ads) ?
My impression is that there MAY NOT be an issue with fill rate with Admob Interstitials IF admob has added capabiity to automatically translate all their banner ad inventory to interstitials (esp. the “Download this app” type of banner ads).
If so, that would ensure that Admob Interstitials have the same (or close to) fill rate as banner ads - which are pretty good.
I can’t tell, I am strictly using test mode for admob ads, when running my apps.
Hmm … I am using regular mode with testing - however, I try not to click on the ads - to avoid getting labelled as click-fraud etc.
How is the test mode accomplished - via some change in code, or using a test publisher ID ?
Via change in code. You need to add your device id and test-emulator id to your AdRequest object.
In my code, I have:
AdRequest request = new AdRequest();
if (KKConfig.isAdModeTest()) {
request.addTestDevice(AdRequest.TEST_EMULATOR);
request.addTestDevice(KKConfig.ADMOB_MY_TESTDEVICE_ID);
}
adViewAdMob.loadAd(request);
You will have to scan logcat to find your device id.
See: https://developers.google.com/mobile-ads-sdk/docs/admob/additional-controls#android-test
I made an ad-mob campaign recently on the new ad-mob site. I made a text/icon banner ad, and it showed what the ad would look like in various sizes, including rectangle 300x250. Is this an rectangle 300x250 an interstitial ad or is it a smart banner or something for tablets? Another neat thing with the new admob advertising campaigns is that is shows you conversions now (If your advertising an app).
300x250 seems to be normal banner, available only on tablets. See banner sizes: AdMob | Google for Developers.
I was actually looking for some way to do a campaign for interstitial ads when I made that last ad campaign. Does anyone know how to do an interstitial campaign? Or is it invite only or something?
I’m getting strangely high eCPM - $9, mostly from Spain with CTR 10%. It’s a little worrying, but since there is only 500 requests I suppose it will settle on a smaller value later?
If you show it very rarely (like once per session), then the value is not much off.
One would guess that a House Ads campaign would be similar to setup on interstitials as for banners - i.e. you setup a mediation - then point that to your Admob Regular, Admob eCPM floor beta or any other sites - one of which would be the House Ads one … in which case when it asks for size of banner it should have an entry for “Interstitial” … (?)
Here’s my results from first days of using interstials (app is over one month old):
Date Requests Impressions Fill rate (%) Clicks Impression CTR (%) Request RPM (PLN) Impression RPM (PLN) Estimated earnings (PLN)
2013-08-28 380 362 95.26% 10 2.76% 4.93 5.18 1.87
2013-08-29 776 757 97.55% 9 1.19% 2.8 2.87 2.17
2013-08-30 929 885 95.26% 15 1.69% 1.52 1.59 1.41
2013-08-31 999 968 96.90% 11 1.14% 5.49 5.66 5.48
2013-09-01 1056 1011 95.74% 12 1.19% 1.63 1.7 1.72
Divide by 3 to get dollars.
I’m using banners too in this game. Interstial are shown during exiting to main menu (from level select screen).
My RPM dropped to about $6. I have no banners right now, only interstitials.
Still very high compared to mine. My interstials are vertical, maybe horizontal are better?
Or maybe ppl click accidentialy in your interstials?
I have back button in top left corner - ppl need to click there or use phone back putton to trigger interstial show. So even if someone clicks twice at top left corner (because maybe there is lag in showing interstial on slow phones?) he will close it (closing button is in same corner) instead of clicking it.
Edit:
I’ve just checked - there is huge difference between horizontal and vertical interstials !! At least on my phone.
For google play intertstials, in horizontal interstial close button is over icon, so it may be easy to click icon incendintially instead of closing interstial.
On vertical interstial, close button is over icon with huge margin. So it’s much safer.