Appstore Blogs

Appstore Blogs

Want the latest?

appstore topics

Recent Posts

Archive

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
 

March 16, 2012

lisamar

KF_image_from_PDP
 

A few months ago, Amazon introduced Kindle Fire and, here on the blog, we talked about how you can get your app(s) onto Kindle Fire. We endeavor to provide our developers with useful, relevant information to help you develop your app(s) and we continue to get queries about developing for Kindle Fire. We have more information to share!

Your app requires an SD card—does Kindle Fire have one?

Kindle Fire has an internal SD card that your app can write to. Kindle Fire's SD card is internal and is not removable. You should not have to change your app for Kindle Fire if it currently stores data on the SD card. Using getExternalStorageDirectory() will enable you to write to the internal SD card on Kindle Fire.

Your app uses Adobe Air—will it work on Kindle Fire?

Yes, Adobe Air 2.7.1.1999 is pre-installed on Kindle Fire. If you wish to create and publish Adobe AIR 3 applications, you may do so by packaging them as 'captive runtime' apps. Note that captive runtime apps will not support on-device debugging.

Your app needs the support of an e-mail client—is that a feature of Kindle Fire?

Kindle Fire has a pre-installed e-mail client that will respond to both mailto links and e-mail intents.

How do you configure the supports-screens element for compatibility with Kindle Fire?

To ensure your app is compatible with Kindle Fire, specify <supports-screen android:largeScreens="true"/> in your manifest file.

Your app has audio—what audio playback does Kindle Fire support?

Kindle Fire supports the following audio formats natively:

  • AAC LC/LTP
  • HE-AACv1 (AAC+)
  • HE-AACv2 (enhanced AAC+)
  • AMR-NB
  • AMR-WB
  • MP3
  • MIDI
  • Ogg Vorbis
  • PCM/WAVE

You plan to upgrade your app to Android v4.x (Ice Cream Sandwich)—will your upgraded app work on Kindle Fire?

To increase the probability that your app will be compatible with Kindle Fire, you should only use Android 4.x APIs that are backwards compatible with Android 2.3 Gingerbread.

Your app has lots features—what specific features does Kindle Fire support?

Kindle Fire supports the features in the following list. To ensure your app is compatible with Kindle Fire, it should only use features found in this list.

KF_feature_table
 

March 02, 2012

lisamar

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

Fire Maple Games is a mobile app developer located in Garnet Valley, PA. Their adventure game app, The Secret of Grisly Manor, continues to be a best-selling title since the launch of the Amazon Appstore for Android in March 2011. The sharp graphics and engaging storyline of this hidden object game continue to amass downloads and excellent reviews.

Fire Maple Games has taken advantage of many Amazon Appstore offerings including the Free App of the Day promotion. The Free App of the Day program has offered customers a paid app, for free, every day since the launch of the store. Additional, Fire Maple Games capitalized on app placement throughout the store and targeted e-mail campaigns. They also optimized their application for the Kindle Fire. By leveraging the Amazon Appstore platform, downloads of The Secret of Grisly Manor have seen significant gains on a weekly basis.

Initially engaged by the Free App of the Day promotion out of pure curiosity—what does and does not work when selling apps?—Fire Maple Games was pleased with the level of exposure they got from participating. “It was a fantastic increase of our user base,” said Joe Kauffman, owner of Fire Maple Games. “It wasn’t directly profitable, of course, as we were giving the game away for free, but now many more people have been exposed to the company and our games.” Kauffman has gotten many e-mails from people saying they would definitely buy the company’s next game. “For an indie developer on a limited budget, it was a great way to get the game into lots of people's hands,” he added.

Fire Maple Games joined the Amazon Appstore in November 2010 and was part of the Amazon Appstore launch four months later. “Amazon is such a great brand with such a powerful presence…we had high hopes for the Amazon Appstore for Android,” Kauffman said. They were also intrigued by the approval process and liked “that the apps would be curated, so a nicer selection of apps could be promoted.”

Lost_City_1
 

Fire Maple Games recently added a second adventure game, The Lost City, to their Amazon Appstore catalog, and the app has been getting stellar reviews. With the traction Fire Maple Games has seen thus far, new titles are sure to be a hit. “We use previous games to cross-sell new games,” Kauffman explained. “It seems to be working pretty well…both games have stayed within the Top 25!”

Kauffman revealed that the company hasn’t gotten any specific emails from customers regarding their experience with the Amazon Appstore and that that is a good thing: “It means that the process is pretty seamless. I recommend that everyone partner with Amazon! It is a nice, curated app-store with a great customer experience.”

