Showing posts tagged with Mobile Ads

The Amazon Mobile Ads API lets you place high-quality display ads from the Amazon Mobile Ad Network in your app, helping you better monetize your apps and gain access to highly relevant ads from brand advertisers, including Amazon and its subsidiaries. Starting today, both Interstitial and Banner ads can now be displayed across iOS devices in addition to Android and Fire OS devices. Beginning on July 25, 2014, ads can also be displayed on the Fire phone. As a developer, you can now monetize your apps with the Amazon Mobile Ads API across iTunes, Google Play, and the Amazon Appstore while taking advantage of multiple targeting features.

With this release, we are also expanding ad serving to users in Spain and Italy across Android and iOS. Starting today, the Amazon Mobile Ad Network is serving ads to Android and iOS users in the US, the UK, Germany, France, Spain and Italy.

Getting Started with the Amazon Mobile Ads API

If you are already using the Amazon Mobile Ads API in your Android apps today you can skip to the Integrating with Your iOS Apps section below. Otherwise, to get started with the Amazon Mobile Ads API, follow these quick steps:

**If you are performing services for the Amazon Mobile Ad Network outside of the US, please complete the Amazon Services Statement so we report your tax obligations accurately, and do not unnecessarily withhold taxes we are required to collect from developers who perform services in the US.

Integrating with Your iOS Apps

The Amazon Mobile Ads API for iOS requires iOS 6.0 or later and assumes you have Xcode 5.1.1 installed. After completing the Getting Started steps above, you can integrate iOS support in three steps.

1. Reference the AmazonAd.framework in your existing XCode Project

2. Set up your provided Application Key by calling into the AmazonAdRegistration setAppKey class method. You must set your app’s Application Key in order to receive ads. This allows Amazon to track your impressions and clicks, and associate them with your account. Here is an example of calling setAppKey:

3. Load an ad Using AmazonAdView. You can also set a number of optional parameters, including whether this is a test request. Test requests always return an ad and don’t count as part of your metrics. Here is an example of a loadAd call:

Note - During integration and testing of the Amazon Mobile Ads API, you should set the testRequest option to true. This indicates that the request is for testing. Here is an example:

Test requests will not show up in your metrics. Test traffic that doesn’t include this flag could result in blocked requests, fraud investigation, and potential account termination.

Ad Size and Targeting Options for iOS

The Amazon Mobile Ad Network supports Interstitial Ads as well as banner ad sizes of 300x50, 320x50, and 300x250 for phones and 300x250, 728x90, and 1024x50 for tablets. Your app should request a device-appropriate size. Please see the following chart for recommended sizes by device:

For additional information on Ad Sizes in iOS, click here. For more information on Interstitial ads click here.

Just like Android and Fire OS, there are a number of targeting options you can include in the requests you send to the Amazon Mobile Ad Network. In addition to ad unit size above, you can specify geolocation (US only), age and gender. For more information on ad targeting in iOS, check out our guide here.

Increased Reach & Monetization Opportunities

The Amazon Mobile Ad Network allows you to participate in highly targeted campaigns with premium advertisers. The Amazon Mobile Ads API can serve both banner and interstitial ads across Amazon Appstore, iTunes and Google Play. For a limited time, when you send the first ad request from a qualified app, you will receive a guaranteed $6 CPM on interstitial ads (up to a maximum of 1 million impressions per app per month). Qualifying apps now include iOS apps. Please find more details here. The opportunities to monetize your apps have never been better!

The Amazon Mobile Ad Network is growing in Europe, adding two more countries soon after announcing its expansion to the UK with ad content now being delivered in Germany and France. In addition, the Amazon Mobile Ads API has been updated to support the Android advertising ID introduced in Google Play Services version 4.0.

New Monetization Opportunities

You can use mobile ads to monetize your apps and games in more ways, now that the Amazon Mobile Ad Network is available in Germany and France. Including those from the UK, Amazon fills ad requests from Europe’s top three advertising countries, as well as the US. A strong eCPM and high-quality ads characterize the Amazon Mobile Ad Network, and these carry over to all supported countries. Amazon sets a high bar for banners, rich media, and interstitials, generally leading to better conversion and higher revenue.

Android Advertising ID by Google

Google recently announced the creation of a new Android advertising ID. Under Google’s updated ad policy, beginning August 1st, all updates and new apps uploaded to the Google Play Store must use this ID for advertising purposes (when available on a device) in lieu of other device identifiers. The Amazon Mobile Ads API provides support for the Android advertising ID, so incorporating it into new projects or transitioning existing apps is straightforward.

Changes to VAT Invoices and Contact Address

Note that effective July 1st, the rights and obligations of our European affiliate, Amazon E.U. S.à.r.l., under the Amazon Mobile Ad Network Publisher Agreement were assigned to a different European affiliate of ours, Amazon Europe Core S.à.r.l. Please ensure that future communications regarding the Amazon Mobile Ad Network are addressed to the following address, and that any VAT invoices relating to the Amazon Mobile Ad Network reflect the proper VAT registration number for Amazon Europe Core S.à.r.l., as noted below:

