It is notorious the growth of mobile adverstising in the last years, since mobile devices are more connected to internet. More and more publishers are investing on it, in order to sell their products/services, based on a huge number of potential consumers, which use their devices everyday to read e-mails, news, chat, etc. It is a market of millions of dollars a year.
Who makes possible all this mobile advertising are specialized companies known as Ad Networks. They are responsible for connecting publishers to advertisers. In our scenery, Mobile Ad Networks. Regarding us, developers, those companies provide a variety of means for us to integrate our apps with their ads platform. They provide SDKs for the main mobile platform in the market, e.g., iOS, Android, Flash, WebOS, etc. All you need to do is to sign up in one of those companies, e.g. AdMob, iAd, Quatto, Jumptap, etc, and download the SDK. Most of them are very documented and pretty easy to install.
But I believe you may be wondering: Do they not support Java ME platform? The answer is no. However, just a few of them do. On the other hand, they do not provide a specific SDK for Java ME, just like they do for iOS, Android, Flash, etc. They usualy provide a RESTful API, which your app can access in order to retrieve an ad. Web apps also use this sort of API to work with ads.
Recently, I have been searching for an ad platform in order to provide ads from our app, M-Stocks App. For our iOS and Android versions it was easy to find, but for Java ME, it took awhile. For instance, we tested AdMob, Adfonic, Jumptap but no success. Even their RESTful API did not work for us. We were about to create our own ad platform, when we finally encountered Millennial Media. On their website, they state Java ME support. So I decided to give it a shot.
We sign it up and then started to read the documentation. Actually, they do not provide a Java SDK, in fact they provide a RESTful API, called Server-Side API. This API is very easy to work with. They just require a few paremeters (i.e. UID, IP, User-agent and App ID). By default, they return a HTML code, which contains a ad's image url and link. For instance, if you utilize LWUIT as UI framework, you just need to set this content in a HTML viewer component. Otherwise, you need to implement a workaround.
The workaround is simple. As in the HTML content there are an ad's image url and link, you just need to parse it and get those information. Once you have the ad's image url just download the image using HttpConnection and display it using ImageItem or Canvas. To open the ad's link, do it using MIDlet.platformRequest(String), which will open up the device's browser.
On the other hand, Server-Side API also enables you to receive an ad in XML format, which contain more data about the ad, e.g., image type and size. To enable this, you need to send an e-mail to Millenial Media's support and requesting it for your app. However, I actually tried that, but I got no reponse from them so far. Because of that, I am parsing the HTML.
Other interesting feature by Millenial Media is the ability of integrating with other ad networks. You can set up your AdMob account, for instance, and then receive ads from Millenial and AdMob in your app. Particularly, I am using this approach.
By now, we are going good with Millenial Media. I hope it brings good revenues for us. Mobile advertising is a very good approach for free apps developers. It is a good alternative, since we do have many options to charge for Java ME apps.
See you in the next post...