January 31, 2012

Amazon Mobile App Distribution Program

Amazon is excited to announce an update to reports within the Amazon Appstore Developer Portal. Reports provide developers with important historical and trend data for sales and earnings. Improving the developer interface and strengthening service capability were two of the most important factors we focused on for this update.

During the past two months, we beta tested the update with more than 500 developers. Many of these developers provided valuable feedback that we incorporated into the final design. 

Starting today, we will begin rolling out this update to all developers on the Amazon Appstore Developer Portal.  You will notice the following changes:

  • Infrastructure updates to enhance scalability and speed
  • Enhanced sales and units reporting interface and navigation
  • Streamlined earnings report with at-a-glance views of your monthly earnings statements
  • Expanded selection of downloadable CSV reports

We encourage developers to explore the new reports and provide feedback via the Contact Us link on the Amazon Appstore Developer Portal homepage or by clicking on the Submit Feedback flag on your Reports page.

January 26, 2012

Yosuke Matsuda

Amazon DynamoDB is a fast, highly scalable, highly available, cost-effective, non-relational database service. Amazon DynamoDB removes traditional scalability limitations on data storage while maintaining low latency and predictable performance. The sample mobile application described here demonstrates how to store user preferences in Amazon DynamoDB. Because more and more people are using multiple mobile devices, connecting these devices to the cloud, and storing user preferences in the cloud, enables developers to provide a more uniform cross-device experience for their users.

This article shows sample code for the Android platform. The complete sample code and project files are included in the AWS SDK for Android. Links to the SDK are available at the end of this article.

To use the sample app, you'll need to deploy a token vending machine (TVM). A TVM is a cloud-based application that manages AWS credentials for users of mobile applications. To deploy the TVM, you'll first need to obtain your own AWS credentials: an Access Key ID and Secret Key.

If you haven't already signed up for Amazon Web Services (AWS), you will need to do that first to get your AWS credentials. You can sign up for AWS here. After you sign up, you can retrieve your credentials at this page. The credentials will be used to set up the TVM to authenticate users of AWS mobile applications. Sample Java web applications are available here: Anonymous TVM and Identity TVM (this sample uses Anonymous TVM).

Overview

In Amazon DynamoDB, a database is a collection of tables. A table is a collection of items, and each item is a collection of attributes. For our app, we create a single table to store our list of users and their preferences. Each item in the table represents an individual user. Each item has multiple attributes, which include the user's name and their preferences. Each item also has a hash key—in this case, userNo—which is the primary key for the table.

The app demonstrates how to add and remove users, and modify and retrieve their preference data. The app also demonstrates how to create and delete Amazon DynamoDB tables.

Registering the Device with Token Vending Machine

In order to create an Amazon DynamoDB client, we must first register the mobile device with the token vending machine (TVM). For this sample, we use the Anonymous TVM to register the device. Then we store the UID and key returned by the TVM on the device.

RegisterDeviceRequest registerDeviceRequest = 
                                        new RegisterDeviceRequest(this.endpoint, this.useSSL, uid, key);ResponseHandler handler = new ResponseHandler();response = this.processRequest(registerDeviceRequest, handler);if (response.requestWasSuccessful()) {	AmazonSharedPreferencesWrapper.registerDeviceId(this.sharedPreferences, uid, key);}

Retrieving the Temporary Credentials from Token Vending Machine

The following code demonstrates how to request that the TVM generate temporary credentials, and how to store the returned credentials on the device.

Request getTokenRequest = new GetTokenRequest(this.endpoint, this.useSSL, uid, key);ResponseHandler handler = new GetTokenResponseHandler(key);GetTokenResponse getTokenResponse = 
                                (GetTokenResponse) this.processRequest(getTokenRequest, handler);if (getTokenResponse.requestWasSuccessful()) {	AmazonSharedPreferencesWrapper.storeCredentialsInSharedPreferences(			this.sharedPreferences, getTokenResponse.getAccessKey(),			getTokenResponse.getSecretKey(),			getTokenResponse.getSecurityToken(),			getTokenResponse.getExpirationDate());}

Creating an Amazon DynamoDB Client

To make service requests to Amazon DynamoDB, you need to instantiate an Amazon DynamoDB client. The code below shows how to create an Amazon DynamoDB client for Android using the stored temporary credentials from the TVM.

AWSCredentials credentials = AmazonSharedPreferencesWrapper		.getCredentialsFromSharedPreferences(this.sharedPreferences);AmazonDynamoDBClient ddb = new AmazonDynamoDBClient(credentials);

