Amazon Developer Blogs

Amazon Developer Blogs

Showing posts tagged with Amazon Web Services

January 08, 2014

David Isbitski

HTML5 Web Apps: Tips on Acquiring Customers in the Amazon Appstore

We want to start the year off by focusing on getting your Web Apps noticed in the Amazon Appstore, so you have the best chance of acquiring new customers.  There are a few easy steps you can take to so that your apps, whether web or non-web apps, are more appealing to first time downloaders.  This includes ensuring you have quality screenshots and promotional images, detailed product descriptions, an easy way for customers to review or share your app, as well as a way for customers to discover your apps outside of the Amazon Appstore.  Amazon also offers unique ways to help your Web Apps get noticed including weekly promotions for the top Web Apps in the Appstore as well as access to Appstore Developer Select.   

Appstore Developer Select

All Web Apps submitted to the Amazon Appstore will be automatically entered into for Appstore Developer Select, if they meet the program requirements.  This program helps get your Web Apps discovered and gives you more opportunities to boost your sales and revenue.  As a developer with one or more qualifying apps, you will receive the following benefits:

  • Enhanced Merchandising to Improve Discovery: Your qualifying apps will receive 500,000 free mobile ad impressions across the Amazon Mobile Ad Network. We’ll provide enhanced merchandising for your apps in a dedicated section on the Amazon Appstore home page and consider your apps for advertising on Kindle Fire.
  • Amazon Coins Rewards to Customers to Improve Conversion: Consumers purchasing your app or in-app items in your app will receive up to 30% of the purchase price back in Amazon Coins. We’ll boost customer acquisition by rewarding first-time purchasers of Select paid apps and in-app items with an extra 250 bonus Coins.
  • 25% off AWS Services to Help You Scale: You will earn 25% credit back on qualifying purchases of Amazon Web Services (AWS) products, up to a maximum $500 credit per year.

You can check the status of your eligibility by going to the My Apps section of the Apps and Services Tab in the Developer Console.
 

 

You can click on View Report to see which items your App has passed on and which items you need to update in order to become eligible.


 

Once your app has been enrolled in Appstore Developer Select you will also have the option to view the Ad Campaign that has been set up on your behalf.
 

 

Optimizing App Details

The title and description of your app is like the front door of a building.  Customers will never know what’s inside until they knock and walk inside.  By writing an effective description you can change your app from the spooky abandoned house on the corner to an enticing new shopping mall just waiting to be explored.

 

The keywords section will be how customers find your app when searching the Amazon Appstore so make sure you chose relevant discoverability terms. 

In addition to the App details you can also select a Content Rating for your app letting customers know what to expect.

Be sure to read our previous blog post with tips on effective title and description for your apps here.

High Res Screenshots and Multimedia

Your Web App submission will need to provide screenshots of your app running as well as an optional video.  You should create and upload both a 114x114 icon and a 512x512 icon, which will be used for the app list and carousel respectively.

 

In order to take the screenshots of your app running you will need to use the Web App Tester program on a Kindle device (emulators are not currently supported) and use the Kindle built in screenshot button combination.  The button sequence for each Kindle device can be found here.

You will need to next copy the screenshots off of the Kindle device and uploaded to the developer portal.  

On windows simply plug in your Kindle device and open File Explorer to Internal Storage > Pictures > Screenshots.

 

For Mac OSX you will need to use the Android File Transfer Tool and navigate to Pictures > Screenshots.

 

While you are only required to submit three screenshots, having additional screenshots as well as a promotional image is recommended and will help to increase the chance for downloads.  You can also include an optional Video showcasing your Web App.

 

You can get additional information on taking screenshots of your Web Apps via the official developer documentation  here.

App Badges

Amazon also offers App Badges you can include on your Website and customer communications such as email blasts.

  

These Badges are available in a variety of languages and will further increase potential download traffic to your app by referring customers who are already interested in your products or have come across your website. 

