selling physical goodsthrough apps & other monetization strategies (mbl306) | aws re:invent 2013

61
© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. Taking In-App Purchasing to the Next Level: Selling Physical Goods Through Your App & Other Monetization Strategies David Isbitski, Developer Evangelist Apps and Games November 14, 2013

Upload: amazon-web-services

Post on 21-Jun-2015

656 views

Category:

Technology


0 download

DESCRIPTION

How to make your app work as hard for you as you’ve worked on it is a common concern for most developers. In this session, learn how to implement monetization technology to help your Android app step up its game regardless of which store customers use to download your apps. This session covers a new API that helps you earn advertising fees for physical goods you sell in the context of your mobile app. The session offers code samples and best practices for bundling physical and digital goods for a seamless buying experience in your game or app. Learn how to implement more traditional monetization technology such as in-app purchasing and display ads.

TRANSCRIPT

Page 1: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

Taking In-App Purchasing to the Next Level:

Selling Physical Goods Through Your App & Other

Monetization Strategies

David Isbitski, Developer Evangelist Apps and Games

November 14, 2013

Page 2: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your App

– LinkService

– Shopping Service

• Mobile Ads API

• In-App Purchasing API

Page 3: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Introducing the Mobile Associates API

Page 4: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Amazon Mobile Associates

developer.amazon.com/sdk/mobile-associates.html

Page 5: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Offer Physical and Digital

Items for Sale

Earn up to 6% Advertising

Fees

Leverage Amazon’s Checkout

Experience

6%

Amazon Mobile Associates

Page 6: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Incentivize Users with Bundles • Drive further engagement by tying the purchase of physical products

to digital content in your app

• Upon purchase, you’ll get a receipt to fulfill your users’ digital content

Create an In-App Shop • Display products in a customizable in-app storefront

• Users can view and buy products from Amazon without leaving your app

• Easily populate your storefront by specifying items or using a search term

Page 7: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Sell One or Many Products • Create a button/link to a customizable listing of one or more products

– Purchase completed in-app for devices with Amazon Appstore

– Purchase linked to Amazon for Google Play devices

Page 8: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Key Benefits of Mobile Associates

• Better user experience – Learn more about a product and buy it from the app

• Incremental monetization – Complementary to IAP & Mobile Ads

– Up to 6% of sales

– Wide reach - both Amazon Appstore & Google Play

• Easy to integrate – Simple experience that can be integrated quickly

– Flexibility to create customized experiences

Page 9: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Amazon Mobile Associates API Features API features available through Amazon and other distribution channels

Distribution Channels

Feature Product Categories Amazon Appstore for

Android

Other Android Distribution

Channels

Direct Linking to Amazon Physical and Digital YES YES

In-App Product Detail Page Physical and Digital YES YES

In-App Product Preview Popover Physical and Digital YES YES

In-App Shopping Experience Physical Only YES NO

Digital Bundling (Available with In-App Shopping Experience)

Physical Only YES NO

Outside of direct linking to Amazon, search is available only if the app is distributed through

Amazon Appstore and only physical product results will be returned.

Page 10: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– Shopping Service

• Mobile Ads API

• In-App Purchasing API

Page 11: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Setting Up Your App Is Easy

• Register Developer Account

• Fill out Tax Identity

• Get Application Key

• Update AndroidManifest

• Reference Mobile Associates API external jar

• Export Mobile Associates API

• Decide on goods to sell (search, asin, etc.)

• Implement LinkService or ShoppingService

Page 12: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Demo – Setting up your app

Page 13: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– Shopping Service

• Mobile Ads API

• In-App Purchasing API

Page 14: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

LinkService

Page 15: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Direct Linking – Amazon Product Page

Page 16: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Update AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET" />

Page 17: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Initialize the API protected void onCreate(final Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

AssociatesAPI.initialize(

new AssociatesAPI.Config(APPLICATION_KEY, this));

}

Page 18: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Link to the Amazon Home Page

openHomePageButton = (Button)findViewById(R.id.open_home_page_button);

openHomePageButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

OpenHomePageRequest request = new OpenHomePageRequest();

try {

LinkService linkService = AssociatesAPI.getLinkService();

linkService.openRetailPage(request);

} catch (NotInitializedException e) {

}

}

});

Page 19: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Link to an Amazon Search Page String term= ”snake arcade game"; // Search term

openSearchPageButton = (Button)findViewById(R.id.open_search_page_button);

openSearchPageButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

OpenSearchPageRequest request = new OpenSearchPageRequest(term);