Creating a User List (Table Creation)

Each user's preferences are stored as items in an Amazon DynamoDB table. The following code creates that table using the client we created above. Every Amazon DynamoDB table require a hash key. In this sample, we use userNo as the hash key for the table.

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();KeySchemaElement kse = new KeySchemaElement()
                                                    .withAttributeName("userNo")
                                                    .withAttributeType(ScalarAttributeType.N);KeySchema ks = new KeySchema().withHashKeyElement(kse);ProvisionedThroughput pt = 
                new ProvisionedThroughput().withReadCapacityUnits(10l).withWriteCapacityUnits(5l);CreateTableRequest request = new CreateTableRequest()		                               .withTableName(PropertyLoader.getInstance().getTestTableName())                                               .withKeySchema(ks)
                                               .withProvisionedThroughput(pt);ddb.createTable(request);

Checking the Status of the Table (Table Description)

Before we can move to the next step (creating users), we must wait until the status of the tables is ACTIVE. To retrieve the status of the table, we use a describe table request. This request returns information about the table such as the name of the table, item count, creation date and time, and its status.

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();DescribeTableRequest request = new DescribeTableRequest()		.withTableName(PropertyLoader.getInstance().getTestTableName());DescribeTableResult result = ddb.describeTable(request);String status = result.getTable().getTableStatus();

Creating Users (Item Creation)

For each user, we'll create an item in the table. An item is a collection of attribute/value pairs. For each item, we'll have three attributes: userNo, firstName, and lastName. These are added to a put item request in order to create the item.

HashMap<String, AttributeValue> item = new HashMap<String, AttributeValue>();AttributeValue userNo = new AttributeValue().withN(String.valueOf(i));item.put("userNo", userNo);AttributeValue firstName = new AttributeValue().withS(Constants.getRandomName());item.put("firstName", firstName);AttributeValue lastName = new AttributeValue().withS(Constants.getRandomName());item.put("lastName", lastName);PutItemRequest request = new PutItemRequest().withTableName(		PropertyLoader.getInstance().getTestTableName()).withItem(item);ddb.putItem(request);

Deleting Users (Item Deletion)

To remove a user from the list simply means deleting the corresponding item from the table. We specify the item we wish to delete using the hash key for the item.

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();Key primaryKey = new Key().withHashKeyElement(targetValue);DeleteItemRequest request = new DeleteItemRequest().withTableName(		PropertyLoader.getInstance().getTestTableName()).withKey(primaryKey);ddb.deleteItem(request);

Listing Users (Table Scan)

We can retrieve a collection of users with a scan request. A scan request simply scans the table and returns the results in an undetermined order. Scan is an expensive operation and should be used with care to avoid disrupting your higher priority production traffic on the table. See the Amazon DynamoDB developer guide for more recommendations for safely using the Scan operation.

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();ScanRequest request = new ScanRequest();request.setTableName(PropertyLoader.getInstance().getTestTableName());ScanResult result = ddb.scan(request);ArrayList<HashMap<String, AttributeValue>> users = 
                      (ArrayList<HashMap<String, AttributeValue>>) result.getItems();

Retrieving a User's Preferences (Item Retrieval)

Knowing a user's userNo, the hash key of the table, it is easy to find the item for the user. This next snippet shows how to get all the attributes for an item using the hash key.

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();AttributeValue userNoAttr = new AttributeValue().withN(String.valueOf(userNo));Key primaryKey = new Key().withHashKeyElement(userNoAttr);GetItemRequest request = new GetItemRequest().withTableName(		PropertyLoader.getInstance().getTestTableName()).withKey(primaryKey);GetItemResult result = ddb.getItem(request);HashMap<String, AttributeValue> userPreferences = 
                                        (HashMap<String, AttributeValue>) result.getItem();

Modifying User Preferences (Item Update)

The hash key also makes it easy to update an attribute for an item.

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();AttributeValue av = new AttributeValue().withS(value);AttributeValueUpdate avu = new AttributeValueUpdate().withValue(av).withAction(AttributeAction.PUT);Key primaryKey = new Key().withHashKeyElement(targetValue);HashMap<String, AttributeValueUpdate> updates = new HashMap<String, AttributeValueUpdate>();updates.put(key, avu);UpdateItemRequest request = new UpdateItemRequest()		.withTableName(PropertyLoader.getInstance().getTestTableName())		.withKey(primaryKey).withAttributeUpdates(updates);ddb.updateItem(request);

List Deletion (Table Deletion)

The easiest way to remove all the user preference data is to delete the Amazon DynamoDB table. The following code shows how:

AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();DeleteTableRequest request = new DeleteTableRequest()		.withTableName(PropertyLoader.getInstance().getTestTableName());ddb.deleteTable(request);

Conclusion and Additional Resources

The code in this article demonstrates how to use Amazon DynamoDB as a storage device for your mobile application. You can find more information about Amazon DynamoDB here.

Sample apps that include the code from this article are provided with the AWS SDK for Android. You can download the SDK using the following link:

AWS SDK for Android

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

Authenticating Users of AWS Mobile Applications with a Token Vending Machine

Questions?

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

January 06, 2012

Amazon Mobile App Distribution Program

Interested in learning more about selling your apps on Amazon.com and Kindle Fire? Aaron Rubenson, director of the Amazon Appstore for Android, will offer insight at CES into how developers can get in front of millions of Amazon customers  – and make money – when they sell their apps at Amazon.com.

Learn about submitting apps for Kindle Fire,  which topped Amazon.com’s “Best of 2011” list as the best-selling, most wished for, and most gifted product as determined by Amazon.com customers. Throughout December, customers purchased well over 1 million Kindle devices per week. Also on the agenda is information about programs such as in-app purchasing and Test Drive, which lets customers try an app on their computers before they buy.

  AaronRubenson

Rubenson and other Amazon Appstore representatives will be available for informal discussions after the presentation.

Who:  Aaron Rubenson, Director, Amazon Appstore for Android

What:  “Selling Apps on Amazon.com and Kindle Fire”

Where:  The Venetian Meeting Rooms, Veronese 2404

When:  Friday, January 13, 9 a.m. – no R.S.V.P. needed

December 21, 2011

lisamar

One great benefit to having your app on the Amazon Appstore for Android is cross-promotion. Cross-promotion is a form of marketing where customers of one product are targeted with promotion of a related product. Amazon.com has millions of customers, and those customers purchase tens of thousands of products every day. With so many great products (and customers), we have the unique ability to employ cross-promotion, even across product categories.

So, what do you need to do? Nothing! By default, apps that are published in the Amazon Appstore qualify to get picked up in the cross-merchandising widgets and promotions.

In the below image, you’ll see the product detail page for an Android app. In the Customers Who Bought Related Items Also Bought widget right below the general app information, you see that our site is automatically recommending a USB cable to the customer who is interested in this app—simply because other customers purchased similar items.

Calengoo-other-items

 

Similarly, in the following image, you can see the Customers Who Bought This Item Also Bought widget. This form of cross-promotion allows customers to make informed decisions about which apps they purchase while also showing them additional apps that might interest them.

Customers_Who_Bought_This_Item_Also_Bought

Another Amazon widget that can benefit your app is the What Other Items Do Customers Buy After Viewing This Item? widget. Below, the widget is appearing on the product detail page for a tablet device and is advertising an app that was purchased by a customer who also purchased the tablet.

Automated Merchandisting slot promotes recent FAD_edit

All of the above-mentioned widgets are automated, but we also have the ability to manually cross-promote your app. In the following image, note that on the product detail page for a hardcover copy of this Dr. Seuss book, we’ve added a recommendation for the related Android app.

Cross-promotion screenshot

Cross-promotion means customers can discover your app in a number of ways—not just by searching on the title or category. And over time, your app sales have the potential to increase, purely based on this cross-promotion. That’s never a bad thing, right?

December 16, 2011

gdierkes

Overview

This article discusses how mobile apps can use Amazon Web Services to communicate with users via e-mail, short message service (SMS), and other communication channels. The sample code presented here uses Amazon Simple Notification Service and Amazon Simple Queue Service. Amazon Simple Notification Service (Amazon SNS) makes it easy to set up, manage, and send notifications from mobile apps and have these notifications delivered immediately to any users who have chosen to subscribe to them. Amazon SNS provides a highly scalable, flexible, and cost-effective method to implement such notification systems.

Amazon Simple Queue Service (Amazon SQS), also discussed here, offers a reliable, highly scalable, hosted queue for storing messages. The types of messages supported by Amazon SQS include—but aren't limited to—the notification messages sent from Amazon SNS.

Together, Amazon SNS and Amazon SQS enable developers to create apps that can message large numbers of users in multiple formats quickly and easily.

The sample app described here demostrates how mobile apps can message their users through Amazon SNS and Amazon SQS. The sample demonstrates how to use Amazon SNS to create a topic, subscribe users to that topic, and publish notifications to the topic. Subscribers to the topic can receive their notifications via e-mail, SMS, or an Amazon SQS queue. Amazon SQS and Amazon SNS can also be used to create other types of communication systems not shown here.

