Appstore Blogs

Appstore Blogs

Want the latest?

appstore topics

Recent Posts

Archive

Showing posts tagged with How To

October 29, 2013

Mike Hines

Following up on the latest in a series of webinars covering Amazon devices, game services, and mobile applications, here’s a list of questions we collected during and after our presentation on the Amazon AB Testing API.

Q: AB test requires internet connection at every launch so even i switch to 100% for say thanksgiving.. it will not applicable to user if he is not connected to internet.. Is there any way to make it concrete...
A: If you query the server for a variant each time you use the app, the user will get the default value (“ABTest Default”) from this line:

newText = varNewText.getVariableAsString("varNewText", "ABTest Default");

If that default were set to “Thanksgiving”, you could be sure that you would get this value even if offline.

If you have a different, undesired value as default, you will need to wait until the user launches the app while online to effect the change. Even then, when offline, the user will see Default again.  To make sure this doesn’t happen, you can save the value once it’s been set. Then you can check to see if there is a connection before resetting the value from the server, and use the stored value if there is no connection. This way, the value can always be “Thanksgiving” (or whatever variant you select), even when the user is offline.

Q: if we r using a|b testing in our google play apps, does it need the amazon appstore app installed (for drm validation) in the device or just adding the insights jar file in our google play app will do?
A: Amazon Appstore does not need to be installed for A|B Testing to work. Just adding the Insights jar file will work.

Q: when i was a|b testing, i noticed delays in getting the variables  in my app as well as viewing the results in the portal... why is there a delay? what is stopping from real-time measurements on the portal?
A: The call to the Insights service updates asynchronously, and results are not posted to the server real-time.  It is reasonable to see some delay before the results appear in the portal.  When offline, the service batches all collected data and saves it until the customer’s device connects with our service.

 

Don’t miss out on our next webinar event: 
Tips & Tricks: How To Test, Submit, and Earn Revenue with Your HTML5 Mobile Web Apps
on November 7th, 2013 @ 10:00 AM
Pre-register here!
 

 

October 11, 2013

Mike Hines


Click here  to watch the exclusive webinar replay on YouTube!
 
Following up on the latest in a series of webinars covering Amazon devices, game services, and mobile applications, here’s a list of questions we collected during and after our presentation on the Amazon Maps API.
 
Q: Can we see some best practices about creating apps that support both Google and Amazon maps, if possible without doubling the codebase? So long story short: is there a way to hide the map implementation like behind a Factory pattern, or something like that, or we have to work with two separate projects?
A: You could create a common map library using a factory pattern. Others may prefer maintaining separate code bases, dependency injection...etc. Unfortunately, there is no single good answer. It depends on the goal and scope of your team.
 
Q: Can we use Amazon maps on regular Android apps?
A: No, at this time the Maps API does not support non-Kindle Fire devices.
 
Q: Is it preferred to save that geocoding locally so we dont make lot of calls?
A: Yes, avoid excessive network operations would improve the performance and battery consumption of your app.
 
Q: If our app has a map in it, is there a way to support the Kindle devices in China and Japan?
A: The Amazon Maps API is supported in countries where Kindle Fire tablets are sold, except for China and Japan
 
Q: Is there restrictions on how many geocoding calls we can make?
A: At this time, there are no specific usage quotas or limits for the Maps API. However, we reserve the right to throttle or shut down your application in the event we reasonably believe your use of the Maps API exceeds typical or expected usage and/or creates material technical burdens on our (or our partner’s) systems.
 
Q: What's the benefit of using Amazon Maps over Goolge Maps API?
A: Google Map API requires Google Play Service, which is not available on Kindle Fire tablets.
 
Q: Can we do geocoding of an address outside of the mobile app?
A: No, at this time the Maps API does not support query outside of a mobile app.
 
Q: How does Amazon Maps compare with Google Maps with respect to features?
A: The Amazon Maps API offers interface parity with the Google Maps API v1. At this time, the Amazon Maps API does not support Traffic, Street view, and Trackball gestures.
For more information, please visit https://developer.amazon.com/sdk/maps/faq.html
 
Q: Can the maps be cached locally?
A: No, at this time the Maps API does not support map caching.
 
Q: Is there a way to get Amazon Maps in a Fragment?
A: At this time the Maps API does not support fragments.
 
Q: Pretty cool maps, who is the map data provider? TeleAtlas, NAVTEQ?
A: Nokia. 
 
Q: There are several build targets in the amazon api(in eclipse, 3 only for API level 17). If I build on e.g. Kindle Fire 7(3rd generation) will it be ok for e.g. Kindle Fire HDX 8(3rd generation) as well?
A: Yes, the 3rd generation of Kindle Fire tablets are compatible with API level 17
 
 
Don’t miss out on our next webinar event: 
Integrating GameCircle in Your Android & iOS Games
on October 16th, 2013 @ 10:00 AM
Pre-register here!
 
 

 

 

September 27, 2013

Peter Heinrich

Amid all the hoopla around GameCircle’s expansion to iOS and a major update to Whispersync for Games, you may not have noticed two other powerful features were also released recently. The GameCircle team quietly added support for bulk creation of leaderboards and achievements on the Mobile App Distribution Portal, as well as the ability to internationalize them in up to eight languages besides US English. Both have been popular feature requests.

Internationalization means that GameCircle will display the title and description of your leaderboard or achievement in the language appropriate to your player’s locale, provided they have specified it in their mobile device settings. You can provide translated descriptions in any or all of these languages:

 

You enable these alternative versions by selecting them from the Add a Language dropdown list on the Leaderboard or Achievement view for your game. To view your game’s leaderboards, for example, go to the GameCircle configuration page and follow the View link in Leaderboards column.

 

Adding an additional language is not reversible, but you specify which ones to publish, so there’s no harm done if you change your mind or add the wrong one: simply don’t publish that version of the title and description.

Once you add a language, you will see a new corresponding line item for each leaderboard or achievement, which is independently editable.

Providing alternative versions for each title and description, while straightforward, may become unwieldy when you are translating for a lot of locales, or just have lots of leaderboards or achievements. In fact, as the number of leaderboards and achievements goes up, entering all of the other information required to create them definitely makes manual entry time-consuming.