Please also make sure you amend EC Sales Lists if you file these. We updated the Publisher Agreement to reflect the change above, effective immediately. For a summary of what’s different, refer to Changes to Mobile Ad Network Publisher Agreement.

Next Steps

To take advantage of this new international expansion and support for Google’s Android advertising ID, you must integrate Amazon Mobile Ads API version 5.4.46 or above into your mobile app or game.

If you are currently using an older version of the Amazon Mobile Ads API, simply recompile with the latest version (5.4.46 or above).

If your app or game already uses version 5.4.46 or above of the Amazon Mobile Ads API, you are all set. Ad requests you send will automatically be filled for the US, UK, Germany, or France, as appropriate.

Since Google has specific terms of use and timing requirements around the Android advertising ID, we encourage you to upgrade to Amazon Mobile Ads API version 5.4.46 before Google’s August 1st deadline.

The Amazon Mobile Ad Network is offering a new incentive for developers to join. Available now, when you send the first ad request from a qualified app* and distribute your app on Fire phone, you will receive a guaranteed $6 CPM on interstitial ads in August and September (up to a maximum of 1 million impressions per app per month). Interstitial impressions served across all supported devices (Android phones and tablets, Kindle Fire tablets, and Fire phones), supported markets (U.S. and U.K. users), and supported stores (Amazon Appstore and other Android stores) qualify for the offer.

Interstitial Ads are full screen ads that use the entire screen of the device. They typically appear in app transitions such as in between game stages. Interstitial ads from the Amazon Mobile Ad Network are high quality when viewed by any phone including the new Fire phone.

How To Qualify

Integrate interstitial ads using the latest Amazon Mobile Ads API into your new app and send the first ad request between June 18th and September 30th, 2014.

The Amazon Mobile Ad Network has helped many developers monetize their app including Jason Stock from Firecracker Software, who shared: “The biggest contribution Amazon provided us in monetizing our apps was through superior eCPM in their Mobile Ads SDK, which performed 215% more than other Ad Networks, and a 77% fill rate in our Word Breaker app. Because of Amazon Mobile Ads, we were able to quit our day job."

Gordon Edwards, the creator behind the Scanner Radio app, started serving banner ads in 2010 and was working with several ad networks by 2013. The app provides live audio from over 3000 police, fire scanners, weather radios, as well as amateur radios. The app has over 800 reviews on the Amazon Appstore. Recently we had the privilege to sit down with Gordon to discuss how his app was performing and how he leveraged Amazon’s Mobile Ads API to generate revenue.

Figure 1- Banner Ad

$1.00 eCPM from Amazon Banner Ads

Generating revenue has always been a challenge for developers. With Gordon’s background in ads, integrating ads into his app seemed an obvious solution. But the primary reason why Gordon went with Amazon was that he thought the “quality of ads served would be better than those from other ad networks”. In short time, Gordon saw an earnings lift of 39% and it only took him less than a day to integrate.

“I see very consistent and high eCPMs from Amazon, as well as very high quality ads” says Edwards. The eCPM from Amazon was consistently around $1.00 which meant he didn’t have to monitor the earnings closely. This allowed him to focus on developing the app and creating a better experience for his users. He was pleasantly surprised to see the strong eCPM continue in Q1 when earnings dipped on other ad networks. His users were also happy to see the high quality ads from Amazon in their favorite app.

43% Earnings Lift from Interstitial Ads

Something that Gordon was not familiar with however, was interstitial ads. Gordon mentions that “I've never displayed interstitial ads in his app until now, but decided to display them from Amazon since he knew the ad quality would be high”. Gordon created a new interstitial ad slot when Amazon reached out about testing the ad format. Since then, his earnings increased another 43% from the additional ad slot. Gordon mentioned that he has since tried interstitial ads from other ad networks when Amazon ads were unavailable, but none provided the quality he was looking for. Now, he is working solely with Amazon.

Figure 2- Interstitial Ad

Try Amazon Ads!

Gordon encourages developers to try the Amazon Mobile Ads API. “Definitely try the Amazon Mobile Ad Network if you’re looking for a high paying and high quality ad solution.”

Steve Boymel from Farlex is the creator of the Dictionary app “Dictionary.” Based out of Pennsylvania, the app already has over 1,300 reviews on the Amazon Appstore. The app delivers a comprehensive dictionary that is available in over 14 different languages including English, Spanish, and French.

Testing Mobile Ads on Amazon Appstore

One of Steve’s challenges after creating the app “Dictionary”, was to generate revenue. “After looking at the existing landscape, I felt that Amazon had a great offering,” says Steve, which is why he decided to test the Amazon Mobile Ads API in his Amazon Appstore app. This was Steve’s first time integrating the Mobile Ads API into any of his apps, but he had confidence that the Amazon Mobile Ad Network would monetize well. In the first few weeks Steve saw a $0.70 eCPM, which was much higher than he expected.

Figure 1Example of Ads

Success Brings Expansion into Google Play

With the success that the Amazon Mobile Ads API brought to Steve’s app in the Amazon Appstore, he decided to bring it to Google Play as well since he satisfied the Amazon Appstore distribution requirement.