This article shows sample code but 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 article.

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 (AWS), 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.

Creating Amazon SQS and Amazon SNS Clients

Making requests to Amazon SNS and Amazon SQS requires creating a client for each service. The code below shows how to create a client:

AWSCredentials credentials =      new BasicAWSCredentials( Constants.ACCESS_KEY_ID, Constants.SECRET_KEY );		AmazonSNSClient snsClient = new AmazonSNSClient( credentials );AmazonSQSClient sqsClient = new AmazonSQSClient( credentials );

Topic Creation

Amazon SNS uses topics to route notifications from publishers to subscribers. The term publisher refers to an app that sends notifications; the term subscriber refers to an entity, such as a user, that receives notifications. Topics provide a junction point for publishers and subscribers to communicate with each other. Once a topic is created, subscribers can be added to the topic and receive notifications/messages. The DisplayName attribute is added to a topic to allow notifications to be sent via SMS.

CreateTopicRequest ctr = new CreateTopicRequest( Constants.TOPIC_NAME );CreateTopicResult result = snsClient.createTopic( ctr );	        SetTopicAttributesRequest tar      = new SetTopicAttributesRequest( result.getTopicArn(), "DisplayName", "MessageBoard" );this.snsClient.setTopicAttributes( tar );  

Subscribing to Topics

In order for notifications sent to a topic to be received, you have to subscribe an endpoint to that topic. The endpoint corresponds to a recipient. An endpoint is an e-mail address, SMS number, web server, or Amazon SQS queue. If you are using an Amazon SQS queue, it needs to be configured to receive notification messages from Amazon SNS. Once you subscribe an endpoint to a topic and the subscription is confirmed, the endpoint will receive all messages published to that topic.

SubscribeRequest sr = new SubscribeRequest( this.topicARN, "email", email );this.snsClient.subscribe( sr );

Listing a Topic's Subscribers

Listing the subscribers for a topic provides the endpoint and corresponding protocol for each subscriber who receives notification via that topic. The protocol for an endpoint depends on the type of endpoint. For example, endpoints that are e-mail addresses have a protocol of SMTP.

ListSubscriptionsByTopicRequest ls = new ListSubscriptionsByTopicRequest( this.topicARN );ListSubscriptionsByTopicResult response = this.snsClient.listSubscriptionsByTopic( ls );return response.getSubscriptions();

Publishing Notifications

Publishers send notifications to topics. Once a new notification is published, Amazon SNS attempts to deliver that notification to every endpoint that is subscribed to the topic.

PublishRequest pr = new PublishRequest( this.topicARN, message );this.snsClient.publish( pr );	

Unsubscribing from Topics

Unsubscribing removes the endpoint from the topic and stops notifications from being received.

UnsubscribeRequest unsubscribeRequest = new UnsubscribeRequest( subscriptionArn );this.snsClient.unsubscribe( unsubscribeRequest );

Creating a Queue

The first task in using Amazon SQS is to create a queue. Once a queue is created it can be subscribed as an endpoint to an Amazon SNS topic.

CreateQueueRequest cqr = new CreateQueueRequest( Constants.QUEUE_NAME );CreateQueueResult result = this.sqsClient.createQueue( cqr );return result.getQueueUrl();

Subscribing a Queue to a Topic

Here's how to subscribe a queue to a topic. However, for the queue to receive messages, you must also add a policy to the queue. See below.

String queueArn = this.createMessageQueue();		SubscribeRequest request = new SubscribeRequest();request.withEndpoint( queueArn ).withProtocol( "sqs" ).withTopicArn( this.topicARN );		this.snsClient.subscribe( request );

Adding a policy to a Queue

In order for a queue to receive messages from a topic, the queue must have a policy object that specifies that the topic has sqs:SendMessage permission for the queue. For further details see the Amazon SNS FAQ. For more information about queue policies see the Amazon SQS documentation. Once the policy object is created it can be attached to the queue as follows:

HashMap attributes = new HashMap();attributes.put("Policy", generateSqsPolicyForTopic( queueArn, this.topicARN ) );this.sqsClient.setQueueAttributes(new SetQueueAttributesRequest( queueUrl, attributes ) );

Receiving Messages from a Queue