This is where GameCircle’s new bulk upload facility becomes really handy. Rather than create each achievement individually, for example, you can create a file of comma-separated values (CSV) defining all of your achievements at once. From the list of Achievements for your game, click the Bulk Add Achievements button.

On the page that appears, download a CSV template via the click here link. Open the template and fill in the columns as appropriate, then save it locally. See the Create Multiple Achievements section of Implementing Achievements for more information on each column. You will notice, for example, that there are separate columns for each possible translation of title, locked description, and unlocked description. Icon ids for locked and unlocked versions of the achievement are shared across all languages.

Before you can upload the CSV file defining your achievement (or leaderboard) metadata, however, you must upload the icons it refers to. GameCircle provides an Icon Gallery for this purpose, which allows you to add, delete, and rename icons individually or by dragging and dropping them on a web page. You can view the Icon Gallery for your game from the GameCircle configuration page. See Using the Icon Gallery for more information.

Once the icons have been saved and the CSV file updated to reflect your achievement metadata, you’re ready to upload. Click Choose File and navigate to the file you just edited, and then upload it.

Mobile apps and games distributed through the Amazon Appstore for Android are available in nearly 200 countries worldwide, and now GameCircle allows you to provide title and description translations for several of them. Entering the metadata that defines your achievements and leaderboards also got easier, now that you can upload it as a CSV file. Added in response to developer feedback, these features were designed to complement each other and make working with GameCircle fast and simple.

 

August 21, 2013

Mike Hines

As readers of this blog, you probably already know that Kindle Fire devices run Android. While these devices may not look like Android because we use an Amazon-designed launcher, they are Android indeed. The original Kindle Fire released in 2011 runs Gingerbread (API level 10) and the Kindle Fire devices released in 2012 run Ice Cream Sandwich (API level 15).

What you may not know is how easy it is to get your existing Android apps up and running in the Amazon Appstore on Kindle Fire and other Android devices. We recently tested more than 1,600 app submissions to the Amazon Appstore Android tablet apps on Kindle Fire. In our tests we found that more than 75% of these apps just work on Kindle Fire devices with no additional development required.

While some developers may choose to just submit their Android apps, others may also decide to integrate Amazon APIs like In-App Purchasing, GameCircle or Mobile Ads to provide a richer customer experience and monetization.

We’ve seen Android apps like ‘Match the Pics’ take minutes to get submitted to Amazon and others like ‘Temple Run’ easily integrate Amazon APIs with their apps.

“Publishing our content on the Amazon Appstore was extremely easy since our Android games just worked on Kindle Fire. Creating the developer account and submitting the first app for review took a matter of minutes, and the app got published the next day.”        Appoh

"We've integrated with Amazon's In-App Purchasing and GameCircle APIs, which was a breeze. We've seen significantly higher customer engagement with Temple Run since the integration, making the few, short steps worth it.”         Imangi

You may be asking, why don’t 100% of Android APKs submitted run on Kindle Fire? Of the minority that doesn’t get to the store on their first try, some reasons for failure are:

  1. App functionality doesn’t match the product description. We’ve found that this is the top reason.
  2. For apps designed to run on phones, the app loses state or data when it receives a message or phone call. The app should preserve its state when receiving or placing text messages and phone calls.
  3. The icons don’t match. Sometimes, the icons submitted in the developer portal don’t match the icons included in the application. They need to match.
  4. App stability or failure to launch. One in 20 of the app failures is stability related. For example, because the SD card path is not necessarily the same for all devices, assumptions about the SD card path can cause failures. Another common example is failing to include referenced libraries.
  5. Not replacing unsupported APIs with the Amazon equivalent API.
  6. Security. One example we’ve seen is writing plain-text login credentials to the log. Apps need to be secure for customers.
     

Since your app will most likely just work with zero development effort in the Amazon Appstore, it seems like a no-brainer to create a developer account – at zero cost - and submit your app. Take a look at what one of Amazon’s Appstore developers says about how easy it is to set up your account and submit your Android app.

Some of the details went by fairly quickly in the video. Here’s a comparison summary of the assets in a Google Play submission and how they transfer to an Amazon Appstore submission.

It’s really not hard to have your app fly through testing. Just open a developer account on the Amazon Mobile App Distribution Portal today. You can then start submitting your existing APKs to the Amazon store, exposing them to new customers in nearly 200 countries worldwide.

Click here to get started.

August 13, 2013

Peter Heinrich

Amazon GameCircle and the other game services we offer are designed to make mobile game development easier, but knowing where to start may still be difficult. To offer a bit of guidance, I thought it might be worthwhile to take a small, simple game and walk through the process of extending its functionality, one service at a time. Together we’ll gradually add features over the course of several posts, each one focusing on a specific way Amazon services speed development or reduce code complexity. At the end of the series, we’ll have a working game application that shows these services in action and demonstrates how you might incorporate them into other projects.

As the title implies, this post will kick off the series with a look at GameCircle, which supports leaderboards, achievements, and Whispersync for Games, a powerful mechanism to synchronize local and cloud data. Games have been saving progress and celebrating player success since the beginning, so GameCircle seems like a good place to begin our journey.

Prerequisites

Note that this blog series assumes that you are comfortable developing for Android using Java and Eclipse, and that your development environment is set up and working properly with the Android Developer Tools (ADT). Some Amazon services are available only on Kindle Fire, so that will be our target device throughout the series. You must install the Kindle Fire SDK add-ons in order to use those features. For more information, see the Get Started section of Kindle Fire Development Resources.

Importing the Monster Tag Project

Before we begin, we need a simple game that will serve as the base for our experimentation and improvements. Monster Tag displays a horde of monsters and asks the player to tag them as they bounce around the screen. Every time a monster is tagged, it gets startled and speeds off in another direction. The faster a monster is moving when it’s tagged, the more points are awarded to the player.

To import the Monster Tag project into Eclipse, download and extract the source bundle to a convenient location, then choose File | New | Project… from Eclipse’s main menu. Expand Android and select Android Project from Existing Code, then click Next