Integrating the Amazon Mobile Ads API into his Google Play apps was easy. He has one code base for all Android apps so it was just a matter of re-packaging his Google Play binary.

Steve says “the time was well spent since his earnings from his Google Play apps are just as strong as his Amazon Appstore apps.” After a few optimizations, his eCPM increased to $1.20 for his Google Play apps and $1.75 from Amazon Appstore apps.

$1.36 eCPM for UK Banner Ads

When we called Steve with an opportunity to monetize his UK traffic as a beta tester, Steve jumped at the opportunity. After all, he was not serving any ads to his UK users so any earning would be incremental. All he had to do was swap out his Amazon Mobile Ads API jar file. So how did the banner ads perform?

Ad revenue is all about a balance between generating the most impressions and earning the highest eCPM. The more impressions you’re able to generate at a higher eCPM, the better your return on your investment.

Recently, we announced support for full screen interstitial ads on the Amazon Mobile Ads Network for both Kindle Fire devices and other Android devices. Developers are integrating interstitial ads because they generate more revenue than other ad types according to the report from AppFlood. According to a recent interview with the creator of Scanner Radio, he increased his ad revenue by 43%, just by adding Amazon interstitial ads to his app (your results may vary). In terms of getting higher eCPM, we also heard developers telling us they get high eCPM when they put Amazon Mobile Ads at the first slot for their ad requests.

Amazon interstitial ads give you not only the opportunities to increase your ad revenue, but also help you to optimize the user experience with well designed high quality ads that work well within your application experience.

In this blog, we’ll show you how to add interstitial ads into your own apps and games with a few simple steps.

Setting up your environment

If you’ve already used the Amazon Mobile Ads API in your apps before, you can skip this step and jump right into the Implementing interstitial ads step.

To start with, download the Amazon Mobile Ads API from here, and import the amazon-ads-5.3.22.jar file from [Your Download folder]/Apps-SDK/Android/Ads/lib into your project.

If you are using the Eclipse IDE, you can add the jar file by selecting the Build Path dialog from the project properties, and select the Add External JARs from the Libraries tab.

If you are using the Android Studio, you just need to copy the jar file into your project library folder, e.g. SampleProject/libs/. After you copied the jar file, from the Android Studio, right click the jar file, and select Add as library from the menu. For the Android Studio, you will need to update the Gradle script to include the jar in your build as well. To do that, add following line to the dependences section in your build.gradle file.

compile files('libs/amazon-ads-5.3.22.jar')

Now that you have the necessary jar file for your project, you’ll need to add the AdActivity and give certain permissions in your manifest file to use the Amazon Mobile Ads API. For more details, you can refer to the Quick Start Guide for help.

Implementing interstitial ads

The first thing you’ll need to do is to obtain an Application Key. This allows Amazon to track your impressions and clicks and associate them with your developer account so that you can review your ads’ performance from the reporting tool. If you do not already have an Application Key for this app, you must obtain one by visiting https://developer.amazon.com/ads and following the steps in the Getting Started section. Once this is done, you can use the following code to register your Application Key:

Next you need to think about when would be the best time to display your interstitial ads. Many apps show interstitial ads when a user quits the game or when the user is between levels in a game. Apps can also display interstitial ads when the game is paused. In this example, we are using two buttons to indicate when to load a new ad, and when the ad is ready to show.

You noticed we set an ad listener for the interstitialAd instance called SampleAdListener. This is the listener class you have to create to get notified when an interstitial ad loaded, failed to load or was dismissed.

Here is the code to implement the SampleAdListener class:

class SampleAdListener extends DefaultAdListener
{
/**
* This event is called once an ad loads successfully.
*/
@Override
public void onAdLoaded(final Ad ad, final AdProperties adProperties) {
Log.i(LOG_TAG, adProperties.getAdType().toString() + " ad loaded successfully.");
// Once an interstitial ad has been loaded, it can then be shown.
LoadNextLevel.this.showButton.setEnabled(true);
}
/**
* This event is called if an ad fails to load.
*/
@Override
public void onAdFailedToLoad(final Ad view, final AdError error) {
Log.w(LOG_TAG, "Ad failed to load. Code: " + error.getCode() + ", Message: " + error.getMessage());
// A new load action may be attempted once the previous one has returned a failure callback.
LoadNextLevel.this.loadButton.setEnabled(true);
}
/**
* This event is called when an interstitial ad has been dismissed by the user.
*/
@Override
public void onAdDismissed(final Ad ad) {
Log.i(LOG_TAG, "Ad has been dismissed by the user.");
// Once the shown ad is dismissed, its lifecycle is complete and a new ad can be loaded.
LoadNextLevel.this.loadButton.setEnabled(true);
}
}

Our SampleAdListener class extends the DefaultAdListener interface, which is the listener also used by banner ads. It’s recommended to extend the DefaultAdListener instead of implementing AdListener to safeguard against having to update your code if any additional APIs are added to AdListener in the future.

We override three callbacks from the DefaultAdListener interface: onAdLoaded(), onAdFailedToLoad() and onAdDismissed(). Let’s look at each of the callbacks in more detail.