Now that a message is in the queue, you can receive it, which requires getting it from the queue. When requesting to get a message from the queue, you can't specify which message to get. Instead, you simply specify the maximum number of messages you want to get (up to 10), and Amazon SQS returns up to that maximum number. Because Amazon SQS is a distributed system and the particular queue we're working with here has very few messages in it, the response to the receive request might be empty. Therefore, you should rerun the sample until you get the message. You should design your own app so that it continues to poll the queue until it gets one or more messages.

ReceiveMessageRequest rmr = new ReceiveMessageRequest( this.queueUrl );rmr.setMaxNumberOfMessages( 10 );rmr.setVisibilityTimeout( 30 );ReceiveMessageResult result = this.sqsClient.receiveMessage( rmr );

Delete Messages from a Queue

Amazon SQS doesn't automatically delete a message after returning it to the app. By default, it keeps the message to protect against the case where the receiving app fails or loses its connection. In these cases, a different app—or perhaps a new instance of the same app— might attempt to get the message.

To delete the message, you must send a separate request. You specify which message to delete by providing the receipt handle that Amazon SQS returned when you received the message. You can delete only one message per call. Deleting the message acknowledges that you've successfully received and processed it.

DeleteMessageRequest request      = new DeleteMessageRequest( this.queueUrl, message.getReceiptHandle() );this.sqsClient.deleteMessage( request );

References

A sample app that includes this code is provided with the SDK. The download link can be found on the following page:

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

Questions?

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

November 30, 2011

gdierkes

Screen shot 2011-11-29 at 10.40.45 AM

This article highlights the benefits of connecting mobile devices to the cloud while also presenting an Amazon SimpleDB use case. Amazon SimpleDB is a highly available, flexible, and scalable non-relational data store that offloads the work of database administration. The app described here demonstrates how to store a high score list or leader board in SimpleDB. The app enables the user to view the high scores sorted by name or score, add and remove scores, and more. This article shows sample code 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 article.

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

Overview

SimpleDB stores data in domains. Each domain is a collection of items and each item is a collection of attribute/value pairs. For the app, we create a single domain to store our high score list. Each item in the domain represents an individual player. The items will have two attributes, the player's name and their score. Items also have a unique identifier called the item name that, in this case, is equal to the player's name. Storing the player's name and score as item attributes enables us to sort the items by name or score.

The app demonstrates how to add and remove individual players, sort the scores by player name or score, and retrieve a single item from the domain. The app also demonstrates how to create and delete SimpleDB domains.

Creating a SimpleDB Client

Making requests to SimpleDB requires a client. Creating a SimpleDB client for Android is shown below.

AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY_ID, SECRET_KEY);AmazonSimpleDBClient sdbClient = new AmazonSimpleDBClient( credentials);

High Score List Creation (Domain Creation)

Individual player scores are stored as items in a SimpleDB domain. This requires that we create the domain first. Using the appropriate client that we created above, we can use the following code to create the domain.

CreateDomainRequest cdr = new CreateDomainRequest( HIGH_SCORES_DOMAIN );sdbClient.createDomain( cdr );

Add Score (Item Creation)

An item is a collection of attribute/value pairs. For our items, we create two attributes, one for the player's name and one for the player's score. These are added to a request along with an item name in order to create the item. Because a player appears at most only once on the high score list, we use the player's name to uniquely identify each item. All data in SimpleDB are stored as strings, therefore numbers must be zero padded if you want to sort them properly. The AWS SDK for Android includes a utility to pad numbers, used below.

String paddedScore = SimpleDBUtils.encodeZeroPadding( score, 10 );		ReplaceableAttribute playerAttribute =     new ReplaceableAttribute(PLAYER_ATTRIBUTE, player, Boolean.TRUE);ReplaceableAttribute scoreAttribute =     new ReplaceableAttribute(SCORE_ATTRIBUTE, paddedScore, Boolean.TRUE);		List attrs = new ArrayList(2);attrs.add( playerAttribute );attrs.add( scoreAttribute );		PutAttributesRequest par = new PutAttributesRequest(HIGH_SCORES_DOMAIN, player, attrs);		sdbClient.putAttributes( par );

Remove Score (Item Deletion)

Removing a score from the list simply means deleting an item from the domain. Deleting an item requires the unique name for the item you wish to delete. In SimpleDB, deleting an item is done by removing all the attributes from that item. Invoking deleteAttributes with no specified attributes removes all the attributes by default.

DeleteAttributesRequest dar = new DeleteAttributesRequest( HIGH_SCORES_DOMAIN, player );sdbClient.deleteAttributes( dar );

Player View (Getting an Item)

Knowing an item's name makes it easy to find the item. This next snippet shows how to get all the attributes for an item using the item name. Note that items may contain many attributes and values.