Click Browse… to navigate to the temporary location where you extracted the source code, then click OK. Check Copy projects into workspace and click Finish

Once the project has been loaded successfully, you will see it in the Package Explorer:

Launch the application in the debugger for the first time by selecting the MainActivity and choosing Run | Debug As | Android Application from Eclipse’s main menu. You should see a lot of little orange guys flying around, daring to be tagged.

Establishing Trust

We have a basic game application running, but we’re still not ready to integrate GameCircle and use it to track high scores online. The GameCircle service won’t accept connections from just any mobile application—it authenticates requests to ensure they’re coming from trusted apps. Every app or game that wants to access GameCircle (and some other Amazon services) must have an “API key,” which is associated with a security profile for that app. The key tells GameCircle that our app is trustworthy.

To establish a security profile and obtain an API key, we must first let Amazon know about our game, which we do on the Mobile Application Distribution Portal. Sign in or create a developer account there if you don’t already have one. (If you’re creating an account for the first time, you’ll be asked to supply some basic information and agree to some terms and conditions. If you intend to create paid apps, you’ll have to provide some extra info, as well.)

Once you’ve logged in, go to the Apps & Services tab and hover over the Add a New App drop-down, then select Add new Android App. Now we can tell Amazon the details of our game:

Generating a Security Profile

After clicking Save we could add more details, such as pricing, icons, and screenshots, but for now we’ll skip those steps and jump right to creation of a security profile. Follow the Security Profile link that appears under the app title on the next screen, then click the Create a New Security Profile button.

You’ll be asked to name the security profile. Note that you can share security profiles between applications, which we’ll discuss in a later post. For now, we’ll assume only Monster Tag will use this one, so we’ll name it accordingly:

Creating an API Key

Now we have a security profile, but no API key has been associated with it yet. Follow the API Keys link that appears after the profile name, then fill in the required fields and click Generate.

NOTE: What you enter in the signature field, below, will depend on your own development environment; you must supply the MD5 signature of your own debug keystore. You can find information about obtaining this value in the Debug application signature section of Getting Your OAuth Credentials and API Key. Typically this involves using keytool (installed as part of the JDK) from the command line:

keytool -list -v -alias androiddebugkey -keystore /path/to/debug.keystore

You should be asked to supply a password, which is “android” by default (no quotes). Check the output for the MD5 signature, highlighted below:

...

Certificate fingerprints:

         MD5:  D4:81:0C:AA:3D:45:DE:45:59:F2:BE:DE:95:A8:E1:65
         SHA1: A1:DF:DD:0D:89:77:81:24:E0:AF:47:AA:B6:55:B6:14:58:7D:4C:E4
         SHA256: 5:50:7F:6F:43:2C:3E:CD:D6:46:F1:F7:96:F2:ED:DE:E8:DD:3A:53:00
         Signature algorithm name: SHA1withRSA
         Version: 3

Adding an API Key to an Eclipse Project

Generating the API key will result in a long base64-encoded string. This is the magic value we need to include in our project to identify our app as trustworthy.

To add it to the project, create a new file called /assets/api_key.txt and paste in the value. Note that api_key.txt must be located in the /assets subfolder.

Enabling GameCircle Data for a Security Profile

Next, we must indicate that there will be GameCircle data associated with the security profile we just created, and that our Monster Tag game will use it. Go to the GameCircle configuration page, select the security profile we created and click Confirm.

Connect a Security Profile to the App

To connect our game to the correct GameCircle data, go to the My Apps tab of your profile, click the Monster Tag app, then follow the Security Profile link. Click the Monster Tag radio button and confirm the action by selecting Apply Profile on the dialog that appears.

Next Steps

Success! Our app is registered with Amazon, there’s a security profile associated with it, and we generated a corresponding API key and added it to our project. We’re ready to use GameCircle and it’s ready to accept requests from our mobile application.

In the next installment of this series, we’ll use GameCircle’s built-in leaderboard functionality to track high scores and let users compete with each other. Now that we have the app and security bookkeeping out of the way, it will be a cakewalk.

 

August 05, 2013

Mike Hines

In previous posts, we’ve touched on the eCPM benefits and ease of implementation of the Amazon Mobile Ads service. But easy to implement doesn’t mean inflexible. We’d like to cover some easy ways you can do Ad Targeting.

In addition to being able to specify the ad unit size, there are a number of targeting options you can include in the request that's sent to the Amazon Mobile Ad Network.

The properties you can send to get more accurately targeted ads are:

 Property

 Argument

 UserGender

 MALE | FEMALE

 GeoLocation

 true
 [this will return current lat/long position to Amazon, and you must declare  coarse_location and fine_location in you permissions request.]

 Age

 integer

For example, to get ads that are better suited to 35 year-old males in the use’s specific region, do the following:

public void onCreate(Bundle savedInstanceState) {
   ...
    AdTargetingOptions adOptions = new AdTargetingOptions();
    adOptions.enableGeoLocation(true);
    adOptions.setGender(AdTargetingOptions.Gender.MALE);
    adOptions.setAge(35);

}

Easy, isn’t it.

You can also customize the floor price for the ads you receive. For example, if you want to get ads that will pay no less than $0.85 per thousand ads returned, you can do that by setting Advanced Option “ec” to 850000 micro-dollars.

For example, add the following line to the example above:

adOptions.setAdvancedOption(“ec”, “850000”);

and you will only get ads with CPM => $0.85. 

Note: The Amazon Mobile Ad Network is designed to maximize your revenue opportunity at the default setting. Setting a floor price may limit your revenue potential as it might prevent several paid campaigns from running on your placement. Amazon recommends not setting this value.

You can also specify a list of advertiser names, advertiser product categories, or URLs that aren't appropriate for your customers. Use the restrictions page under the Settings menu item in your dev portal. Please note that blocking ads may negatively impact your revenue and fill rates, and restrictions currently apply to all of your apps with ads. 

How do you see your results? That’s easy too. Check it out on the Mobile App Distribution Portal Dashboard (your dev portal home page), or by clicking on Reporting and selecting either Mobile Ads Performance to see:

  • Requests
  • Impressions
  • Fill rates
  • Click-through rates (CTR)
  • Revenue per thousand impressions (RPM)
  • Earnings

 