For full details on using App Badges be sure to check out the documentation here.

Conclusion

Building an audience for your apps and connecting with new customers is an important concern for most developers.  By following the steps listed here you can ensure a higher chance of getting noticed.  The more customers who see your app the greater the chance of increased downloads, more reviews and eventual promotion inside the Amazon Appstore.

Got a great HTML5 Web App in the Amazon Appstore?  Looking to get promoted?  Why not tell us about it!  You can Contact Us directly and let us know. 

 

-Dave (@TheDaveDev)

 

December 12, 2013

Mike Hines

On 11/13/2013, Amazon launched a Limited Preview of Amazon AppStream, a service that lets developers run all or parts of their applications from the cloud. The allocated beta slots are filling quickly, and developers have been providing great feedback to the service.

One of the most interesting observations I’ve had so far is the diversity of use cases using Amazon AppStream. There are games using the service, but an equal number of utilities, productivity apps, and entertainment titles as well.  And while my focus is on mobile devices, I found that Amazon AppStream developers target Macs and PCs just as much as they do mobile devices.

Perhaps one of the biggest “ah-ha!” moments I’ve heard about is when participants realize that they can build a hybrid app; one that partly runs in native code on device, and partly runs in the cloud. I asked the AppStream team when this might be a good idea for developers. Here’s what they had to say:

“If you typically write native apps, you might think about using Amazon AppStream to beef up key graphics and scenes when the user is on a lower powered computer by using the richer graphics that a powerful server can generate. Another benefit of having a blended solution is that you can take advantage of any native features or APIs you might want to use.”

While writing blended apps sounds intriguing, one of the valuable aspects of Amazon AppStream is that it lets developers deliver rich experiences on more screens more quickly than re-writing applications in native code.

Certainly other streaming and virtualization technologies exist, but many have suffered from issues with high latency and low resolution. Amazon has managed to mitigate those issues by using the proprietary Amazon AppStream STX protocol, which streams H.264 encoded video and audio over the UDP transport layer, as well as capturing input from the user.  Using this technology, Amazon AppStream is able to produce 720p video at 30 frames per second under a variety of different network conditions (very cool!).

While it’s not as simple as pressing a button, optimizing for Amazon AppStream requires much less work than rebuilding you app for different platforms. To see design considerations for an Amazon AppStream app, see this page

 

September 11, 2013

Mike Hines

Amazon Device Messaging (ADM) helps you send push messages to your Kindle Fire users. Now, Amazon Web Services has just reduced the effort required to send push messages your users on all the different mobile devices they happen to be using.  With Mobile Push, an ADM-compatible extension of AWS Simple Notification Service (SNS), sending notifications to millions of users across Apple, Google and Kindle Fire platforms just got a lot easier.

Sending push notifications can be expensive and time consuming, even though mobile platforms don’t charge to deliver your messages.  Currently, each platform asks you to send notifications in a different format, via a different API.  You also have to manage a database of push tokens that can change unpredictably.  Getting it wrong means your notifications may be delayed or dropped entirely.  It all becomes even more complex when your mobile apps need to scale to support millions of users.

The new Mobile Push service takes these concerns off the table with a cross-platform API, token management, and automatic scalability.  In addition to reducing the overhead of managing multiple messaging services, you no longer have to treat each group of users separately, and instead can communicate with your users according to whatever grouping makes organic sense.

So how much does this cost? Most mobile developers won’t pay anything at all for SNS Mobile Push until their applications achieve scale.  Every customer can send 1 million push notifications for free every month.  After that, you pay $1.00 in total for every million you send ($0.50 per million publishes, plus $0.50 per million mobile push deliveries).

SNS Mobile Push is available now in all public AWS regions.

The new Mobile Push section of the Amazon SNS Developer Guide will help you to get started. 

 

December 18, 2012

Amazon Mobile App Distribution Program