GetAttributesRequest gar = new GetAttributesRequest( HIGH_SCORES_DOMAIN, player );GetAttributesResult response = sdbClient.getAttributes(gar);

List View and Sorting (Select)

Getting a collection of scores, sorted by player name or the score itself requires the use of a select request. A select request uses a simple query language to determine which items to match and what data to return and how. Select requests are paginated because the number of items matching the query can be large. Therefore, select requests return a next token that enables you to "page" through the data in an ordered fashion. The code here shows how to return items ordered by score from highest to lowest. Only the score and player attributes are returned. More information regarding SimpleDB queries can be found in a reference article linked below.

String select = "select player, score from HighScores where score >= '0' order by score desc";SelectRequest selectRequest = new SelectRequest( select ).withConsistentRead( true );selectRequest.setNextToken( nextToken );		SelectResult response = sdbClient.select( selectRequest );nextToken = response.getNextToken();

List Deletion (Domain Deletion)

The quickest and easiest way to remove the entire high score list would be to delete the SimpleDB domain. Here is how to do that.

DeleteDomainRequest ddr = new DeleteDomainRequest( HIGH_SCORES_DOMAIN );sdbClient.deleteDomain(ddr);

Conclusion

The code in this article demonstrates how to use Amazon SimpleDB as an indexed storage device for your app. The complete sample app is included as part of the AWS mobile SDKs, which are linked below. The reference section also contains a link to a SimpleDB article which discusses writing queries for SimpleDB in detail.

References

Find more information about SimpleDB here.

A sample app that includes this code is provided with the AWS SDK for Android

For more information about using AWS credentials with apps see the article, Authenticating Users of AWS Mobile Applications with a Token Vending Machine
 

Questions?

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

November 28, 2011

lisamar

KO-aag-apps._V162619036_
 

Recently Amazon released Kindle Fire, our newest addition to the Kindle family that showcases a color touch display and provides instant access to the Amazon Appstore for Android and Amazon’s massive selection of digital content, as well as free storage in the Amazon Cloud.

Kindle Fire puts Amazon’s digital powerhouse of content at customers’ fingertips. In addition to the thousands of popular apps and games available in the Amazon Appstore for Android, customers can also choose from over 18 million movies, TV shows, songs, magazines, and books—and all of their Amazon content is automatically stored in the Amazon cloud, free of charge. Web browsing is simple and fast with Amazon Silk and an even better experience because of the Kindle Fire’s vibrant color touchscreen with an extra-wide viewing angle. All this, plus a fast, powerful dual-core processor, and an unbeatable price, make us proud of this newest member of our Kindle family.

Don’t take our word on it though—we’re not the only ones admiring Kindle Fire!

The first easy-to-use, affordable small-screen tablet, the Amazon Kindle Fire is revolutionary...I can't emphasize this "ease of use" thing enough. More than anything else, that's what's been holding non-iPad tablets back. Amazon cracked it. End of story." - PC Mag

"The Kindle Fire is a 7-inch tablet that links seamlessly with Amazon's impressive collection of digital music, video, magazine, and book services in one easy-to-use package. It boasts a great Web browser, and its curated Android app store includes most of the big must-have apps (such as Netflix, Pandora, and Hulu). The Fire has an ultra-affordable price tag, and the screen quality is exceptional for the price." – CNET

How do you get your app onto the Kindle Fire?

Submit it! Simply join the Amazon Appstore Developer Program, if you haven’t already, and submit your app using the Amazon Appstore Developer Portal just as you would if you were submitting to our store for any other supported Android device. All apps will go through regular Amazon Appstore testing, as well as testing for Kindle Fire.

What are the requirements for your app to work on Kindle Fire?

For your app to work on Kindle Fire, it needs to be compatible with the device's specifications. At a high level, it must be optimized for non-Google Mobile Services (GMS), Android 2.3.4 (Gingerbread), and a 7" screen with a resolution of 1024 x 600. Your app cannot require a gyroscope, camera, WAN module, Bluetooth, microphone, GPS, or micro-SD to function. In addition, your app must not be a theme or wallpaper that manipulates the user interface of the device. As with any other app submission to the Amazon Appstore for Android, your app will also need to comply with our Content Guidelines. For additional information, please visit our Kindle Fire FAQs.

What if your app was already submitted - will it be considered?

Yes. If you already have an app published in the Amazon Appstore for Android, we will automatically review the app for Kindle Fire compatibility. We're currently in the process of testing our entire catalog of published apps to ensure each app provides a high-quality customer experience on Kindle Fire.