Or you can click on Mobile Ads Payments to see payments dispersed.

We’re happy that we’ve been able to make targeting Amazon Mobile Ads easy and straightforward. Click here to see the Mobile Ads API video and to get the Mobile App SDK. We hope you’ll give it a try in your app today.

 

August 01, 2013

Peter Heinrich

Following up on the second in a series of webinars covering Amazon devices, game services, and mobile applications, here’s a list of questions we collected during and after our presentation on Amazon GameCircle, including Achievements, Leaderboards, and Whispersync for Games.

 

Does the developer have access to the GameCircle nickname?

Yes, you can call getLocalPlayerProfile(), which returns a structure containing player id and player alias (same as nickname/username). NULL is returned if the player is in guest mode (they have not logged in). Player id is unique for each player.

When updating Achievement Progress can you decrement it as well or does the GameCircleCient hold onto the latest highest progress value?

Achievement progress is strictly increasing, which means updates must be greater than the current value or they’ll be ignored. Note that you can reset achievement data for draft achievements (those that have not yet been published).

With the update, does GameCircle still support Kindle Fire 1?

Yes. The GameCircle system app must be updated to v1.1_1101110, however. This should have been delivered OTA. On KF2, the GC system app should be v2.5.2500310 or greater.

Can leaderboards/achievements be translated?

Not yet, but localization is in development and will be available in a future release.

Is the same game discovery mechanism on Kindle Fire available on all Android devices as well?

The dedicated Games Tab is built in to the games library on Kindle Fire only. It’s not available on other Android devices.

What is the minimum OS supported?

GameCircle supports API level 10 up to API level 16 on all Android devices.

Is GameCircle available internationally?

Yes, GameCircle works internationally. Players in China are limited to Guest mode for now, due to data storage requirements imposed by the Chinese government, but we will address that in a future release.

Is the old version of GameCircle still supported?

Yes, for legacy games. Games that have been published using GameCircle v1.x will continue to work. If you had a game in development when GameCircle v2.0 was released, you can proceed to publish it using the old version. Since the Mobile App Distribution Portal no longer provides direct support for GameCircle v1.x app whitelisting, however, you must contact us to add or update package name/signature pairs. See the Whitelisting Notice on the GameCircle configuration page for more information.

What happened to the FileSync and BlobSync from Whispersync?

We greatly simplified the Whispersync interface to make it easier to integrate and expand auto-resolution of data conflicts. As a result, we dropped support for the blob and multifile sync options. They were complicated to integrate and forced the developer to manually reconcile data on occasion (or to ask the customer to do so). The new Whispersync requires significantly less integration overhead and provides a better customer experience in most cases.

Can I migrate old Whispersync data to the new format?

Yes, there are two methods on the WhispersyncClient that can help in the migration process. migrateVersion1GameData() and unpackVersion1MultiFileGameData() will download and unpack data stored using the previous version, respectively. They’re only meant to be used by games that integrated Whispersync prior to July 1, 2013. See the Javadoc for more info.

Is there any way to integrate game circle in Air apps?

Amazon provided an Adobe Native Extension (ANE) for GameCircle v1.x, but none is yet available for the new version. We are actively researching an upgrade to the existing ANE, but don’t have an official timeline. Check back here or follow @peterdotgames for updates on the availability of a new ANE. In the meantime, you can continue to the existing extension with GameCircle v1.x for games currently in development.

Where can I learn more about Unity plugin for game circle?

Check out the Amazon Unity Plug-Ins page on the Amazon Mobile App Distribution Portal.

Do users need to login with Amazon account username and password to use the game services?

No, GameCircle now supports a Guest Mode for users who don’t want to log in to an Amazon account. In this case, data will not be synchronized to the cloud or across devices.

Is there a good game to play to check out the features?

There are many great games that include GameCircle features, including well-known blockbusters and high-quality indies. In the Amazon Appstore, look for the GameCircle badge to quickly identify games that use Achievements, Leaderboards, or Whispersync for Games.

 

Don’t miss out next webinar event: How to Integrate Amazon Mobile Ads and Lift Your App Revenues 
on August 15th, 2013 @ 10:00 AM.

Pre-register here!

May 14, 2013

siwapin

Adding advertising to your apps is easy. Integrating ads doesn’t require a major redesign of your app and has minimal impact on your app’s functionality.  It is as simple as making space for the ad on the screen.  The Amazon Mobile Ads API (Beta) enables you to display high-quality ads provided from the Amazon Mobile Ad Network in a matter of minutes.  This article explains how to place ads into an existing app using the Amazon Mobile Ads API.

Set Up Your Payment Information

First and foremost, submit your payment information through the Payment Information Page and your tax information through the Tax Identity Interview. You can skip this step if you have already submitted this information through the Amazon Mobile App Distribution Portal. This is required to receive ads.

Retrieve Your Application Key

The Amazon Mobile Ads API utilizes a unique Application Key to identify and interact with an app.  Every app will have its own Application Key.  If your app is already on the Distribution Portal, you can find your Application Key on the app’s detail page.  Otherwise, create a new app and fill in the “App title” and “Category” fields.  Locate the Application Key value and set that aside.  We will use that later to register with the Amazon Mobile Ad Network.

Application Key

Incorporate the Amazon Mobile Ads API Into to Your Project

Next, you will need to add the Amazon Mobile Ads API to your project.  For the purposes of this example, we will use Eclipse.

Download the Amazon Mobile Ads API (Beta) from here (this should link to our API landing page which has the file for download and the legal verbiage) and unzip it locally.

Add the JAR to Your Project

Modify the build path of your project and add the amazon-ads-<x.y.z>.jar found in the zip under the /Ads/lib folder.

  • In the Eclipse project explorer, right-click on your project and open the properties
  • Navigate to Java Build Path in the left pane
  • Choose the “Libraries” section
  • Press the “Add External JARs…” button
  • Choose the amazon-ads-<x.y.z>.jar from the zip

Java Build Path

  • Choose the “Order and Export” section
  • Check the box on the amazon-ads-<x.y.z>.jar