onAdLoaded() is immediately called each time an ad is successfully loaded. But you don’t have to display the ad right after it’s loaded. You can choose to display the ad in a transition point as we mentioned above. In our example, we enable the “Show Ad” button to indicate the ad is ready to show. In your games or apps, you can also use a flag (e.g. set isAdReadyToShow = true) to indicate the ad is ready to show. When you want to show the interstitial ad, you can check the flag to tell whether the ad is ready. Loading the ad ahead of time and then waiting to show it until arriving at the app’s transition point, will result in the best customer experience because the ad will appear on the screen much faster.

onAdFailedToLoad() is called whenever the retrieval of an ad fails. From this callback, you can tell why your ad failed to load. An ad can fail to load for many reasons. We categorize them into two groups: transient and non-transient errors. A transient error could be, for example, caused by a poor network connection or an ad server internal error. If transient errors occur, you can retry the loadAd() call when the network becomes available or after a thirty-second timeout. A non-transient error could be, for example, that there is something wrong with your ad request. It’s recommended to investigate non-transient errors before you retry the loadAd() call. In our sample, we enable the “Load Ad” button when the ad fails to load, so that you can reload a new ad. Similar logic you could try in your app is to set the flag (e.g. set isAdReadyToShow = false) to false to indicate the ad is not ready to display, and retry the loadAd()call at the next transition point.

onAdDismissed() is called when customers click the close button of the interstitial ad. It’s important to remember only one interstitial ad can be shown at a time. The previous ad has to be dismissed before a new ad can be shown. In our example, you re-enable the “Load Ad” button after the ad is dismissed in order to load a new ad.

Testing your ads

Testing your interstitial ads is simple. You enable the testing mode by calling the following line of code in your app:

AdRegistration.enableTesting(true);

During your integration, the server will block your ad requests if you forget to flag requests as tests. You will get error messages, such as NO_FILL or INTERNAL_ERROR from the server. But be sure to set it back to

AdRegistration.enableTesting(false)

before you publish your app in the store.

After updating your code to render ads, you will see the nicely designed full screen interstitial ads shown as the examples below:

To learn more about the Amazon Mobile Ads API, visit here. Some resources to check out are:

In the realm of classic puzzle games for mobile apps, Bitmango is no newcomer to this genre. The South Korean company launched in 2011 and has a focus on casual mobile games that challenge the way people think. Games such as Draw Line Classic and Draw Line Bridge, (downloadable here) are available on the Amazon Appstore.

We recently chatted with Yewoon Seo who is the publishing team lead for Bitmango. Yewoon took us in depth on how Bitmango is performing on the Amazon Appstore, the team’s experience on getting their app onto the platform, and some things that surprised their team about our services.

“The decision to get our app onto Amazon was obvious”- Yewoon Seo

Expanding and reaching more customers has always been one of Bitmango’s priorities, which is why Bitmango decided to look into the Amazon Appstore. “I noticed that the Amazon Appstore platform was similar to Android so I immediately knew there was a huge potential here,” says Yewoon. The team initially built their apps on Google Play, so the team worked on moving their apps over onto Amazon Appstore. So how hard was it to transition their game over? The team was pretty surprised at the little amount of work needed to complete the task.

“There’s not much effort at all to port our app from Google Play to the Amazon Appstore. It took us approximately one to two hours per app, by just tweaking the API. For our app the certification process was only a day, which was something we have never seen before in any other store. ”- Yewoon Seo

The team has already received tens of thousands of downloads, which has given them the kind of expansion they were looking for.

ARPU that was worth the investment

“Results were great,” according to Yewoon. Their main app “Draw the Line: Classic” has performed really well in the Amazon Appstore in the US in terms of average revenue per user (ARPU).

But their app success didn’t stop there. When “Draw the Line: Classic” was compared to other app stores in terms of all the countries where the game was available, the app consistently outperformed others in terms of average revenue per user.

“Since the platforms between Google and Amazon are so similar there was not much effort needed to move our app over,” says Yewoon. In terms of effort needed to achieve these results, the team was very satisfied with the results.

From customer centric to developer centric

“The amount of detailed feedback that the Amazon reviewers provided during the submission process was a huge surprise to us and something we’ve never seen before. These are things that really saved us time and something we really appreciated,” says Yewoon. Yewoon mentions that they appreciated that the Amazon team provides help for their developers in a variety of ways to answers their questions. “Sites such as the Amazon Apps and Services Developer Portal really helped us when we needed help on specific topics or issues,” says Yewoon. The Amazon Apps and Services Blog is always updated with the latest announcements, updates, and also provides detailed tutorials.

The Amazon Mobile Ads API now offers more ways to help you monetize your mobile apps and games. Starting today, we will display ads to customers in the United Kingdom, and in the coming months, we will add support for Germany. On top of that, we are launching full screen interstitial ads across the Mobile Ad Network.

Enabling Europe Ad Support in Your Apps

Our expansion into Europe gives developers the opportunity to earn more money from advertising spending in Europe’s top two advertising market segments. The strong eCPM and high quality ads from Amazon will carry over to all supported market segements.

Announcing Interstitial Ad Format Support for All Supported Market Segments