Zillow is a home and real estate marketplace dedicated to helping homeowners, home buyers, sellers, renters, real estate agents, mortgage professionals, landlords, and property managers find and share vital information about homes, real estate and mortgages. We recently had a chance to speak with Steve Perrin, Mobile Development Manager at Zillow, and Leo Liang, Sr. Software Development Engineer at Zillow, to get their feedback on working with Amazon to power their marketplace via Amazon Web Services and to distribute their apps via Kindle Fire tablets and the Amazon Apps mobile client.

Zillow

Powering Zillow withAWS

With Amazon Web Services, Zillow uses a combination of SQS (SimpleQueue Service) for processing, S3 for storage, Elasticache for scalability, and ELB for server load balancing. In addition, they use EC2 as an on-demand service whenever they update their Zestimate algorithm. “We love the simple API and comprehensive set of solutions in the cloud stack that AWS provides,helping us get things done quickly at every product stage,” Leo said.

When it came time for Zillow to choose between service providers, they chose AWS for their reliability, flexibility and support. Leo noted that “in addition to not being limited to any particular development platform, AWS provides EC2 instances on-demand, and a comprehensive cloud stack that helps get things done quickly and with high quality, while keeping future scalability in mind.”

Zillow-2

Distributing Zillow on Kindle Fire

When Amazon launched the Kindle Fire, the Zillow team was quick to optimize their Android app with the new tablet. “It was important to Zillow that our apps worked well on the Kindle Fire since it was a competitive addition to the tablet landscape.” Mobile devices make up 40% of Zillow’s traffic, which grows to more than 50% on weekends. The team followed up by working closely with Amazon in preparation for the launch of the new Kindle Fire and Kindle Fire HD this fall. Steve was able to implement the new AmazonMaps API quickly, thanks to a compatible API that fully met their needs.

Optimizing an Android application for a tablet is more than just stretching the UI, and Zillow has defined a layout that works well on the Kindle Fire, Kindle Fire HD and the new Kindle Fire HD 8.9” device. As well as Maps, their app leverages Location Services and has enhanced performance for the PowerVR GPU. Says  Steve, “The best thing about working with Amazon’s Mobile App Distribution Program is the great support that we receive from Amazon’s team. They’ve been extremely helpful in getting our apps optimized for the Kindle Fire HD. In addition, their new Maps API was easy to integrate, and made it easy for us to give our users a great map experience on Kindle Fire HD.”

Zillow Real Estate is available on Kindle Fire tablets and the Amazon Apps mobile client.

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.

October 28, 2011

amberta

Last month we announced a promotion with Amazon Web Services (AWS) where qualifying developers who submit an Android app or app update to the Amazon Appstore for Android are eligible to receive a $50 AWS credit to use toward the following services:

Remember, there’s still time to submit. The promotion runs through November 15, 2011, and we encourage you to get your apps in soon. We encourage you to ensure you’ve submitted the current versions of all your apps to the Amazon Appstore. Now is also a good time to verify that each app’s meta-data (including list price) is up-to-date. You can update your existing apps and submit new apps using the Amazon Appstore Developer Portal.

For developers new to AWS, here’s a great video on how to get started:

Many developers have already qualified for and received their promotion code for AWS. AWS combined with the Amazon Appstore provide a solid suite of solutions to build apps and a great place to get exposure. MightyMeeting, an app that enables users to run online meetings on the go from tablets, smartphones, or any web-enabled device is one great example. “We needed a cost-efficient robust infrastructure that could be used to manage presentations and online meetings in the cloud and scale up or down dynamically depending on the workload. We found that AWS addresses all our needs, even real-time media streaming during a meeting,” says Dmitri Tcherevik, CEO of MightyMeeting Inc.

Learn more about the AWS SDK and this promotion online here. To apply your code, sign up for an AWS account and apply your promotion code by visiting: http://aws.amazon.com/awscredits/

Submit your app online here.