Order and Export

Add the amazon_ads_attr.xml to Your Project

This step is required to set up ads through the xml layout.  Copy the amazon_ads_attr.xml file from the zip located in /Ads/res/values/ into your project’s res/values/ folder.

Add the amazon_ads_attr.xml

Modify the ApplicationManifest.xml

The Amazon Mobile Apps API requires the following permissions and activities:

  • Add the following permissions to your manifest

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

  • Add the following activities within the application tag

 <activity android:name="com.amazon.device.ads.MraidBrowser" android:configChanges="keyboardHidden|orientation"/>
<activity android:name="com.amazon.device.ads.VideoActionHandler" android:configChanges="keyboardHidden|orientation|screenSize"/>

Place the Ad in Your Project Layout

Now that the project is set up to use the Amazon Mobile Ads API, the next step is to add an ad to the application layout. 

  • Open the layout xml you want to display your ads on from your project’s res/layout folder
  • Add the following namespace to the parent layout filling in with your package name

xmlns:Amazon=http://schemas.android.com/apk/res/<my.package.name> 

  • Add an AdLayout into your layout and configure the adSize attribute.  You can find the supported ad size values here
  • Set the layout_width and layout_height to match the adSize.

<com.amazon.device.ads.AdLayout
        android:id="@+id/adview"
        Amazon:adSize="1024x50"
        android:layout_width="1024dp"
        android:layout_height="50dp"/>

Modify Your Activity Code

Now we can call the Amazon Mobile Ads API to load ads.

Import the Ads Classes

import com.amazon.device.ads.*;

Register with Your Application Key

Time to put that Application Key to work.  In your activities onCreate, call the AdRegistration method to register your app and then call the Amazon Mobile Ads API to load an ad.  Please note that you may only use an Application Key to display ads on the specific app for which it was issued. 

//Register App with the Ad Network
AdRegistration.setAppKey(getApplicationContext(), APP_ID); 

  //Load ad on to AdLayout
adview = (AdLayout)findViewById(R.id.adview);
adview.loadAd(new AdTargetingOptions());

Publish Your App

Submit your app to Amazon to display ads to your U.S. users and follow the attribution guidelines set forth here. The Amazon Mobile Ads API can also be used with apps that are distributed through any Android stores. Apps that use the Amazon Mobile Ads API may be distributed through any Android store as long as they are distributed through Amazon.

Congratulations!

Your app is ready to display high-quality ads from the Amazon Mobile Ad Network.  This is the simplest of configurations but the Amazon Mobile Ads API has several features for customizing your   ad layout, ad targeting, error handling, debugging, and more.  Read more about the many features of the Amazon Mobile Ads API (Beta) here.

May 14, 2013

Mike Hines

As developers, we’re occasionally (okay, maybe more than occasionally) stuck in the middle between designers who ‘know what works’ and executives who ‘know what they want.  Even in smaller shops, it may not be clear which user experience will more often result in the desired behavior. Beyond simple use tracking, testing two different options to determine which works better usually meant two separate APKs and a lot of data mining and management to see which was the best.

Amazon has changed that with the release of the A/B Testing Service, where developers can run experiments within one APK. You define the variables to test in each of two variations, and then decide what percentage of downloads will get each variation. The app then collects data and allows you to make an informed decision about which variation you want to enable. These variations could vary from the speed of the ball in a game, or the message displayed while trying to upsell an In-App purchase item like extra lives. It’s easy to configure and integrate the A/B Testing Service with your app and it’s also free for any developer distributing their apps on the Amazon Mobile App Distribution Program for Android.

In this post, you will learn how to integrate A/B testing into your app. For our example, we will use the “Snake Game”. In the traditional game, the speed of the snake increases every time it is fed.  We will run tests to figure out the optimal speed increment in order to ensure that the game is neither too easy nor too hard for the player and that the player is always engaged.  In our case, a successful test would be if 70% - 73% of players are able to feed the snake 20 times before the snake collided with the boundary or the snake itself. This will give us objective data on whether the increment was too high, too small, or just right.

Creating your test

Once you have identified your test, you can create an A/B test by going to the Mobile App Distribution page to create it.

In our example, we will create a project called “Snake Speed Project” and an A/B test called snakeSpeedTest. We will use this to test out various increments in the speed of the snake until we find the optimal one.

To configure an A/B test you will need the following information:

  1. Name of the test
  2. Event name to count the number of views
  3. Event name to count the number of conversions
  4. Variable name for each variation
    1. Variation A
    2. Variation B
  5. Distribution percentage

In our example, the test would look like the screenshot below:

AB Testing Setup Form

For more details on how to setup an A/B test, please visit the startup guide.

Integrating the API

Now that you have a test set up in the Mobile App Distribution page, you’re ready to integrate it into your application. For this, you will need to download the SDK.

After downloading the SDK you will need to integrate it into your project. For more information on how to setup your project, please visit Integrate the SDK.

To initialize the Amazon Insights SDK, you will need to obtain the following from the Mobile App Distribution page:

  1. Application key – Which can be retrieved by going to your “My Apps” dashboard and selecting the app. One of the properties available in the General Information is the Application Key.
  2. Private Key Which can be retrieved by going to the  app’s A/B testing page and click on “View Private Key”.

You can now initialize the SDK using these two keys.

// Configure the Amazon Insights SDK
AmazonInsights
    .withApplicationKey(YOUR_APPLICATION_KEY)
    .withPrivateKey(YOUR_PRIVATE_KEY)
    .withContext(getApplicationContext())
    .initialize();

Now that your application is initialized, you can start receiving different variations for your test. In our case, it is the increment by which to increase the snake speed. 

//Get a variation allocated for the “Snake Revive Project” experiment and
//retrieve the speed variable.

ABTest
    .getVariationsByProjectNames("Snake Speed Project")
    .withVariationListener("Snake Speed Project",new VariationListener() {
        public void onVariationAvailable(Variation variation) {
 
          speedMultiplier = variation.getVariableAsString("speedMultiplier",
           "feedingTime");
            //... increase speed.

    }}

); 

 After you have successfully retrieved the variation, you would need to notify the Amazon A/B Testing Service of a successful view. You can do that by simply adding the following code. (Note that snakeSpeedIncremented is the same event we added in the A/B testing portal page for counting views)

 // record when the snake is fed for the first time only (visit)