Figure 1- The same Amazon Interstitial Ad in Portrait on Phone and Landscape on a Tablet

We use responsive design when showing interstitial ads to ensure your user experience is not affected. Ads will automatically adjust to the screen size of the device on which your customers are running your app.

We know that every millisecond counts when it comes to the responsiveness of your apps. We preload interstitial ads to minimize the impact on app latency. As the developer, you decide when you want the ad to display (for example, once your user has reached a new level of your game).

Interstitial ads can be integrated in as little as an hour and offer revenue tracking through the same Amazon developer portal as banner ads. As with banner ads, you can distribute an app that incorporates the Amazon Mobile Ads API through other Android stores as long you distribute it through Amazon.

Integrating Interstitial Ads in Your Apps

To display interstitial ads on your app, integrate the latest version of the Amazon Mobile Ads API. To display ads in Europe, you may not need to do any additional work. Interstitial ads will then automatically be loaded when the app is first run. You should display them at a transition point in your app (for example, game level transition). The user will always have the option to close the ad.

Let’s take a look at an interstitial ad using the sample app from the unzipped Amazon Mobile Ad API folder located in /Android/Ads/samples/InterstitialAdSample. Running the sample app for the first time you will see a button to show an ad and another button to load a new ad.

Figure 2- Interstitial ad sample app from Amazon Mobile App SDK

Clicking on the Load Ad button will preload a new interstitial ad to cache and then when you click on the Show Ad button it will be displayed.

Users have the option to close the ad by tapping on the X in the top right. Users can get more information by tapping on the “See more” button. If users tap for more information they will see a new browser window open with the url provided by the ad.

Notice that the ad automatically resizes and fits to the portrait sized screen if you rotate the device.

Just as you would do for banner ads, you use the Amazon Mobile Ads API to set up interstitial ads. You will need to first register for a free Amazon developer account. Once you do, you will receive an app id that you can use to begin coding. During this time you should set up a tax identity inside the developer console. This way you can continue to code and test your app while the verification process is happening. Once inside your Android development environment, you will need to reference the Amazon Mobile Ads jar file from the SDK and update permissions in your Android app manifest. For a full walkthrough of this process check out the Amazon Mobile Ads API quickstart guide here.

You get the same customization capabilities for interstitial ads as you do for banner ads. This includes setting target values when you are requesting an ad for age, gender, relocation or minimum CPM floor price. For a full list of targeting options check out the developer portal here.

Once you have completed these steps you can start to request ads. Your app will retrieve and display an interstitial ad using an instance of InterstitialAd. To load an ad, call the InterstitialAd.loadAd method, which uses an asynchronous task to request an ad from the Amazon Mobile Ad Network. It is important to note that only one ad can be loaded by a given InterstitialAd object at a given time, and only one interstitial ad can be displayed in your app at a given time.

InterstitialAd.loadAd will return false if a request for a new ad is ignored because of another pending ad request. To check if there is an ad loading, you can call the method InterstitialAd.isLoading. To check if there is an ad showing, you can call the method InterstitialAd.isShowing.

Below is an example of a simplified InterstitialAd.loadAd call placed in the onCreate function of an Activity that loads the next level in a game. The interstitial ad is displayed as soon as it is ready, and the next level is started after the user has dismissed the ad.

Conclusion

The Amazon Mobile Ad Network now offers more ways to help you monetize your mobile apps and games. Interstitial ads provide advertisers with a unique opportunity to engage with your audience in a meaningful way, leading to superior monetization. Adding support for interstitial ads in your apps is simple, and most developers are able to integrate them within an hour. Similarly, showing ads to EU users will allow you to earn more money from your apps with minimal work. Apps using earlier versions of the API need only recompile with the new Amazon Mobile Ads API jar file in their app to see EU ads: no coding changes are required. Apps using later versions of the API require no changes at all.

Since March 1st, we have been guaranteeing developers with qualifying apps a $1.50 banner CPM for serving mobile ads through the Amazon Mobile Ad Network. We’ve already seen thousands of developers participate in the promotion and you can too. The $1.50 CPM promotion is ending on April 30th.

Integrating the Amazon Mobile Ads API is straightforward. According to YouMail, it took 2 days while working in parallel on other features.

Alex Quilci from YouMail, Inc says:

‘The $1.50 CPM promotion is a 3x bump in eCPM by itself and we’re seeing much higher quality ads. We also expect the strong earnings to continue when the promotion ends.”

Damien Gardner from DamoWare says:

‘The 1.50 CPM is a great risk-free way to try the Amazon Mobile Ad Network. We’ve discovered a high quality ad network as a result.”

In order to qualify for this promotion, you will need to integrate the Amazon Mobile Ads API in your qualified apps* and send the first ad request to us by April 30th, 2014. Here are the steps:

3. Earn $1.50 for every 1,000 qualifying impressions displayed on the app during April 2014 (up to 2 million impressions per app).

* Existing apps already sending ad requests do not qualify. Existing developers who integrate the Amazon Mobile Ads API into another app for the first time will qualify. Qualifying apps may be distributed through other Android stores as long as they are distributed through Amazon.