try {

LinkService linkService = AssociatesAPI.getLinkService();

linkService.openRetailPage(request);

} catch (NotInitializedException e) {

}

}

});

Page 20: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Link to an Amazon Product Page String asin = "B00362TQZ4";

openProductPageButton = (Button)findViewById(R.id.open_prod_page_button);

openProductPageButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

OpenProductPageRequest request = new OpenProductPageRequest(asin);

try {

LinkService linkService = AssociatesAPI.getLinkService();

linkService.openRetailPage(request);

} catch (NotInitializedException e) {

}

}

});

Page 21: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– Shopping Service

• Mobile Ads API

• In-App Purchasing API

Page 22: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Demo – Snake Game with

LinkService

Page 23: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– ShoppingService

• Mobile Ads API

• In-App Purchasing API

Page 24: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

ShoppingService

Page 25: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Shopping Service

Page 26: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Update AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET" />

<application>

...

<meta-data android:name="com.amazon.device.associates.ENABLE_TESTING"

android:value="true"/>

<receiver android:name="com.amazon.device.associates.ResponseReceiver">

<intent-filter>

<action android:name="com.amazon.device.iap.physical.NOTIFY »

android:permission="com.amazon.device.iap.physical.Permission.NOTIFY">

</intent-filter>

</receiver>

...

</application>

Page 27: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Implement the ShoppingListener public class GlobalShoppingListener implements ShoppingListener {

private static final GlobalShoppingListener instance = new

GlobalShoppingListener(); // Singleton object

public static GlobalShoppingListener getInstance() { returninstance; }

private static ShoppingListener localListener = null;

public void setLocalListener(ShoppingListener l) { localListener = l; }

}

Page 28: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Implement the ShoppingListener public void onServiceStatusResponse(ServiceStatusResponse response)

{ localListener.onServiceStatusResponse(response); }

public void onPurchaseResponse(PurchaseResponse response)

{ localListener.onPurchaseResponse(response); }

public void onSearchByIdResponse(SearchByIdResponse response)

{ localListener.onSearchByIdResponse(response); }

public void onSearchResponse(SearchResponse response)

{ localListener.onSearchResponse(response); }

public void onReceiptsResponse(ReceiptsResponse response)

{ localListener.onReceiptsResponse(response); }

Page 29: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Initialize the API protected void onCreate(final Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

AssociatesAPI.initialize(

new AssociatesAPI.Config(APPLICATION_KEY, this));

AmazonMAAGlobalShoppingListener globalListener =

AmazonMAAGlobalShoppingListener.getInstance();

globalListener.setLocalListener(this);

try {

AssociatesAPI.getShoppingService().setListener(globalListener);

} catch (final NotInitializedException notInitializedException) { }

} catch (final IllegalArgumentException illegalArgumentException) { }

}

Page 30: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Service Status public void onResume() {

super.onResume();

globalListener.setLocalListener(this);

try {

AssociatesAPI.getShoppingService().getServiceStatus();

}

catch (NotInitializedException e) { }

catch(final NoListenerException e) { }

}

Page 31: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Service Status – User public void onServiceStatusResponse(ServiceStatusResponse response) {

UserData userData = response.getUserData();

if (null != userData && null != userData.getUserId()) {

userID = userData.getUserId();

userMarketplace = userData.getMarketplace();

appDistributedThruAmazonAppstore = true;

}

localListener.onServiceStatusResponse(r);

}

Page 32: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Service Status – Purchase Experiences

public void onServiceStatusResponse(ServiceStatusResponse r) {

...

Set<PurchaseExperience> peSet = r.getSupportedPurchaseExperiences();

inAppDetailSupported =

peSet.contains(PurchaseExperience.DIRECT_WITH_DETAIL);

inAppPreviewSupported =

peSet.contains(PurchaseExperience.DIRECT_WITH_PREVIEW);

inAppShoppingSupported = peSet.contains(PurchaseExperience.IN_APP);

inAppShoppingDigitalBundleSupported = r.canGetReceipts();

searchSupported = r.canSearch();

localListener.onServiceStatusResponse(r);

}

Page 33: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Making a Purchase Button purchaseButton = (Button)findViewById(R.id.maaButton);

purchaseButton.setOnClickListener(new View.OnClickListener() {

public void onClick(final View view) {

if (globalListener.isInAppDetailSupported()) {

final PurchaseRequest pr = new PurchaseRequest(asin, view);

pr.setPurchaseExperience(PurchaseExperience.IN_APP);

try {

AssociatesAPI.getShoppingService().purchase(pr);

}

catch (NoListenerException e) { }

catch (NotInitializedException e) { }

}

}

});