CustomEvent
    .create("snakeSpeedIncremented")
    .record();

 Once the game ends by either the snake colliding with the boundary or itself, we will check the count of the how may times it was fed. If it was more than 20, then we will record a successful conversion. (Note: snakeLevel20Reached is the same event we added in the A/B testing portal page for counting conversions)

 // record if number of feeds is more than 20.
if (noOfFeeds > 20) {
    CustomEvent
        .create("snakeLevel20Reached")
        .record();

}

 Once you have incorporated the SDK and deployed it through the Amazon Mobile App Distribution Program, you now start collecting data.

In our case, we determined that 95% of the players reached level 20 for both test increments, which suggest that the game play was easier than our target. We ran additional rounds of tests by doing launches with new increments and found that the 1.65 multiplier was the optimal level of difficulty, as the conversation rate was around 71%. Refining the increment amounts to do new rounds can be done by just going to the A/B test page. No new APK is required.

The Start your first A/B test guide tells you how you can start an A/B test, view results, and end a test.

As you can see, setting up and integrating Amazon’s A/B Testing Service is simple and straightforward. The best part is that it’s free for developers of the Amazon Mobile App Distribution Program.

April 29, 2013

Mike Hines

With the recent announcement that Amazon will be distributing in nearly 200 countries worldwide, it’s a good time to revisit making your app available internationally. In this post, I’ll be covering the steps to review before you should consider selling your apps internationally, including API availability, localization, pricing, and reviewing local feedback.

First Things First. Can you sell internationally?

Do you have the right to distribute your app internationally? It is your responsibility to verify that you have the necessary rights to distribute your apps and content everywhere you designate for your apps and content to be distributed.

Are all services/APIs available internationally?

The following services/APIs are available in all marketplaces:

  • Amazon In-App Purchasing API
  • Amazon A/B Testing Service
  • Amazon Device Messaging API
  • Amazon GameCircle API

The following APIs are available in only some marketplaces:

  • Amazon Maps API is currently supported in the United States, United Kingdom, Germany, Spain, Italy, and France
  • Amazon Mobile Ads API only serves ads to users in the United States

For more information on APIs, see this link.

Should you localize?

Amazon does not require apps to be localized (though we think it is a good idea to do so). While you must have an English product description; you can also provide a localized product description. To localize your product description:

  1. Sign into the Distribution Portal and click My Apps
  2. In the dashboard or using search, find the app that you would like to edit and select the Description tab
  3. Click on the Add a Translation link at the top, and you will see the following screen where you can select the language you wish to add, and you can type in your translation

For more on localization, see this post.

Making your app available internationally

Just two steps for this.

  1. Select the Countries in which you want to sell your apps
  2. Set your list prices

1. Select the Countries in which you want to sell your apps:

Whenever you create a new app, it is set to be available in all countries by default. To change international availability, click on the Availability and Pricing tab in My Apps and select the countries where you’d like to sell your apps.

Developers are responsible for ensuring their apps comply with all applicable export and import restrictions and the laws of the countries in which the apps are sold.

2. Set your list prices:

By default, Amazon will calculate the list price used to calculate royalties for sales of your app in foreign currencies based on recent exchange rates when you use this tool, but you can change this if you wish. In the example above, you can see that $2.99 in USD became ₤1.96 Pounds in Great Britain. You may wish to change this (and other) list prices to end in .99, .49, or other common values.

List prices for apps and IAP items do not automatically change when currency rates do. If you need to update your list prices, simply make changes via the ‘Availability and Pricing’ tab, and re-submit your app or IAP items.

For more detailed information on the steps above, please see this post.

Royalties and Taxes

When your app is sold, you will earn a revenue share of the app’s list price net of applicable taxes. The revenue share does not change by country; however you will get a separate payment for each marketplace in which sales occur. For electronic payments, the currency of your payment is determined by the currency of your bank account location and for payment by check, you will receive funds in the currency of sale or in US dollars.

List prices include any VAT or similar taxes that Amazon includes in the purchase price shown to end users, but those taxes are excluded from the list price when calculating your royalties. For example, if the list price for your App for an Amazon marketplace is 1.15 Euro and we display prices to an end user of that Amazon marketplace inclusive of 15% VAT, the list price for royalty calculation purposes for a sale to that end user is 1.00 Euro.  

Please note that this is different than how sales taxes are applied in the U.S.

For more details, click here.

Customer Ratings

All right! Now you’ve got apps available internationally, and you’re getting paid. How are your apps doing? You can see the reception they are getting by looking at the Reviews section in the Distribution Portal. Reviews of international apps are included as part of the Amazon marketplace that customer is shopping in. You can select the marketplace’s rating you wish to view by:

  1. From the Distribution Portal, click on your app
  2. Clicking on the Reviews link near the top of the page
  3. Click on the Left drop down button (Amazon.com in the picture below) to select the marketplace for which you would like to see reviews.

Hopefully, you’re feeling more worldly now, and you should have a good idea of how to make your app available internationally. Here is a list of resources you can read for more details:

 

February 20, 2013

alexbow

As part of our series of “how to” blog posts, we’d like to provide updated instructions on how to update your app and app’s metadata using the Amazon Mobile App Distribution Portal. Whether you’re submitting new screenshots, an updated description, or a totally new version of your app, these instructions will guide you through the process of getting the updates to your users.

Updating Metadata (screenshots, descriptions, etc.)

  • Go to the My Apps section in the Distribution Portal.
  • Click on the current live version of your app.
  • Click the “Description” or “Images & Multimedia” tab, depending on what you would like to update.
  • Click the “Edit” button (in the bottom right corner).
  • To remove an existing image, tap the “X” in the top right corner. To add a new image, click the “Upload Image” image.
  • Click the green “Save” button in the bottom right corner.
  • Click the “Submit App” button.