In addition to this promotion, using the Amazon Mobile Ads API in your app brings you a step closer to meeting the Appstore Developer Select program requirements, which gives you enhanced merchandising on the Amazon Appstore, Coins benefits and more.

When displaying ads in your apps and games, you may want to know how often you are actually displaying ads to your users, what types of ads are being displayed, and how your users are interacting with an ad.

Thankfully, the Amazon Mobile Ads API includes events that can aid you in understanding performance of ads displayed on your apps. You have the ability to track when an ad is successfully displayed from the Amazon Ad Network, how long a user views an ad, and when your user opens or closes a rich media expandable banner ad. These events should help you track and better understand user behavior in your apps when ads are being shown.

Handling Ad Events

All of the events associated with an ad provided by the Amazon Mobile Ads API will be returned by the AdListener interface. Once you have declared an instance of an Amazon AdLayout, setting an event listener to the layout will let you track the entire life cycle of an ad.

Keep in mind all of the listener's events are part of the main UI thread. So if you are planning on executing any long running tasks you should do so in an AsyncTask.

Capturing Metrics When Ads are Loaded

You can capture metrics in your app each time an ad is loaded using the AdLoaded event. AdLoaded is called each time an ad is successfully served by the Amazon Mobile Ad Network, and available for display. You can use this event to adjust your app’s user interface when a new ad is loaded or to keep track of the type of ads you are being served.

For example, if you have a game, you should choose to delay displaying the AdView until the player is at a point where an ad will not interrupt gameplay. In the below example I am updating a TextView each time an ad is successfully loaded and then adding the AdView to the root container for display.

You can get additional properties about the ad being served at runtime through AdProperties. These properties can help determine if your ad is a static banner or a rich media expandable banner. Static banners are HTML web views that typically open an in-app browser, native browser, or Android Intent. Rich Media Expandable Banners are HTML web views that expand in-app with rich interactive content (including videos), but also typically include opening an in-app browser, native browser, or Android Intent.

In the above screenshot, I have set a breakpoint to get information from the AdProperties variable. There are four types of information that are filled by AdProperties. These include:

Trigger changes when an ad expands

The onAdExpanded and onAdCollapsed events are called when a rich media expandable banner ad has been clicked by a user and is either expanded or collapsed. You can use this event to pause your game or suspend background audio music when an ad has expanded, among other options.

Handling Ad Load Errors

If an ad fails to load, the AdListener.onAdFailedToLoad event returns an AdError object that contains an error code and a descriptive response message. For example, the onAdFailedToLoad event below is logging the ad error message, removing the Amazon view from the UI, and then loading a Google AdMob view to request an ad.

It is important to keep in mind that the there is no logic to retry loading an ad. If you encounter an error, you should decide whether to call AdLayout.loadAd again based on the error code returned.

The error codes are helpful in debugging where errors may be occurring; server side, network based, or within the app code itself. In the below example we see an AdError occurring due to the developer setting an incorrect view size. This can happen if an ad is requested before its parent view is available.

The possible error codes that can be returned include the following.

NETWORK_ERROR The ad request failed due to problems with network connectivity. Try again when a connection becomes available.

NO_FILL The ad request succeeded but no ads were available. Don’t retry immediately.

INTERNAL_ERROR The ad request failed due to a server-side error. Try again but limit the number of retry attempts.

REQUEST_ERROR There is a problem with the ad request parameters. Do not retry. Review the error message and update your app accordingly.

For specific error message descriptions, please refer to the following chart on our developer portal here.

You can get more information on the Amazon Mobile Ads API including code samples and training videos here.

As we continue to expand our Amazon Mobile Ads service we are excited to announce a new promotion for developers to earn a guaranteed $1.50 CPM on banner ads during March and April 2014 for serving mobile ads through the Amazon Mobile Ad Network.

In order to qualify for this offer, you will need to integrate the Amazon Mobile Ads API in your qualified apps* and send the first ad request between February 3rd and April 30th, 2014. Here are the steps:

Integrate the Amazon Mobile Ads API in your qualified app and send the first ad request between February 3rd and April 30th, 2014. If you don’t have an app on Amazon yet, it’s easy to get started. Test your app using our updated testing service and submit it to us for free.

Earn $1.50 for every 1,000 qualifying impressions displayed on the app during March and April 2014 (up to 2 million impressions per app per month).

* Existing apps already sending ad requests do not qualify. Existing developers who integrate the Amazon Mobile Ads API into another app for the first time will qualify. Qualifying apps may be distributed through other Android stores as long as they are distributed through Amazon.

Since we first launched the Mobile Ads API in 2013, we’ve already seen developers successfully monetize their apps, earn high CPM and achieve high fill rates with quality ads from Amazon and brands like Philips and Duracell. Here are some results from developers who used Amazon Mobile Ads (of course, your results may vary):

“The biggest contribution Amazon provided us in monetizing our apps was through superior eCPM in their Mobile Ads SDK, which performed 215% more than other Ad Networks, and a 77% fill rate in our Word Breaker app. Amazon Mobile Ads allowed us to quit our day jobs.”

