As mentioned in my previous entry, I have been using Admob for nearly a couple of years now. In recent months though, I have noticed that for some of my apps, there has been a trend of (i) declining CTR (click-through-ratio) and (ii) declining eCPM (earnings-per-thousand-impressions). To illustrate this here are the figures for one of my games, Block Rampage
Admittedly Block Rampage is not one of my most downloaded games and so the figures are not based on a large data set. Also, not all my apps show this pattern. But it does nevertheless illustrate a trend, for which there may be a number of possible explanations:
1. Users are becoming accustomed to ads are less likely to click on them.
2. With an increasing proliferation of apps (and thus more available ad slots), advertisers are paying reduced amounts for their campaigns.
3. Admob becoming less competitive versus other players in the in-app ad market.
I regularly get emails from companies promoting their ad services. Not having the time to investigate, I tend to ignore most of them. That said, I decided it would be worth taking a look at some other ad services for comparison. I was interested in looking at how easy to implement the SDK is, what sort of income (eCPM) could be expected, and any other issues such as payout schedule and minimum payment threshold.
I started off by looking at MobClix, MobFox, and InMobi.
MobClixMobClix provides a mediation service with ads being obtained from multiple ad networks. This is attractive as it would allow testing of numerous ad services without having to implement multiple APIs. So I jumped right in and attempted to implement MobClix, but fairly quickly hit a problem. Although technically simple to implement, the SDK does require the app to have the READ_PHONE_STATE android permission. None of my apps currently use this permission, and I was reluctant to add it just to serve ads. The change of permissions would mean auto-updating of the app would no longer work, as users would be required to manually accept the new permissions. Also, as this permission gives the app access to the phone's IMEI and phone number, many users may be suspicious of why a simple game would need this permission.
The MobClix documentation states:
Required Permissions: android.permission.INTERNET - Used to retrieve ads. android.permission.READ_PHONE_STATE - Used to obtain a unique device identifier.
This justification - needing to obtain a unique identifier - is contradicted by the advice from Google on this page:
Android Developers Blog: Identifying App Installations
I raised this issue with MobClix support, and asked if they could at least make the READ_PHONE_STATE permission optional. However, they have not replied to my query. Therefore, my experiment with MobClix ended there!
MobFox and InMobiI trialled MobFox in one of my games with a fairly low usage rate, Block Rampage. MobFox has a nice feature called "eCPM control", whereby unfilled requests can be passed on to another network. So I made use of this feature to also try out InMobi. This is similar to the setup suggested here by Project Journeyman.
The account creation, setup and implementation in the app was simple enough, so no complaints there. The payment threshhold for MobFox, $50 is pretty reasonable, but the schedule is NET 60 (i.e. 60 days after the end of the accounting period), is twice that of AdMob. After a few weeks, I took a look at the stats I was getting, and this is what I found:
1. The MobFox CTR and eCPM stats were similar to those I was getting from the same game when using Admob. I would describe them as satisfactory but not exciting. Anecdotally, I did happen to notice the same ad seemed to be appearing frequently, which did give me some concerns over the size of MobFox's range of available ads.
2. The InMobi stats were very poor, mainly because of a very poor fill rate, typically 10-15%. The eCPM was actually comparable to MobFox and Admob when the ads actually appeared, but that's not much use when the fill rate is so low. Maybe I would have got better results by using InMobi's SDK directly, rather than via MobFox, but these initial results didn't give me cause for thinking it would be worthwhile trying.