Updating to a New Version

  • Go to the My Apps section in the Mobile App Distribution Portal.
  • Hover your pointer over the app for which you are creating an updated version, and then choose “Add Upcoming Version” from the menu on the right.
  • If no metadata updates are required with the new version, tap the “Binary File” tab, then tap the “Upload Binary” image.
  • Review and certify your app for Export Compliance.
  • Click “Release Notes”, and then click “Edit”. Add in release notes. Click “Save”.
  • Click the “Submit App” button. 

December 19, 2012

lisamar

We’re coming up on the second anniversary of the Amazon Mobile App Distribution Program and wanted to review some of the basics, since so much has been updated in the past year. If you’re new to the Mobile App Distribution Portal and you’re looking to sign up and start submitting apps,the first step is to create a Distribution Portal account. Here’s how:

1.  Go to http://developer.amazon.com/

2.  Click on Mobile App Distribution

1_developer_amazon_com_resized

3.  Click on Create an Account

2_welcome_resized

4.  Enter your e-mail address and ensure the I am a new customer radio button is selected

5.  Click Sign in using our secure server 

3_create_acct_or_sign_in_resized

6.  Complete the fields on the Registration page and click Create account

4_registration_resized

7.  Complete the fields on the 1. Profile Information tab-note that a red asterisk denotes required fields

Optional Fields

  • Developer description - You may enter a company description in this field that will appear on the web and mobile detail pages for your apps
  • Customer support email address, phone, and website - You may provide customer support contact information


8.  Click Save and Continue 

5_profile_info

9.  Review and accept the Mobile App Distribution Agreement by clicking Accept and Continue 

6_mobile_distribution_agreement_resized

10.  Complete the fields on the 2. Royalty Payments tab as applicable and click Save and Complete 

7_royalty_payments_resized

Welcome to your Mobile App Distribution Portal account. You are now ready to submit your apps.

We’re coming up on the second anniversary of the Amazon Appstore for Android and wanted to review some of the basics, since so much has been updated in the past year. If you’re new to the Amazon Mobile App Distribution Portal and you’re looking to sign up and start submitting apps,the first step is to create a Distribution Portal account. Here’s how: go to http://developer.amazon.com, click on "Mobile App Distribution".

 

November 20, 2012

Amazon Mobile App Distribution Program

TashaKim, Public Relations Manager, GAMEVIL, is our guest blogger for this post.

 

GAMEVIL is a leading mobile games publisher and developer headquartered in Seoul, Korea,with branches in Los Angeles, California, and Tokyo, Japan. GAMEVIL has expanded their global presence over the years through an ambitious lineup of internal and third party titles localized in eight different languages. GAMEVIL specializes in mid-hardcore mobile games and prides itself on their strong following of players who enjoy their RPG-based titles.

 

At GAMEVIL,we believe that localization is one of the most important steps during post-game development. Correctly localizing a product not only promotes accessibility toa wide range of players across the world but also establishes global brand awareness. Our games are localized in over eight languages through in-house translators as well as third-party companies. Due to the geographical closeness and cultural similarities, our games are heavily popularized in Asia. Japan, in particular, holds a high percentage of downloads and monetization. We believe this is in part due to the localization of our content into the Japanese language and culture. 

 

Gamevil-1
 

Below are a few guidelines we learned in our experiences localizing to Japanese as well as other Asian countries that may help other developers:

 

Translation is Not Localization

There are countless outsourcing companies overseas that will offer a literal translation of the language, but because so many RPG titles hold a rich and deep storyline,a literal translation would render the story awkward, bland, and lose the interest of the player. At GAMEVIL Japan, we translate the game internally and often outsource to third-party translators as well. Then, we initiate a second round of in-house translations. This portion focuses more on the cultural nuances and idioms that might not have translated seamlessly.

 

Understanding the Culture: The Importance of Physical Presence

We believe that it’s not enough to simply localize into a language through text, but that a full immersion is the best way to understand a culture and what is relevant in the region. The staff members at our Tokyo office are Korean/Japanese who have a sound comprehension of the social and cultural nuances. As similar as East Asian cultures may seem, there are still dynamic differences linguistically between countries that require sensitivity and attention. Once a literal translation is done, GAMEVIL Tokyo will go through a proofread, cross checking the text of the original document and implement any necessary changes. This process usually consists of omitting phrases that are irrelevant and adding text that will vibe well with the Japanese gaming culture.

 

The Importance of Proofreading

One key aspect that remains an extreme priority in our localizing is in the final steps of proofreading. We check each line to make sure that the meanings and expressions held behind each word and phrase flows seamlessly. The last thing that you would want is to make your game seem foreign to native gamers. We will usually have at least three rounds of thorough review before the translation is released to the public.

 

Localize the Entire Experience

One common misconception is that localization simply ends with the text, but localization often applies to the whole game. We cater each game according to regions. For many of our titles, we will implement Global, Asian, and Korean servers to create an experience that is relevant and user friendly. In addition, we take a user’s environment into consideration. For many Japanese users, gameplay will take place during a commute on the subway or bus in addition to heavy gameplay at home. We try to focus on quick loading times to encourage gameplay during short sessions. For our strong RPG and sports titles, we create short side quests such as the Abyss system in ZENONIA® and Exhibition Mode in Baseball Superstars® that can be enjoyed in short sessions. Japanese users are also big gamers and enjoy the anime RPG-style of many of our titles. With an immersive storyline and high-quality visuals combined with a well-polished text, our titles have seen success in terms of downloads and purchases in Japan.

 

Gamevil-2
 

We want to put out a product that seems indigenous to the users as they play the game. Our end goal is to create a game that transcends language and cultural boundaries that can be enjoyed by people regardless of age,gender, and ethnicity.

November 18, 2012

Amazon Mobile App Distribution Program

CJ Frost, Technical Evangelist for Amazon Kindle, is our guest blogger for this post.

 

Kindle Fire tablets are designed to be rich content consumption devices. To make sure your app supports this goal and provides the best user experience, keep in mind that you are building for a tablet, not a smartphone. Many apps are derived from existing Android smartphone apps and do not scale well to the tablet form factor. Scaled apps generally do not look as good as dedicated tablet apps and are feature-limited when compared to a similar app designed specifically for a tablet environment. These scaled apps can also suffer from significant degradation in graphics quality as the UI and elements are dynamically scaled up, by the Android platform, to fit the screen.

 