“After Padgram gained 3M users on iOS, we decided to launch our Android app exclusively on the Amazon Appstore for one month before launching on Google Play. While Amazon IAP monetization was similar to other platforms, the Mobile Ads eCPM was 1.5x higher than iAD.”

In addition to this promotion, using the Amazon Mobile Ads API in your app brings you a step closer to meeting the Appstore Developer Select program requirements, which gives you enhanced merchandising on the Amazon Appstore, Coins benefits and more.

Note: Effective 08-26-2015 Free App of the Day (FAD) has been replaced with Amazon Underground.

Getting the right exposure for your app is a key ingredient to making it successful. Amazon already has several programs which developers can leverage to help drive visibility to their apps, and developers who want even more visibility think outside the box to tailor their customer experiences to increase engagement with their apps. Tribeplay is one of those game publishers who did just that, by issuing a price discount promotion that drastically increased their revenue.

The team which is based out of China has been building apps since 2012 and created the series of games under the title Dr. Panda that first appeared on iOS and Android. According to Tribeplay, making their Android Apps available on the Amazon Appstore required “little to no extra tweaking.” Tribeplay added that “one of the best things about the Amazon Appstore is that there wasn’t much work to get our apps on there. We already develop for Android, so getting our games on the Amazon Appstore was a real breeze.”

The games are available worldwide, but the team wanted to increase sales in Europe so they discounted the price of their apps by more than 50% in select countries. By doing so, Tribeplay saw their gross revenue more than double in UK, Germany, France, Italy, and Spain.

So how did the team accomplish this? Tribeplay ran banners highlighting their price promotion, which caught the attention of customers in the Amazon Appstore. When the Amazon Appstore recognized that their app was trending in customer popularity, Amazon assisted by providing more visibility for the app. “The suite of tools for promotions and sales [that Amazon provides] to help market our apps on the Amazon Appstore more effectively are very valuable.” said Tribeplay, the creators of Dr. Panda. The team saw the app’s sales more than double during the time period, when they increased the visibility of their app.

Aside from the sales uplift, Dr. Panda was also able to reach a new and unique developer audience on Amazon. “Amazon Appstore is a fantastic platform for us and continues to get better. Through Amazon we’ve been able to reach a whole new demographic and really succeed with them. The fact that the Kindle Fire device line is so integrated to the store has also been a great benefit for both developing and marketing our apps with Amazon customers in mind.” The teams recently joined the Appstore Developer Select program and integrated the Mobile Ads API and are excited to see how the results will turn out. By participating in these programs, the team will receive additional impressions for their app, home page placements, and customized ads for their app in the US.

So how can you increase visibility? Besides having your app perform well, you can ensure your app qualifies for the Appstore Developer Select program, or get your app featured in the Free App of the Day program. If you’re looking for something similar to what Tribeplay did with their promotion, check out the Developer Promotions Console, which allows you to easily discount your apps. Getting your app onto these programs only requires a couple pre-requisites and they all aim at providing visibility for your app. For example, for your app to qualify for the Appstore Developer Select program, it must utilize relevant API’s such as Amazon In-App Purchasing, Amazon Mobile Ads, and Game Circle that all contribute to enhancing the user’s experience in your app. If you need help with these requirements we have a lot of resources available as well. “The Amazon team has always been amazing with their help and advice. Questions we ask are always answered promptly and accurately, and any problems we’ve had have been solved super quickly.” says Tribeplay.

The Amazon Mobile Ads API allows you to easily place high-quality display ads from the Amazon Mobile Ad Network into your Android and Kindle Fire apps. Successfully monetizing your apps with ads depends on several factors, one of the biggest being the ad fill rates you receive. A common practice is to use multiple ad networks so that if you are unable to fill an ad with one network you can request an ad from another one.

I thought it would be helpful to offer some guidance on how you can implement multiple ad networks into your own apps. This should help increase your fill rates as well as giving you the opportunity to show ads to customers were the Amazon Mobile Ad Network currently does not serve ads.

Let’s get started!

Setting up the App Manifest and Layout

The first thing you will need to do is follow the guidelines for including the correct Android network permissions and ad Activity as described here. Since you are going to include AdMob ads as well you will need to define that activity after our Amazon Ad as seen below.

You will also need to make sure you have set up the Amazon AdLayout inside of your layout file like below.

Declaring Multiple Ad Networks

Verify that both ad networks have been added to your Android project and set for export as seen below. For purposes of this demo, I will be using version 6.4.1 of the AdMob SDK and version 5.1.153 of the Amazon Mobile Ads API.”

Depending on what ad network SDK you are working with, many of the classes may be named similarly to the ones used in Amazon Mobile Ads API . You will need to be extremely careful when referencing individual classes and I recommended using fully qualified namespaces as seen below.

Displaying an Amazon Ad

Displaying an ad with the Amazon Mobile Ads API is as simple as creating and adding an Amazon AdView to the layout, setting any optional targeting properties and then calling the loadAd method of the AdView.

In the example below I am setting the ad to target a twenty five year old male and using a simple fixed rate timer to refresh the ad over time using a fixed schedule timer.

I have also turned logging on by setting the AdRegistration logging flag to true. This will give us detailed information in LogCat about the ads being served.