Page 34: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Making a Purchase public void onPurchaseResponse(PurchaseResponse response) {

switch(response.getStatus()) {

case SUCCESSFUL: break;

case FAILED: break;

case NOT_SUPPORTED: break;

case INVALID_ID: break;

case PENDING: break;

}

localListener.onPurchaseResponse(response);

}

Page 35: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013
Page 36: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Demo – ShoppingService

Page 37: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– ShoppingService

• Mobile Ads API

• In-App Purchasing API

Page 38: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Mobile Ads API

Page 39: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

API available for Android

running 1.6 and higher

Must be available through

Amazon first

Serves ads to U.S. customers

Amazon Mobile Ad Network

Page 40: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Tips for Mobile Ads

• Place Ads Visibly

• Use Auto Ad Size (default)

• Use Multiple Ad Networks for fill rate

• Refresh Ads every 30–45 seconds

Page 41: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Setting Up an Ad Is Easy

• Register Developer Account

• Fill out Tax Identity

• Get Application Key

• Update AndroidManifest

• Reference Ads external jar

• Export Ads API

• Implement Ad Activity and Ad Layout

• Optionally set up Ad Targets

Page 42: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Setting Up an Ad …

private AdLayout adView = null;

private void initializeAmazonMobileAds() {

AdRegistration.setAppKey(AMAZON_APPLICATION_KEY);

AdRegistration.enableLogging(true);

AdRegistration.enableTesting(true);

this.adView = new AdLayout(this);

this.adView.setTimeout(20000); // 20 seconds

this.adView = (AdLayout) findViewById(R.id.adview);

this.adView.setListener(new AdListener() {

loadAd();

private boolean loadAd() {

return this.adView.loadAd(getAdTargetingOptions());

} ...

Page 43: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Snake Game with Ads

Page 44: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Demo – Snake Game with Ads

Page 45: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– ShoppingService

• Mobile Ads API

• In-App Purchasing API

Page 46: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

In-App Purchasing API

Page 47: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

IAP Conversion Rate

INDEX: Average = 100%

Note: Conversion Rate is measured by the Number of IAP Customers / Total App Customers

Source: Amazon Appstore, July 2013

In-App Purchase Adoption Is Rising

Page 48: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Consumables Entitlements Subscriptions

What Are Customers Buying?

Page 49: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

IAP Tips

• Number of Sessions vs. Session Length

• Build a core audience

• Design High Value Items

Page 50: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Implementing In-App Purchasing

Your App Amazon Appstore

Client

Purchasing

Observer

Purchasing

Manager

All IAP Activities are Performed Asynchronously

Page 51: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Setting Up IAP Is Easy

• Register Developer Account

• Fill out Tax Identity

• Get Application Key

• Update AndroidManifest

• Reference IAP external jar

• Export IAP API

• Set up IAP items on developer portal

• Implement ResponseReceiver and PurchaseObservers

Page 52: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Implementing In-App Purchasing

• Register ResponseReceiver

• Implement PurchasingObserver

• Register PurchasingObserver

• Initiate In-App Purchase

• Handle Purchase Notification

• Test Your Implementation

Page 53: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Implementing In-App Purchasing Test Your Implementation with SDK Tester

Page 54: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Snake Game with IAP

Page 55: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Demo – Snake Game with IAP

Page 56: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Agenda

• Introducing the Mobile Associates API

– Setting up your app

– LinkService

– ShoppingService

• Mobile Ads API

• In-App Purchasing API

Page 57: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Summary

Page 58: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Engagement Reports

PC / Mac Downloads

Indie Storefront

Android App Distribution

Kindle Fire

AWS

In-App Purchasing

Mobile Associates

Mobile Ads

Amazon Coins Achievements

Leaderboards

A/B/n Testing

Whispersync for Games

Login with Amazon

Amazon Device Messaging

Cross Platform

Amazon GameCircle

Direct to Account

Freemium

Paymium

Page 59: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Summary

• Mobile Associates is the next step in monetization

• Monetizing through In-App Purchases is about building relationships

• Freemium can be part of a successful business model

• Use Mobile Ads to monetize from your non-paying users

• Use multiple networks to get higher Ad fill rate

• Design High Value Items

Page 60: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Learn More

• Developer Portal: developer.amazon.com/appstore

• Blog: developer.amazon.com/blog

• Follow us: @AmazonAppDev @TheDaveDev

Page 61: Selling Physical GoodsThrough Apps & Other Monetization Strategies (MBL306) | AWS re:Invent 2013

Please give us your feedback on this

presentation

As a thank you, we will select prize

winners daily for completed surveys!

MBL 306