Developer Console
Appstore Blogs

Appstore Blogs

Want the latest?

appstore topics

Recent Posts

Archive

June 08, 2012

Amazon Mobile App Distribution Program

Over six weeks after launching the Amazon In-App Purchasing API for general availability, we connected with Jeff Spears, VP of Marketing & Sales, and Sean Thompson, VP of Production, Mobile Deluxe, to chat about their company’s experience with IAP on Amazon. Headquartered in Santa Monica, Calif., Mobile Deluxe is an innovator and publisher of social mobile apps and provides free-to-play casual games that emphasize premium quality and fun game play. Mobile Deluxe titles include Big Win Slots, Solitaire Deluxe, and Big Win Blackjack. 

What motivated Mobile Deluxe to integrate with Amazon’s In-App Purchasing solution?

"Mobile Deluxe is bullish on Amazon’s foray into the app space given its expertise in merchandising, coupled with the ease of 1-Click purchase. As an organization, we made the shift from pay-to-download to free-to-play in April 2010, and our free revenues eclipsed paid revenues by July of 2011. As an industry, freemium revenues are forecasted to reach $5B in 2016, driven by smart phone adoption and user comfort with the IAP model. As a publisher we like  the freemium model since it eliminates the barrier of entry into our game, and it allows players to enjoy our products regardless of their style of play. You can either “earn” currency through game play, or purchase currency at your discretion to accelerate your game as you see fit. While we support both styles of play, from a business perspective we aren’t capping potential earnings in the latter example."

What is your monetization strategy?

"Big Win Slots monetizes through IAP, whereas Solitaire Deluxe and Big Win Blackjack use a hybrid monetization model that uses IAP and Ads. For Solitaire Deluxe, the majority of our revenue is derived from advertising, allowing our customers to play for free, unlimited. This has led to outstanding engagement and retention, and our average play time for users is in excess of 30 minutes. For Big Win Slots and Big Win Blackjack, we felt the natural progression of currency in casino apps made great sense. IAP allows us better control over our revenue stream versus fluctuating advertising CPM’s in an ad-based product, and it allows for flexibility in merchandising opportunities such as in-game sales events."

How has your experience with Amazon’s IAP solution compared to that on other platforms?

"When making an apples-to-apples comparison in May to competitive app stores, Amazon is our #1 monetizing channel in terms of $/DAU. I’m sure you’re aware of the Flurry release stating “revenue from Amazon’s Appstore is now at 89% of iTunes App Store revenue” here. We find that our Amazon $ per Daily Active User exceeds the average on other top storefronts where our apps are distributed by 87%. This speaks to the frictionless 1-Click option and Amazon’s merchandising prowess which drove “Big Win Slots” to the #1 spot in the “Casino” category."

How did you find integrating the Amazon SDK and IAP API?

 "Integration was exactly what we expected. We started from a baseline of already having integrated Google Checkout, so it was very easy to extend our existing functionality to include Amazon IAP. Amazon’s online resources were excellent. The “In-App Purchasing for Users of Google Billing” document was the perfect guide to help us get Amazon IAP integrated quickly. The API Reference was also helpful. Without question, this has been an ROI-positive experience for us. The total integration cost was about what we make in one day with Big Win Slots now."

Are there any tips you have to help other developers smoothly integrate the SDK?

"We recommend developers be forward looking when integrating any billing SDK. If at all possible, create an abstracted billing interface layer between your app(s) and the billing SDK. That will allow you to implement additional billing SDKs without having to make changes deep inside your project code. That means it is an easy tweak to add both Google and Amazon IAP solutions."

June 05, 2012

Amazon Mobile App Distribution Program

<p>The beta launch of Test Drive last week on select Android devices has many developers wondering, how does it work? Jeff Bar, Amazon Web Services Technical Evangelist, has taken the time to walk through the technology behind Test Drive on the AWS blog. Test Drive is hosted on Amazon Elastic Cloud Compute (EC2). The Amazon Appstore team can therefore easily add additional capacity whenever needed and where it makes the most sense with respect to the incoming traffic. We encourage you to check out <a href="http://aws.typepad.com/aws/2012/06/behind-the-scenes-of-the-amazon-test-drive.html">Jeff’s full post on the Amazon Web Services blog</a>.</p>

June 03, 2012

Amazon Mobile App Distribution Program

Aaron Rubenson, Director, Amazon Appstore, spoke at Open Mobile Summit in London about app monetization last week.  You can listen to the recording of the panel, App monetization: From Killer App to Killer Business, where panelists covered topics like: 

  • Monetization: What's working today and why – from app sales, freemium, virtual goods, subscription, advertising and commerce?
  • How big is the app market opportunity?
  • How can app publishers build sustainable businesses? Which business models have longevity?
  • New tools: Analytics, engagement, recommendation and discovery

 

Learn more about the panelists by reading their bios on the Open Mobile Summit website.