Here are some screenshots of the Amazon ads being loaded on a Kindle Fire HDX device:

Here is an example of the Amazon ad information being written to LogCat:

Checking if an Amazon Ad was served

If an Amazon ad has not been served within the timeout period it will call the onAdFailedToLoad() method. The default timeout is 20 seconds but you can change this to a different value (defined in milliseconds) by setting a property on the AdView itself. I recommend doing this while testing so that you can force the ad mediation to happen.

In the code below you will see I have set the timeout to be 100 milliseconds, which will always cause the ad to fail while I am debugging my secondary ad network. Once I have seen ads being loaded from both networks I can set this back to a more reasonable value.

Inside the onAdFailedToLoad method I log the ad error message I received, remove the Amazon view from the UI, load the AdMob view and then I have it request an ad.

Here are some screenshots of the AdMob ad being loaded on a Kindle Fire HDX device:

Here is an example of the AdMob information being written to LogCat:

Setting an Ad Timeout

The Amazon Mobile Ad Network recommends loading a new ad on screen navigations and device orientation changes when the ad view changes size. You may also want to refresh the ad after a set time interval. In this case, the Amazon Mobile Ad Network recommends a refresh rate of 30 to 60 seconds. Faster ad refresh intervals could result in blocked ad requests.

Please note that the Amazon Mobile Ads API does not provide any built-in functionality for automatically refreshing ads. The timeout value of the Amazon AdView is the amount of time it will try to get a new ad for you before calling the onAdFailedToLoad method. This will not auto refresh the ad it will only change the amount of time it spends trying to load an ad.

You will need to create your own timer system to refresh the ad or some other way inside of your app. In the code example above I used a timer on a fixed rate schedule for demo purposes, but there is no limitation to the way you could handle this in your own apps. For example, every time a player reaches a new level in your game you briefly display an ad.

Conclusion

Hopefully you have seen how easy it is to set up ad mediation with the Amazon Mobile Ads API and third party ad SDKs in your own apps. You can read more details on working with other ad SDKs here on our developer portal. You can also get more detailed information about the Amazon Mobile Ads API itself and sign up here.

We have been encouraging mobile app and game developers to try Amazon’s Mobile Ad Network because of its great eCPM—effectively, how much you earn for every 1,000 ads displayed—but that isn’t the only benefit. Performance reports put ad data at your fingertips, such as which of your apps are using ads most effectively, what ad sizes have the best eCPM and fill rates, and how the total number of impressions has changed week-over-week. These reports are automatically available to any app that integrates the Mobile Ads API.

Now there are even more ways to refine the analysis. Two new filters allow you to report on performance data by geographical region and mobile device type.

Performance may vary by app

By default, data for all regions and all devices is included in the reports you generate.

Fill rate may vary by app

Amazon serves most if its ads to users located in the US, so running your report with a US categorization draws a more accurate picture of the performance and makes it easier to evaluate the Amazon Mobile Ad Network. You can also expand the region filter to include North America (Non-US), Asia, Europe, and Others. You will be able to analyze usage of your app outside of the U.S. to help you decide how to monetize your non-U.S. traffic.

You can also filter the data by which type of device made an ad request. You may find that phone and tablet versions vary widely in ad performance, or that some combination of a particular form factor and operating system typically converts better (or worse) than other combinations.

Being able to refine your ad performance reports by geography and mobile device type makes it possible to see detailed information on regional fill rates, understand ad request volume by platform, and accurately compare and evaluate the Amazon Mobile Ad Network relative to other mobile ad networks. All of this reporting is easy to incorporate into your apps. Simply integrate the Mobile Ads API and take advantage of the analysis and insights at no cost.

The Amazon Mobile Ads API concluded its Kindle Fire HD promotion, and today we’re excited to say that hundreds of developers will be receiving a new device. Since the launch of the Amazon Mobile Ads API in July, developers who integrated the Amazon Mobile Ads API into Qualifying Apps by September 1st and generated at least 500 ad requests per week to the Amazon Mobile Ads Network from September 15th through October 19th, were automatically enrolled in the promotion to get a free Kindle Fire HD device. We’ve seen hundreds of developers integrate the Amazon Mobile Ads API into their apps and they are generating ad requests in impressive numbers. By integrating the Amazon Mobile Ads API into their apps, these developers have a powerful monetization solution and now, they also have a new tablet.

David Detry from Imesart says, “We were planning to integrate the Amazon Mobile Ads API in our app and heard about the Kindle Fire HD promotion so we moved up the development schedule. We wished we had integrated the API sooner after seeing how much it’s making for us.”

We were so overwhelmed by the excitement and participation in this program that we wanted to even further reward developers. In the US where Kindle Fire HDX was already available to ship, developers received an upgrade from the Kindle Fire HD to the Kindle Fire HDX. For international developers, where the Kindle Fire HDX was not yet available to ship, we are covering the taxes and import duty on the Kindle Fire HD. Qualified developers have already received an email notifying them that they can expect devices to start shipping soon.

If you missed this promotion, you can still monetize your app with the Amazon Mobile Ads API and earn great eCPM. Click here to learn how.