What if you want to test your app(s) prior to submitting?

We strongly recommend you test your app on your own and submit an update if you discover any problems. It is possible to configure a standard Android emulator to simulate the Kindle Fire device platform. You should configure your emulator with the following characteristics:

  • Width: 600px
  • Height: 1024px (the device will reserve 20px of the height to display a soft key menu, yielding a height of 1004px when in full-screen mode)
  • Abstracted LCD Density: 169
  • Target: Android 2.3.4 - API Level 10
  • RAM: 512 MB

If you haven’t already submitted your apps, submit via the Amazon Appstore Developer Portal. Interested in marketing opportunities?  Fill out our marketing request form.

November 22, 2011

Amazon Mobile App Distribution Program

Carlos M. Icaza is our guest blogger for this post. Carlos is the co-founder of Ansca, Inc., the maker of the Corona SDK.

Whether you're brand new to Android development or a veteran developer who has some experience with other mobile-app platforms, this tutorial will walk you through the process of creating, building, and submitting the iOS version of your apps to the Amazon Appstore for Android using the Corona SDK.
 

The primary differences between Android apps and those on other platforms from a Corona-developer’s standpoint really include these things: configuration for different screen sizes, Keystores, the build process, and of course, the final submission. This tutorial will go over all of these crucial points, as well as the process of building and submitting your Corona apps to the Amazon Appstore for Android.

Configuring Your App

The very first thing you should do is ensure your app is going to look good on the various Android devices you plan to target. In Corona, this is as easy as editing your config.lua file and adjusting the width, height, and scale settings, and optionally making changes to your code to ensure everything is positioned just where you want it.

If you are targeting tablets, you should set the width and height in your config.lua file to 600 and 1024 respectively (or similar). The scale mode you choose to use is completely up to you, but if you plan on supporting many different devices and screen sizes, options like "letterBox" and "zoomStretch" may be better for your project.

Additional information on configuring Corona projects can be found here.

Android Permissions

Next, you need to decide what kind of Android permissions your app will need, and then add them to your build.settings file. For example, if your app needs to access the Internet, and you want to be able to save files, then at minimum, your build.settings needs to include the following:

settings = {
    androidPermissions = {
        "android.permission.INTERNET",
        "android.permission.WRITE_EXTERNAL_STORAGE"
    }
}

A complete list of Android permissions (with descriptions) can be found here.

App Icons

Every app needs an Icon, and in the case of building an app for the Amazon Appstore for Android, your project folder should have at least three: Icon-ldpi.png (36x36), Icon-mdpi.png (48x48), and Icon-hdpi.png (72x72). Pay particularly close attention to the letter-case of the icon filenames (hint: the first letter is uppercase).

Building for Android

In Corona, go to File > Open and locate your project's folder. Next, go to File > Build > Android and a dialog box will show. Fill in your app's name, version, and unique package identifier.

Once everything is in place, double-check to make sure everything is correct and click the “Build” button in the lower-right corner of the dialog. In a few minutes (or less), you'll be notified that the build process is complete, and your APK will be ready for submission.

Submitting Your App

Now that you got all the technical stuff out of the way, it's time for the fun part.

Go to the Amazon Appstore Developer Portal and log in with your developer portal account. If you don’t have an account, you can sign up on the same page so you can begin submitting apps to the Amazon Appstore for Android. If you plan on selling apps for a price, be sure to get your Payment information set up at this time as well (you need to do this before submitting your app).

How we ported Corona Indie Bundle to Android

To get our Corona Indie Bundle into the Amazon Appstore for Android, basically all we did was test against a number of Android devices to see how the gameplay and graphic images would work and behave in the different Android form factors. Once we tested the games in various devices, we submitted the game to the Amazon Appstore for Android, where it was subjected to more testing by the Amazon ingestion process. Once we determined some quirks on some devices we did not have access to, we immediately fixed the issue and resubmitted without a problem.

Exclusive discount offer for Corona SDK’s Corona Project Manager

We have a promotion for you. Purchase a PRO subscription to the Corona SDK, at $349.00 for a one-year subscription at http://www.anscamobile.com/get-corona?amazonappstorepromo, and receive a copy of the Corona Project Manager, http://coronaprojectmanager.com/, a $74.99 product, for free. Enter promo code "AMAZONANSCAPROMO". This offer is valid until Dec. 31, 2011 only with a PRO subscription of the Corona SDK.

This promotion is offered by Ansca Inc.  It is not offered or sponsored by Amazon or the Amazon Appstore for Android.

Want the latest?

appstore topics

Recent Posts

Archive