Moderator:


    Speakers:


    Or listen to all available recordings from Open Mobile Summit here.

    May 24, 2012

    Amazon Mobile App Distribution Program

    Jeff Hines, Kindle Fire test team, and Chirag Mehta, Michael Siwapinyoyos, and Steve Johnson, a2z Developer Center Inc., an Amazon.com company, are our bloggers for this post.

    The second post in our optimization series discusses optimizing your app’s layout for Kindle Fire and accounting for the soft key bar.

    In addition to the Settings bar that we mentioned in our previous post, Kindle Fire also has a soft key bar that is present at all times. Rather than physical buttons, Kindle Fire uses soft keys to display the standard Android buttons (i.e., Home, Back, Menu, and Search).

    Optimizing your app for the soft-key bar provides a more positive customer experience. In this post, we present optimizations and sample code to address frequently asked questions and common issues you may encounter when developing your app for Kindle Fire.

    How do I optimize my app’s layout for Kindle Fire?

    When developing exclusively for Kindle Fire, please ensure that your app is optimized for the following specifications:

    • A “Large” 7” screen size
    • A Medium Density (mdpi) screen with an abstracted LCD density of 160
    • 600 pixel width by 1024 pixel height in portrait mode

    Note that the Kindle Fire will reserve 20 pixels to display the soft key bar, as stated previously; therefore, the true pixel height, including the soft key bar, is 1004 pixels in portrait mode.

    Apps optimized for Kindle Fire should take advantage of the large screen size. Your app should scale its interactive elements accordingly. This provides the best possible customer experience.

    Use these screen specifications even if your app is not optimized exclusively for Kindle Fire. A best practice is to create resources specifically for large screen devices with medium density displays (mdpi).  

    To scale a background image, specify taking as much space as available within the layout element, using the following code snippet:

    <ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="fitXY"
    android:src="@drawable/yourbackground"
    />

    Use the Bitmap.createBitmap() method with caution. While it can scale resources to fit the screen, it can also take additional computing cycles and require a lot of additional memory.

    Please note that Android does have a built-in resource selection algorithm that will attempt to match declared resources with the characteristics of the device that your app is being displayed on. More detail regarding multiple Android screen support can be found here: http://developer.android.com/guide/practices/screens_support.html.

    How should my app handle rotation on the Kindle Fire?

    While not specifically about your app’s layout, errors with orientation changes are frequently encountered. Rotating a device from landscape to portrait (or vice versa) without the appropriate optimizations can result in the following issues:

    • Your app force closing
    • Crashing or returning users back to the carousel on Kindle Fire
    • App state or user save becoming lost or reset

    A screen orientation change will always fire the onCreate() event, destroying and recreating the activity. If you do not take this into account, you could run the risk of a negative user experience.

    To properly handle a screen rotation and avoid the issues outlined above, you can follow these best practices:

    • Name the views in your activity using the android:id attribute. When there is an orientation change in your activity, Android will persist the state of a named view and restore it once the activity is recreated. When an activity is destroyed, the state is saved only for named views.
    • The onSaveInstanceState() method is fired when an activity is destroyed. You can override this method to save your app state. Once the orientation change is complete, and your activity’s onCreate() method is called, onRestoreInstanceState() is automatically called. This method can be overridden to restore you app state. This mechanism relies on simple data structures to be used; i.e., state information needs to be structured in a Bundle object.
    • If your app needs to save a complex data structure, then you can use the onRetainNonConfigurationInstance() event. This event returns an arbitrary Object event, so you can persist as complex a data structure as is necessary for your app. Call getLastNonConfigurationInstance() inside your onCreate() method to retrieve your activity state, but remember to cast the class properly.

    Although not the best solution for all apps, preventing orientation change will allow you to avoid these issues entirely. To lock your app to a specific orientation, include the following entry in your manifest file.

    android:screenOrientation="portrait|landscape"

    How can I effectively use the soft key bar?

    The soft key bar enables simple, quick, and efficient navigation from within your app and all other aspects of the device.

    The soft key bar has two positions: maximized and minimized. When minimized, the soft key bar takes up 20 pixels and displaces your content. When maximized it takes up 60 pixels; 20 pixels displace your content and 40 pixels sit on top of your content.

    How should my app interact with Kindle Fire’s soft key bar?

    To be compatible with Kindle Fire, apps must account for and interact with the soft key bar. The soft key bar contains four different soft keys:

    • Home
    • Back
    • Menu
    • Search

    Using the Home Soft Key

    Kindle Fire uses these keys to display the standard Android device buttons. Apps must appropriately use the Home soft key to allow quick navigation to and from the Kindle Fire carousel.

    By default the Home soft key returns users to the Kindle Fire carousel. When the home key is pressed, the current activity’s onPause() method will be called before the user is presented with the carousel. When your app is re-launched, the onResume() method will be called. In order to ensure that the app returns to its previous state, your app should save state in the onPause() method and reload the state in the onResume() method.

    For more information about the onPause() and onResume() methods, please see our previous blog post in the Top 10 Optimizations for Kindle Fire series.

    Using the Back Soft Key

    The Back soft key's default action is to call finish() on the current activity and then resume the previous activity on the stack (as managed by the OS).

    If your app has launched several activities and you want the Back soft key to return the user to the previous activity, then you don't need to do anything—this is the default behavior. If the user is already at the main activity of your app, the Back soft key will call finish() on the activity and exit your app.

    A typical solution to prevent premature exiting of the app is to override the Back soft key functionality on your app's main activity to trigger a confirmation dialog. Override the function of the Back soft key in an Activity by including the following code in the Activity class:

    @Override

    public void onBackPressed() {

       // do something when the back button is pressed

       return;

    }

    Stay tuned for our next series post, as we tackle device hibernation!

    May 21, 2012

    Amazon Mobile App Distribution Program

    Test Drive is an innovation that removes the friction for customers to try new apps and games.

     

     Jerry Heinz, general manager of Test Drive, is our guest blogger for this post.

     

    Test_drive_merge

    Over a year ago we launched Test Drive on Amazon.com, allowing customers to instantly try apps from their computer web browser.  Similar to customer reviews, product descriptions, screenshots and videos, which help customers make purchase decisions on products across Amazon.com, Test Drive is an innovation that helps customers learn about new apps.  The more we remove friction for customers who want to try apps, the more apps they will try. Those customers are more likely to find apps they are excited to download.   In this way, Test Drive helps customers understand the value of premium apps and helps drive downloads of freemium apps.  Since Test Drive launched, it has been enabled on over 16,000 apps.

    Today we begin the beta rollout of Test Drive on Android phones.   Now customers can instantly try apps on their phone -- where a majority of app purchases take place -- without downloading or installing anything. 

    What do you need to do?

     

    Nothing -- no effort is required on the part of developers to be included in Test Drive.  When you submit apps and app updates we automatically test these apps for Test Drive and we strive to make all apps available for Test Drive. Today we have enabled over 5,000 apps for Test Drive on Android phones and are adding more all of the time.   

    Test Drive currently supports apps that utilize the touch screen and accelerometer inputs.  Apps that require Java Native Interface (JNI), keyboard, multi-touch, microphone, camera, gyroscope, near-field communication or GPS are not currently enabled for Test Drive.  As Test Drive adds these features, apps will be automatically re-tested for inclusion.    If you have questions about Test Drive for your app, you can contact us by emailing us at testdrive-inquiries@amazon.com.

    How do customers Test Drive your app?

     

    Customers click the “Test Drive” button on an app product page and in seconds, they can use their phone’s touch screen and accelerometer to control the app, simulating the experience of the app running on their phone.  Test Drive provides customers with the experience of running an app for the first time, as if it were freshly installed.  Customers can purchase or download the app at any point during the Test Drive experience.   

    The Test Drive beta is available for free to customers who update to the latest release of Amazon Appstore for Android on their phone (version 2.6.53 or higher).  Initially, Test Drive will be available on select phone models but over the coming months, we will roll it out to many more.  When new phone models are supported, the Test Drive button will automatically appear on apps that are enabled for Test Drive. 

    How does Test Drive work? 

    Amazon brings the Test Drive experience to Amazon.com and Android phones using the massive server fleet that comprises the Amazon Elastic Compute Cloud (EC2), a web service that provides on-demand compute capacity in the cloud for developers.  When customers click the Test Drive button, we launch a copy of the app on EC2. As customers interact with the app, we send those inputs over the phone’s WiFi Internet connection to the app running on Amazon EC2.  Our servers then send the video and audio output from the app back to the customer’s computer or phone. All this happens in real time, allowing customers to explore the features of the app as if it were running locally on their mobile device.

    May 10, 2012

    Amazon Mobile App Distribution Program

    Jeff Hines, Kindle Fire test team, and Chirag Mehta, Manager, a2z Developer Center Inc., an Amazon.com company, are our bloggers for this post. 

     

    This post is the first in a series detailing the top 10 optimizations to improve your app on Kindle Fire. These posts are designed to provide you with solutions, sample code, and the opportunity to address common issues that can arise as you optimize your app for Kindle Fire.

     

    The first topic in this series reviews one of the most frequently asked questions when developing on Kindle Fire: “My app is not optimized to interact with Kindle Fire Quick Settings, what can I do to provide a better customer experience?”

     

    What do the Quick Settings do?

     

    The Quick Settings feature is unique to the device and provides Kindle Fire owners with a host of easily accessible options, including Volume, Brightness, Wi-Fi, and more. The image below shows the Quick Settings feature and its location on the device. Like the soft key bar, the Quick Settings feature is visible at all times, including when your app is running. When optimizing for Kindle Fire, your app should account for users accessing the Quick Settings bar at any time while your app is running.

      Part_I_edit
     

    How should your app interact with Quick Settings?

     

    Invoking the Quick Settings feature should not affect the app or its current state. Some apps, like most games, should simply pause. Other apps that are more static in nature, and rely on user interaction to change state, can simply run in the background.

     

    How should apps not optimized for Quick Settings behave?

     

    If your app is not optimized for Kindle Fire and does not take into account a user interacting with the Quick Settings bar, the following scenarios could result:

     

    • Your app could force close or become unresponsive
    • Your app’s state or user save data may become lost or reset
    • Your app’s video or audio may become reset or interrupted
    • Your app may enter an unrecoverable state such as perpetual loading or black screen
    • Your app continues to actively run and does not enter a paused state

     

    How do I optimize for Quick Settings?

     

    The following code snippets (based on a set of sample apps) show you how you can optimize your app for the Quick Settings feature.

     

    This sample code shows how your app could pause if a user invokes the Quick Settings. The code saves the label position on screen, and save the score. The onPause() call is highly recommended, as it ensures your app saves its state.

     

    protected void pause() {

     

                       final Editor editor = m_state.edit();

    editor.putLong("xMove", m_xMove);

    editor.putLong("yMove", m_yMove);

    editor.putLong("xPos", m_xPos);

    editor.putLong("yPos", m_yPos);

    editor.putLong("score", m_score);

    editor.commit();

     

     // Stop the animation thread.

     if (m_animationThread != null) {

         m_animationThread.setRunning(false);

         m_animationThread = null;

        }

    }

     

    This sample code shows how your app could resume after a user leaves the Quick Settings.  The code initializes a label, determines its position on screen, and displays the score.  The onResume() call is highly recommended, as it ensures your app resumes its state.

     

    protected void resume() {

     

    m_paint = new Paint();

    m_random = new Random();

    m_state = m_context.getSharedPreferences("UserState", Context.MODE_PRIVATE);

    m_xMove = m_state.getLong("xMove", DEFAULT_X_MOVEMENT);

    m_yMove = m_state.getLong("yMove", DEFAULT_Y_MOVEMENT);

     // Set initial position of the score to the center of the screen.

    m_xPos = m_state.getLong("xPos", this.getWidth() / 2);

    m_yPos = m_state.getLong("yPos", this.getHeight() / 2);

    m_score = m_state.getLong("score", DEFAULT_SCORE);

     

     // Start the thread if it has been previously stopped. 

    if (m_animationThread == null) {

    m_animationThread = new AnimationThread(getHolder(), this);

    m_animationThread.setRunning(true);

    m_animationThread.start();

    }

    }

     

     

    Many games having actively running animations and it’s essential to pause and retain animation state when a user invokes the Quick Settings.

     

    public class PausingAnimationSampleActivity extends Activity {

     

      /** Reference to the content view, used to pause and resume the animation */

      private AnimationPanel m_panel;

     

      /** {@inheritDoc} */

      @Override

      public void onCreate(final Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

     

        m_panel = new AnimationPanel(this);

        setContentView(m_panel);

      }

     

      /** {@inheritDoc} */

      @Override

      protected void onStart() {

        super.onStart();

      }

     

    If your app pauses its animations sequences using the sample above, you can resume the animation sequence using the sample code below.

       

      @Override

      protected void onPause() {

        super.onPause();

        m_panel.pause();

      }

     

      /** Restore the user's state when returning to the application */

      @Override

      protected void onResume() {

        super.onResume();

        m_panel.resume();

      }

     

      /** {@inheritDoc} */

      @Override

      protected void onStop() {

        super.onStop();

      }

     

    }

     

     

    See the Amazon App Developer FAQ if you have more questions.

     

    This is only the first of ten optimizations in our new series, so be sure to check back for our next post on layout and the soft key bar!

    Top 10 App Optimizations for Kindle Fire – Part I

    This post is the first in a series detailing the top 10 optimizations to improve your app on Kindle Fire. These posts are designed to provide you with solutions, sample code, and the opportunity to address common issues that can arise as you optimize your app for Kindle Fire.

    The first topic in this series reviews one of the most frequently asked questions when developing on Kindle Fire: “My app is not optimized to interact with Kindle Fire Quick Settings, what can I do to provide a better customer experience?”

    What do the Quick Settings do?

     

    The Quick Settings feature is unique to the device and provides Kindle Fire owners with a host of easily accessible options, including Volume, Brightness, Wi-Fi, and more. The image below shows the Quick Settings feature and its location on the device. Like the soft key bar, the Quick Settings feature is visible at all times, including when your app is running. When optimizing for Kindle Fire, your app should account for users accessing the Quick Settings bar at any time while your app is running. 

     

     

     

     

     

    How should your app interact with Quick Settings?

     

    Invoking the Quick Settings feature should not affect the app or its current state. Some apps, like most games, should simply pause. Other apps that are more static in nature, and rely on user interaction to change state, can simply run in the background. 

    How should apps not optimized for Quick Settings behave?

     

    If your app is not optimized for Kindle Fire and does not take into account a user interacting with the Quick Settings bar, the following scenarios could result:

     

    ·         Your app could force close or become unresponsive 

    ·         Your app’s state or user save data may become lost or reset

    ·         Your app’s video or audio may become reset or interrupted

    ·         Your app may enter an unrecoverable state such as perpetual loading or black screen

    ·         Your app continues to actively run and does not enter a paused state

     

    How do I optimize for Quick Settings?

     

    The following code snippets (based on a set of sample apps) show you how you can optimize your app for the Quick Settings feature.

    This sample code shows how your app could pause if a user invokes the Quick Settings. The code saves the label position on screen, and save the score. The onPause() call is highly recommended, as it ensures your app saves its state.

     

    protected void pause() {

     

                       final Editor editor = m_state.edit();

    editor.putLong("xMove", m_xMove);

    editor.putLong("yMove", m_yMove);

    editor.putLong("xPos", m_xPos);

    editor.putLong("yPos", m_yPos);

    editor.putLong("score", m_score);

    editor.commit();

     

     // Stop the animation thread.

     if (m_animationThread != null) {

         m_animationThread.setRunning(false);

         m_animationThread = null;

        }

    }

     

    This sample code shows how your app could resume after a user leaves the Quick Settings.  The code initializes a label, determines its position on screen, and displays the score.  The onResume() call is highly recommended, as it ensures your app resumes its state.

     

    protected void resume() {

     

    m_paint = new Paint();

    m_random = new Random();

    m_state = m_context.getSharedPreferences("UserState", Context.MODE_PRIVATE);

    m_xMove = m_state.getLong("xMove", DEFAULT_X_MOVEMENT);

    m_yMove = m_state.getLong("yMove", DEFAULT_Y_MOVEMENT);

     // Set initial position of the score to the center of the screen.

    m_xPos = m_state.getLong("xPos", this.getWidth() / 2);

    m_yPos = m_state.getLong("yPos", this.getHeight() / 2);

    m_score = m_state.getLong("score", DEFAULT_SCORE);

     

     // Start the thread if it has been previously stopped. 

    if (m_animationThread == null) {

    m_animationThread = new AnimationThread(getHolder(), this);

    m_animationThread.setRunning(true);

    m_animationThread.start();

    }

    }

     

     

    Many games having actively running animations and it’s essential to pause and retain animation state when a user invokes the Quick Settings.

     

    public class PausingAnimationSampleActivity extends Activity {

     

      /** Reference to the content view, used to pause and resume the animation */

      private AnimationPanel m_panel;

     

      /** {@inheritDoc} */

      @Override

      public void onCreate(final Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

     

        m_panel = new AnimationPanel(this);

        setContentView(m_panel);

      }

     

      /** {@inheritDoc} */

      @Override

      protected void onStart() {

        super.onStart();

      }

     

    If your app pauses its animations sequences using the sample above, you can resume the animation sequence using the sample code below.

       

      @Override

      protected void onPause() {

        super.onPause();

        m_panel.pause();

      }

     

      /** Restore the user's state when returning to the application */

      @Override

      protected void onResume() {

        super.onResume();

        m_panel.resume();

      }

     

      /** {@inheritDoc} */

      @Override

      protected void onStop() {

        super.onStop();

      }

     

    }

     

     

    This post is the first in a series detailing the top 10 optimizations to improve your app on Kindle Fire. These posts are designed to provide you with solutions, sample code, and the opportunity to address common issues that can arise as you optimize your app for Kindle Fire.

    The first topic in this series reviews one of the most frequently asked questions when developing on Kindle Fire: “My app is not optimized to interact with Kindle Fire Quick Settings, what can I do to provide a better customer experience?”

    What do the Quick Settings do?

     

    The Quick Settings feature is unique to the device and provides Kindle Fire owners with a host of easily accessible options, including Volume, Brightness, Wi-Fi, and more. The image below shows the Quick Settings feature and its location on the device. Like the soft key bar, the Quick Settings feature is visible at all times, including when your app is running. When optimizing for Kindle Fire, your app should account for users accessing the Quick Settings bar at any time while your app is running.

    See the Amazon App Developer FAQ if you have more questions.

     

    This is only the first of ten optimizations in our new series, so be sure to check back for our next post on layout and the soft key bar!

    April 25, 2012

    Amazon Mobile App Distribution Program

    Providing a link directly to the Amazon Appstore for Android from within your app is an effective tool for promoting your apps. This type of link is referred to as a deep link and can be used for several purposes including:

    • Linking to the paid version of your app on the Amazon Appstore for Android
    • Linking to another one of your apps on the Amazon Appstore for Android
    • Linking customers to the Amazon Appstore for Android to write a review

    Getting Started

    The Amazon Appstore for Android will automatically pick up on specially formatted links through the use of Android Intents. These are referred to as "deep" links. You have two options for providing a deep link.

    Option 1: Link to the Amazon Retail Website

    This type of link will be picked up by the Amazon Appstore for Android as well as any installed browsers on the device. The base URL is as follows:

    http://www.amazon.com/gp/mas/dl/android?

    Option 2: Link directly to the Amazon Appstore for Android

    This specially formatted link is the preferred method and will directly open up the Amazon Appstore for Android. The base URL is as follows:

    amzn://apps/android?

     

    Link Configuration

    Both deep link formats accept parameters to tailor the link result.

    Parameter Description Amazon Client Example Amazon Retail Web Example
    s= Add a search term. Please note that you would have to use URL Encoding for special characters (e.g. spaces). amzn://apps/android?s=amazon%20mp3 http://www.amazon.com/gp/mas/dl/android?s=amazon%20mp3
    p= Link to the detail page for a specific package name. amzn://apps/android?p=com.amazon.mp3 http://www.amazon.com/gp/mas/dl/android?p=com.amazon.mp3
    asin= All apps in the catalog have a unique identifier known as an ASIN. Use this identifier to link directly to an app by its ASIN. The ASIN for an app can be found on its detail page. amzn://apps/android?asin=B004FRX0MY http://www.amazon.com/gp/mas/dl/android?asin=B004FRX0MY
    showAll=1 Show all apps by the developer of the app corresponding to the specified package name or ASIN (requires “p” or “asin” arg) amzn://apps/android?p=com.amazon.mp3&showAll=1 http://www.amazon.com/gp/mas/dl/android?p=com.amazon.mp3&showAll=1

     

    April 24, 2012

    alexbow

    Weeblets is a new app developer, producing and distributing family-oriented mobile apps based on licensed animated videos.  They launched their first app, VeggieTales Spotisode Collection, as an Amazon Appstore for Android exclusive in early March.  “We knew we’d have the best chance for a successful launch if our app, which melds VeggieTales videos with the Weeblets gaming experience, could be merchandised alongside other VeggieTales products, where the fans already were,” said Weeblets CEO Adam Somer.  “With the promotion Amazon provided us for the exclusive, which they over-delivered on, we knew that it was the best decision we could make.”

    Did the launch of your app perform to your expectations?


    Somer:  This was our first release, so we set our install targets based on research and the stories we’d heard from the many developers we’d talked to during our planning. The launch wildly exceeded our expectations.  Amazon made sure that parents who knew VeggieTales already--and parents who might not yet know, but would likely love VeggieTales--found our app.  We could have made the best app in the world and used the most popular cartoon ever and still failed if we couldn’t get it to the fans.  Discovery is a real problem for developers, and the Amazon exclusive took that problem away and allowed us to focus on the app experience.

      Blog-recommendations_border

    What do you feel are the benefits to selling your app in the Amazon Appstore for Android?


    Somer:  Our apps are based on well-known licensed animations. Amazon’s ability to merchandise alongside related products is very unique and a critical asset when trying to reach the people who already love the properties.   Amazon has a special category and Best Seller list for just for kids’ apps; also sells VeggieTales videos, books, music, and other merchandise; has millions of people looking to load up their new Kindle Fires, and the ability to target promotions to all of them. Most importantly though, Amazon had the willingness to work with us and bring forward all their unique merchandising tools in order to set up a great launch promotional program and put our app in front of a very large number of the right people.

    What’s next for Weeblets?


    Somer:  We’re looking forward to the next stage as we begin to offer new features and levels in the VeggieTales Spotisode Collection, begin to experiment with Amazon’s In-App Purchasing API and look for new ways to promote our apps with Amazon.

    April 18, 2012

    Amazon Mobile App Distribution Program

    Michael Ritter, Vice President Licensing & Distribution at Social Gaming Network, is our guest blogger for this post.  SGN connects people around the world through great games, including Skies of Glory, Fluff Friend Rescue, Warp Rush, Bird's the Word, and Night of the Living Dead Defense.


    We decided to participate in the Amazon Appstore In-App Purchasing beta program because Amazon is a ubiquitous and trusted ecommerce platform with disruptive devices, so we felt it was a perfect storm of opportunity.   Amazon's in-app purchasing solution created a great way for us to reduce friction and drive more revenue from our games, as tens of millions of people already have made purchases with Amazon.  Specifically, the Kindle Fire’s integrated storefront and marketplace work seamlessly and help drive mobile game distribution.  Through in-app purchases we are able to add additional content to our games, which help deepen the player’s experience and increase their enjoyment.  

    With our games we have tried a mix of revenue models, including paid, paid with in-app purchase, and free with in-app purchases.  Our strategy largely depends on the type of game and expected game play behavior.  In our Amazon games, the model revolves around the use of in-app purchases of virtual goods, although we are starting to experiment with ad-based games whereby users will have the ability to purchase the option to disable ads.  We feel the freemium strategy coupled with in-app purchases provides the greatest ability to delivery quality games to a large audience, while also providing free content for casual players and the ability to upgrade for those players looking for a richer experience.

    From the consumer’s point of view, Amazon has done an exceptional job creating a natural and seamless purchasing process that allow users to easily make a purchase and continue playing the game. From a developer’s point of view, we found Amazon’s technical support team to be exceptional. They were attentive, helpful and very responsive to supporting and walking us through the installation process.  

    Overall, I’d say that offering IAP in your games/apps is a great way to drive revenue as well as provide enhanced content for users to enjoy.   The Amazon Appstore SDK and In-App Purchasing APIs are well worth installing, whether your game is paid or free.

    April 16, 2012

    Amazon Mobile App Distribution Program

    What is code obfuscation?

    If you are ready to submit your app to the Amazon Appstore for Android, you might consider obfuscating your code. Obfuscating your code modifies your source and machine code to be difficult for a human to understand if your app gets decompiled. If you are concerned about your app being reverse engineered, using a tool to obfuscate your code can help a great deal.

    Caveat

    Not all of your source can be obfuscated, however. If you are implementing In-App Purchasing for your app, the Amazon Appstore relies on certain methods being available to call and provide you with information about a purchase request. If these methods get obfuscated and renamed, the Appstore will not be able to send information to your app. This post is a brief walkthrough on adding code obfuscation to your project.

    Proguard

    For android apps, Proguard is a code obfuscation tool that is provided to you once you download the Android SDK. The program shrinks and obfuscates your source code.

    Setting Up Code Obfuscation for your Project

    Prerequisites

    This walkthrough assumes you have the Android SDK and Amazon In-App Purchasing API installed and your project already completed.

    For help on installing the Android SDK, please refer to their website at http://www.developer.android.com/sdk/installing.html. Download the Amazon In-App Purchasing API by going to http://developer.amazon.com/

    Enabling Proguard for your App

    To enable Proguard for your Android app, refer to the following documentation from the Android SDK: http://developer.android.com/guide/developing/tools/proguard.html

    Edit the build.properties file inside of your project, and add the following line (if you don’t have this file in your project directory, make one):

    proguard.config = <relative or absolute path to proguard.cfg file>

     ‘Keeping’ the In-App Framework Intact

    When incorporating the in-app framework into your library, you will need to specify classes to ‘keep’ and not obfuscate. Add the following lines anywhere in your proguard.cfg file.

    -dontwarn com.amazon.**

    -keep class com.amazon.** {*;}

    -keepattributes *Annotation*

    -dontoptimize 

    Finalizing and Releasing Your App

    Now that you’ve fully set up your proguard.cfg and build.properties file, you can run Proguard through the ant  build script for your project.

    Obfuscation with another Program

    If you are using another program for code obfuscation, to ensure that in-app functionality is preserved, make sure your program does not obfuscate any class under the com.amazon.* namespace, including method names and identifiers. Your obfuscation program must also preserve annotations.

    Conclusion and Additional Resources

    The code in this article serves as a walkthrough for enabling and using Proguard for release candidates of your app. Sample apps that include the code from this article are provided in the In-App Purchasing API. Again, you can download the SDK by logging into http://developer.amazon.com/

    April 11, 2012

    Amazon Mobile App Distribution Program

    G5 Entertainment participated in Amazon Appstore for Android’s in-app purchasing (IAP) beta program because they had successfully launched over 100 games with in-app purchasing on other devices.  Larissa McCleary, Director of Marketing at G5 Entertainment writes, “We found that by offering a product with IAP, rather than a traditional "lite" or "full" set of offerings, our conversion rates went up as did our revenue on a per title basis. Although our experience on Amazon has always been great, we are thrilled now that IAP is available. This will allow us to continue our business model, but also to allow other developers to partake as well. Eventually, if more and more developers participate, we think we will experience even higher conversion rates, since players will be more familiar with what IAP is and how it functions, making the play experience even more engaging.”

    G5 Entertainment takes the approach that if the game is interesting, customers will be more engaged. The maker of popular games such as Virtual City Playground and Mahjong Artifacts, McCleary tells us, “Our basic strategy has been to make the games as fun as possible. We are working hard to optimize and improve our features on an on-going basis.” How do they decide what will be fun for players? Playing the games themselves, focus testing, and team brainstorms have all led to added content.  However, McCleary notes, “In the end we decided that we should let players decide what they want, by giving them as many in-app options as possible.”

    The G5 team reported that overall, the integration was quick and simple. McCleary says, “The code was ready in one day, and metadata was entered quickly too.” Comparing their experience to past integrations, the Amazon Appstore compared favorably. “It’s definitely easier to integrate the Amazon IAP APIs than other IAP solutions we have implemented,” notes McCleary.

    During the beta program, G5 found their main hiccup in the testing process. G5’s QA team provided feedback that helped the Amazon Appstore improve the testing process by introducing the SDK Tester. The SDK Tester allows a developer to validate common path and edge case scenarios in their app, all without uploading or configuring anything in the Amazon Developer Portal. This approach reduces the friction a developer faces when testing their apps, and allows for rapid testing across any device that supports the Amazon Appstore. Still, the IAP API was well worth integrating for G5, and the G5 team recommends “reading the documents available on Amazon’s Developer Portal and keeping your code simple.”

    About G5 Entertainment AB


    G5 Entertainment AB is a developer and publisher of high quality downloadable games.  G5 started as the leading mobile game development studio working for Electronic Arts and Disney. In 2009 G5 changed the business model to become a publisher of original games developed by G5 and over 30 partner studios in Eastern and Western Europe and the U.S.  G5 owns a number of successful game franchises, including Virtual City Playground and Mahjongg Artifacts.

    April 09, 2012

    Amazon Mobile App Distribution Program

    Announcing the availability of our Amazon Appstore for Android SDK and In-App Purchasing API to our developer community. The In-App Purchasing API enables you to offer digital content and subscriptions--such as in-game currency, expansion packs, upgrades, and magazine issues--for purchase within apps. 

    We created the In-App Purchasing API to make it easy for you to increase customer engagement and monetize your apps on Kindle Fire and other Android devices. With the Amazon Appstore for Android In-App Purchasing solution, you can reach customers with existing accounts who have already bought apps, including millions of Kindle Fire customers. Our simple, secure, and trusted 1-Click purchase experience is easy for customers to use, increasing conversion rates for purchases within your app. Plus, we designed our in-app purchasing (IAP) solution to be simple and easy to integrate so you can be up and running quickly. 

    It’s easy to get started from the Amazon Appstore Developer Portal, where you'll find documentation, sample code, tutorials, frequently asked questions, and more.  In the coming weeks, we’ll also be featuring strategies and tips from in-app purchasing beta program partners, such as Glu Mobile, G5 Entertainment, Storm8, and New York Post, here on our developer blog. You can also learn more about our IAP solution from our Introduction to IAP video.

    What do our beta program partners say about IAP on the Amazon Appstore for Android?

    “Storm8 coordinated closely with Amazon’s team during the initial launch of its IAP beta test, and within two months of integration, we saw revenue grow by tenfold from our game,” said Perry Tam, CEO and co-founder at Storm8, producer of games such as Restaurant Story, Bakery Story, Farm Story, and Fashion Story. “We immediately brought over additional Storm8 games, and in two weeks, not only did our revenue continue to grow, but we had four of the top five free apps in the Amazon Appstore. With the tremendous initial success, we definitely plan on continuing to invest in the platform and can't wait to bring additional Storm8/TeamLava games to Kindle Fire and Amazon users.

    “Amazon's in-app purchasing solution created a great way for us to reduce friction and drive more revenue from our games, as millions of people already have Amazon accounts,” said Michael Ritter, senior vice president Licensing & Distribution at Social Gaming Network, maker of Warp Rush, Dress Up! Fashion, Bird's the Word, and Night of the Living Dead Defense. “Kindle Fire already has a well-integrated storefront and marketplace to distribute mobile games. By enabling in-app purchases we are able to be more flexible in pricing. We can release free games, provide updates, and enhancements, and continue to monetize.”

    “We found that by offering a product with IAP, rather than other monetization types, our conversion rates went up as did our revenue on a per title basis,” said Larissa McCleary, director of marketing at G5 Entertainment, Inc., creator of Virtual City Playground and Mahjong Artifacts. “Although our experience on Amazon has always been great, we are thrilled now that IAP is available. This will allow us to continue our business model, but also to allow other developers to partake as well. Eventually, if more and more developers participate, we think we will experience even higher conversion rates, since players will be more familiar with what IAP is and how it functions, making the play experience even more engaging.”

    We look forward to seeing how you integrate the API into your apps!

    April 06, 2012

    lisamar

    If you missed Kindle Fire and Your App(s) Part I and Part II, be sure to check them out!

    Venezia-kindlefireapptray13_650x410__V136273826_
     

    How do you get a high-resolution icon for your app to display on Kindle Fire?

    The icons on Kindle Fire are dynamically pulled from the Amazon Appstore for Android. Side-loaded apps cannot use this feature. Once you've submitted your app, and it's live in the Amazon Appstore, your app's appropriate icon will automatically be displayed.

    You set up an emulator per the specifications in the Kindle Fire FAQ but the screen is being recognized as an x-large screen instead of a large screen, and loading assets accordingly. How do you fix this?

    The default Android emulator mis-identifies the screen size as x-large instead of large with the standard emulator configuration. To override the configuration, complete the following on your activity onCreate method (before loading layouts or anything else):

    final Configuration config = new Configuration(context.getResources().getConfiguration()); config.screenLayout = (config.screenLayout & Configuration.SCREENLAYOUT_LONG_MASK) + Configuration.SCREENLAYOUT_SIZE_LARGE; context.getResources().updateConfiguration(context.getResources().getConfiguration(), context.getResources().getDisplayMetrics());

    Taking this action will ensure the emulator configuration properly uses the large screen size and loads the appropriate assets.

    How do you keep the soft key menu on Kindle Fire visible at all times, instead of partially hidden?

    To keep the menu bar present at all times, remove any code in the activities that enables full screen mode. The soft key bar at the bottom will then be visible at all times. Sample code to remove:

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

    How do you connect Kindle Fire to Android Debug Bridge (ADB)?

    To connect Kindle Fire to your Android Debug Bridge (ADB), follow the instructions in this PDF. Kindle Fire has USB debugging enabled by default.

    Your app requires access to Google Mobile Services. Will it work on Kindle Fire?

    Apps that run on Kindle Fire do not currently have access to Google Mobile Services (GMS). If your app currently requires access to GMS apps or services, we recommend that you either remove the features that require these services or modify them to degrade gracefully when invoked (e.g., with an error message such as: "This feature is not currently available on this device.").

    Your app is optimized for the Motorola Xoom (Honeycomb 3.0-based Android). Will it work on Kindle Fire?

    In general, apps optimized for a tablet experience will work on Kindle Fire. To increase the probability that your app will be compatible with Kindle Fire, you should only use APIs that are backwards compatible with Gingerbread (Android 2.3 OS).

    What are the dimensions of the status bar (time, battery, signal strength, etc.) on Kindle Fire?

    The status bar is 40 pixels in height.

    How can you promote your app to Kindle Fire users?

    We encourage you to promote your app's availability on Kindle Fire and in the Amazon Appstore for Android using Amazon-approved marketing assets. Developer Portal account holders can find Amazon approved marketing assets and brand, trademark and marketing guidelines here:

    Amazon Appstore for Android Trademark Usage, Brand, and Marketing Guidelines

    How do you get your app marketed on Kindle Fire?

     

    All apps in the Amazon Appstore for Android are discoverable by millions of Amazon customers. Amazon's automated and targeted marketing and merchandising algorithms provide a unique and personalized shopping experience for every Amazon customer.

    The Free App of the Day is our premier promotion in the Amazon Appstore for Android.  Each day, the app we select is featured in some of the most visible placements in the Amazon Appstore.  These placements and the exposure they provide drive significant traffic to the featured apps and allow the developers to quickly grow their installed base.  In fact, it is common for apps to be downloaded more than 150,000 times on the day they are featured in the Free App of the Day.  That volume of new users can not only generate great word-of-mouth publicity for your app, but can also provide a compelling opportunity for you to monetize your apps downstream through features like in-app purchasing and advertising.

    If you'd like to submit your app for inclusion in the Free App of the Day program, please complete this form.

    March 25, 2012

    bkinney

    This post discusses how Android apps can use Amazon Web Services (AWS) to send e-mail without additional infrastructure. The sample code presented here uses Amazon Simple Email Service to record feedback from users but this same method could be used in the following scenarios:

    • automated alerts/bug reports
    • feature requests
    • blog by e-mail

    Amazon Simple Email Service (Amazon SES) is a highly scalable and cost-effective bulk and transactional email-sending service for businesses and developers. Amazon SES eliminates the complexity and expense of building an in-house e-mail solution or licensing, installing, and operating a third-party e-mail service.

    This post shows a sample for the Android platform. The complete sample code and project files are included in the AWS SDK for Android. A link to the SDK is available at the end of this post.

    To use the AWS SDK for Android, you will need AWS credentials, that is, an Access Key ID and Secret Access Key. If you haven't already signed up for Amazon Web Services, you will need to do that first to get your credentials. You can sign up for AWS here. After you sign up, you can retrieve your credentials at this page.

    The sample application described here demonstrates how Android apps can record feedback from their users through Amazon SES. It requires that you already have a verified e-mail address; this address will be used as both the sender and recipient of the message, so it is not necessary to get production access to Amazon SES before using this sample application. You can verify an e-mail address on the AWS console and read more about verification and production access in the Amazon SES Getting Started Guide. Amazon SES can also be used to create other types of e-mails not shown here.

    Creating an Amazon SES Client

    Making requests to Amazon SES requires creating a client for the service. The code below shows how to create a client on both the iOS and Android platforms.

     

    AWSCredentials credentials = new BasicAWSCredentials(                                           PropertyLoader.getInstance().getAccessKey(),                                           PropertyLoader.getInstance().getSecretKey() );AmazonSimpleEmailServiceClient sesClient =                              new AmazonSimpleEmailServiceClient( credentials );

     

    Creating E-mail

    SES will accept both regular and raw e-mails. Our application makes use of the regular method, meaning we do not have to construct our own headers. Regular e-mails require a source, destination (list of to, cc, and bcc addresses) and a message, which itself comprises a body and subject. The code below shows how to create the various parts of the email on both the iOS and Android platforms.

     

    String subjectText = "Feedback from " + nameField.getText();Content subjectContent = new Content(subjectText);    	String bodyText = "Rating: " + ratingBar.getRating() + "\nComments\n" + commentsField.getText();Body messageBody = new Body(new Content(bodyText));	    	Message feedbackMessage = new Message(subjectContent,messageBody);    	String email = PropertyLoader.getInstance().getVerifiedEmail();Destination destination = new Destination().withToAddresses(email);

     

    Sending E-mail

    Once we've constructed our e-mail components, it simply becomes a matter of creating a SendEmailRequest and passing this to the SES client we created earlier. The code below shows how to create a SendEmailRequest and send it with Amazon SES on both the iOS and Android platforms.

     

    SendEmailRequest request = new SendEmailRequest(email,destination,feedbackMessage);SendEmailResult result = clientManager.ses().sendEmail(request);

     

    References

    A sample application that includes this code is provided in the AWS SDK for Android. The download link can be found on the following pages:

    For more information about using AWS credentials with mobile applications see the following article:

    Questions?

    Please feel free to ask questions or provide comments in the Mobile Development Forum.

    March 19, 2012

    Amazon Mobile App Distribution Program

    On the occasion of our first birthday, we’d like to take this opportunity to thank our developer community. It’s been a busy year here at the Amazon Appstore for Android. Our store has grown tremendously since launching one year ago, and we could not have made it happen without partners like you.  In our first year, customers have already bought millions of apps and games for their Kindle Fire and other Android devices. The Amazon Appstore has also grown its selection nearly eight-fold since launch, from 4,000 apps to over 31,000.

    During our first year, we introduced Kindle Fire. Since launch, Kindle Fire has helped our developer community connect their apps with engaged customers. "At Quickoffice, we've experienced a massive lift in our Android app sales since the launch of Kindle Fire. The Amazon Appstore has been a great showcase for our app, and we've seen significant gains in conversion rates compared to other app stores based on the integrated Amazon buying experience," said Alan Masarek, CEO of Quickoffice, Inc.

    Over the past year, we’ve been listening to your feedback, and we’re working on enhancing our tools and resources to meet your needs. We created blog posts to help your apps fly through testing, to help you message customers within your apps, and to help you develop for Kindle Fire.  Over the last year, we released enhancements to our Developer Portal, including updated developer reports, and new user permissions functionally.  And, we have more upgrades in the works for our second year of operations.  We hope to support you with tools that allow you to continue delighting customers with your apps and games.  In the coming weeks and months, check back here on our developer blog—we’ll be posting information on enhancements.   

    We know many of our developers are Amazon customers as well.  To celebrate our first birthday, we worked with several of our developers to offer special discounts on some of our most popular apps. The Amazon Appstore Birthday event will get extra customer visibility from a dedicated Amazon Appstore Birthday page that will display new deals daily as well as more of customers’ favorite apps. The Amazon Appstore also kicks off its Amazon Appstore for Android Birthday Giveaway and will award a Kindle Fire to eight lucky winners who enter the sweepstakes by March 31st.

    Thank you for your partnership! We look forward to collaborating with you to bring customers great apps for another year!

    Amazon_Appstore_Birthday_Banner
     

    Want the latest?

    appstore topics

    Recent Posts

    Archive