Optimizing your app for tablets offers numerous benefits. It enables you to offer a rich,easy-to-navigate, and more detailed user experience, allows you to optimize user engagement, and can potentially improve your monetization opportunities.

 

To help you create the best user experience for both small and larger screened devices, we've put together a list of our top phone-to-tablet app development tips.

 

Exploit the real estate.

Apps that are scaled up from a smaller screen size generally do not look as good as dedicated tablet apps and are feature-limited when compared to a similar app designed specifically for a tablet environment.

 

Tabletizing-1
 

For example, many mobile phone apps are designed as lists of items (e.g., postings, photos) that link to new pages. When viewed on a Kindle Fire tablet, these apps appear feature-limited compared to a similar app designed specifically for a tablet environment. The lists do not fill the screen, nor do they take advantage of the potential user experience features.Apps designed to be multi-pane leverage the screen real estate so users can directly open content they'd otherwise page to on a phone app.

 

Tabletizing-2

 

For more information on how to design your app for larger screens, see the Android documentation on devicesand displays,planningfor multiple touchscreen sizes, and movingfrom multi-page to multi-pane designs.

 

Optimize for dynamic resizing.

Apps designed for phones tend to be created as portrait apps only. Apps designed for tablets are optimized to be viewed in portrait or landscape mode by providing orientation-specific layouts, as demonstrated in the Simple RSS Reader Sample,and re-size dynamically using the accelerometer to sense orientation.

 

Apps designed primarily for use on phones can also suffer from significant degradation in graphics quality as the UI and elements are dynamically scaled up, by the Android platform, to fit the screens of larger devices.

 

For more information on how to design your app for dynamic resizing, see the Android documentation on supportingdifferent screen sizes.

 

Design for interactivity.

Apps designed for phones are intended to be used with one hand and provide single-point touch elements with larger touch targets to accommodate thumb navigation. In contrast, apps designed for tablets are developed using multi-point touch elements that can accommodate tablet users'normal two-handed pinch-zoom and swipe actions, providing a richer and more dynamic user experience.

 

For more information on how to design your app for interactivity, see the Android documentation on making interactive views.

 

Increase your reach.

Apps designed for phones tend to provide a static representation of non-interactive content. Apps designed for tablets offer additional opportunities for interactivity and can help you extend the reach of your business by including partner content, such as ads or additional game offerings, as well as interactive applets, in a multi-pane design.

October 29, 2012

Amazon Mobile App Distribution Program

Kate Shoaf, Marketing and Public Relations leader at PlayTales, is our guest blogger for this post.

PlayTales is a world leader in children’s bookstore apps, that has expanded internationally, with offices in the USA, UK, Spain, Romania, and China. Founded in 2010, PlayTales develops and distributes interactive playable storybooks for children within the world’s leading children’s bookstore app for smartphones and tablets.

International distribution has become a prominent part of PlayTales’ business plan as we’ve realized the international market can open the door to millions of downloads for our apps. Although we developed the app with the intention of mainly distributing in the USA, China and the UK have become some of our top downloaders. We´ve developed and localized our app to cater to the needs of our various international customers.

Based on our experiences, there are several things developers should consider as they prepare and launch their applications:

Language options

A unique feature of our app is the several language options users can choose. The selected language of the application is based on the settings of the user’s device, but within the application itself, you can choose to view the stories in a different language. For example, all of your menus and links are in English, but you can easily view all stories in their Spanish version, French version, Italian version, and so on. We know our target users are interested in exposing their children to various languages so we’ve developed our app to make this possibility easily attainable.

Playtales-1


If you look at this screen shot, you’ll notice that all menu items are in English, while the books are available in Spanish; a unique feature that caters to our target user.


Playtales-2


There is no substitute for a native speaker

Anyone can learn a new language, but when it comes to common phrases and appropriate expressions we’ve found that working with native speakers is the best method for localization. At PlayTales we translate our stories into eight different languages and there is no substitute for working with a native speaker. When translators become a part of your localization team, they understand the message and product quality you are trying to develop within your app.

Keep an eye on currency

With the current economic crises going on it seems that currencies all over the world are constantly on a roller coaster of changing value. Because our books are available in so many different countries, monitoring exchange rates has become an important pastime within the office. We deal with Dollars, Euros, Yuan, and Pounds and the constantly changing exchange rates have kept us on our toes. It is important to monitor the currencies you deal with because you can lose business if your prices are too high, and also miss opportunities to generate more revenue if your prices are too low. Monitor your money and don’t lose out on business because of this common mistake.

Playtales-3

Direct contact with multilingual tech support

It’s almost impossible to release an app that is absolutely perfect. Listening to the comments of users can really help work out the kinks and improve your app. Within all PlayTales accounts, users have the option to directly contact our tech/localization team in whatever language they want. Because our translators work in-office, we are able to efficiently respond to everyone that contacts us in their native language. If you are going to have a multiple language app, make sure that your users can communicate with your tech team in their preferred language.

Adapt your app

Adapt your app so that it can be accessed by potentially everyone. PlayTales started out as an app only accessible through iOS devices. But as tablets like the Kindle Fire were released, it became obvious that adapting our apps to function on these devices was necessary. After teaming up with Amazon, we’ve seen a great increase in our number of downloads. Amazon’s submission module makes submitting localized features such as texts, graphics, and user interfaces a simple and quick process. Using Amazon as a distribution platform has made our app easily attainable for tablet users and has given us a chance to enter a market we hadn’t considered before. Remember that iTunes is not your only resource; you can develop and adapt your apps to function on almost any device and consequently tap into new markets.

Distributing internationally is becoming a necessity for many developers who want to stay on top of the market. Know your target users and develop your app accordingly, remember to use native speakers to help with localization, monitor exchange rates, offer tech support in various languages, and adapt your app to a changing market. Following this advice may help you find the international success we’ve experienced. New technologies are spreading to every part of the world, and along with it the newest applications. Take advantage of this opportunity and go global. 

Want the latest?

appstore topics

Recent Posts

Archive