SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
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

© 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.
Agenda
• Introducing the Mobile Associates API
– Setting up your App
– LinkService
– Shopping Service
• Mobile Ads API
• In-App Purchasing API
Introducing the Mobile Associates API
Amazon Mobile Associates

developer.amazon.com/sdk/mobile-associates.html
Amazon Mobile Associates

6%

Offer Physical and Digital
Items for Sale

Earn up to 6% Advertising
Fees

Leverage Amazon’s Checkout
Experience
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
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
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
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.
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– Shopping Service
• Mobile Ads API
• In-App Purchasing API
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
Demo – Setting up your app
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– Shopping Service
• Mobile Ads API
• In-App Purchasing API
LinkService
Direct Linking – Amazon Product Page
Update AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
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));
}
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) {
}
}
});
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) {
}
}
});
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) {
}
}
});
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– Shopping Service
• Mobile Ads API
• In-App Purchasing API
Demo – Snake Game with
LinkService
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– ShoppingService
• Mobile Ads API
• In-App Purchasing API
ShoppingService
Shopping Service
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>
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; }
}
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); }
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) { }
}
Service Status
public void onResume() {
super.onResume();
globalListener.setLocalListener(this);

try {
AssociatesAPI.getShoppingService().getServiceStatus();
}
catch (NotInitializedException e) { }
catch(final NoListenerException e) { }
}
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);
}
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);
}
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) { }
}
}
});
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);
}
Demo – ShoppingService
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– ShoppingService
• Mobile Ads API
• In-App Purchasing API
Mobile Ads API
Amazon Mobile Ad Network

API available for Android
running 1.6 and higher

Must be available through
Amazon first

Serves ads to U.S. customers
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
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
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());
}
...
Snake Game with Ads
Demo – Snake Game with Ads
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– ShoppingService
• Mobile Ads API
• In-App Purchasing API
In-App Purchasing API
In-App Purchase Adoption Is Rising

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
What Are Customers Buying?

Consumables

Entitlements

Subscriptions
IAP Tips
• Number of Sessions vs. Session Length
• Build a core audience
• Design High Value Items
Implementing In-App Purchasing
All IAP Activities are Performed Asynchronously
Purchasing
Observer

Your App

Purchasing
Manager

Amazon Appstore
Client
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
Implementing In-App Purchasing
•
•
•
•
•
•

Register ResponseReceiver
Implement PurchasingObserver
Register PurchasingObserver
Initiate In-App Purchase
Handle Purchase Notification
Test Your Implementation
Implementing In-App Purchasing
Test Your Implementation with SDK Tester
Snake Game with IAP
Demo – Snake Game with IAP
Agenda
• Introducing the Mobile Associates API
– Setting up your app
– LinkService
– ShoppingService
• Mobile Ads API
• In-App Purchasing API
Summary
Login with Amazon

Freemium
Amazon Device Messaging

Android App Distribution

Kindle Fire

Mobile Associates

Leaderboards

Direct to Account

Indie Storefront

In-App Purchasing
Achievements

PC / Mac Downloads
A/B/n Testing

Amazon Coins

AWS

Amazon GameCircle
Engagement Reports

Mobile Ads

Paymium

Whispersync for Games

Cross Platform
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
Learn More
• Developer Portal:
developer.amazon.com/appstore

• Blog:
developer.amazon.com/blog

• Follow us:
@AmazonAppDev
@TheDaveDev
Please give us your feedback on this
presentation

MBL 306
As a thank you, we will select prize
winners daily for completed surveys!

Contenu connexe

En vedette

En vedette (20)

Advanced Docker Developer Workflows on MacOS X and Windows
Advanced Docker Developer Workflows on MacOS X and WindowsAdvanced Docker Developer Workflows on MacOS X and Windows
Advanced Docker Developer Workflows on MacOS X and Windows
 
Cloud Deployments Done Right: Why APIs are Key
Cloud Deployments Done Right: Why APIs are KeyCloud Deployments Done Right: Why APIs are Key
Cloud Deployments Done Right: Why APIs are Key
 
MS Cloud Summit Paris 2017 - Azure Stack
MS Cloud Summit Paris 2017 - Azure StackMS Cloud Summit Paris 2017 - Azure Stack
MS Cloud Summit Paris 2017 - Azure Stack
 
Introduction to Azure Functions
Introduction to Azure FunctionsIntroduction to Azure Functions
Introduction to Azure Functions
 
Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
 
Pivotal Cloud Foundry: Cloud Native Architecture
Pivotal Cloud Foundry: Cloud Native ArchitecturePivotal Cloud Foundry: Cloud Native Architecture
Pivotal Cloud Foundry: Cloud Native Architecture
 
Is Microservices SOA Done Right?
Is Microservices SOA Done Right?Is Microservices SOA Done Right?
Is Microservices SOA Done Right?
 
L.L.Bean’s API Journey: Digital Commerce Done Right
L.L.Bean’s API Journey: Digital Commerce Done RightL.L.Bean’s API Journey: Digital Commerce Done Right
L.L.Bean’s API Journey: Digital Commerce Done Right
 
Deep dive: Monetize your API Programs
Deep dive: Monetize your API ProgramsDeep dive: Monetize your API Programs
Deep dive: Monetize your API Programs
 
Becoming the Uncarrier: T-Mobile's Digital Journey
Becoming the Uncarrier: T-Mobile's Digital JourneyBecoming the Uncarrier: T-Mobile's Digital Journey
Becoming the Uncarrier: T-Mobile's Digital Journey
 
Docker: the road ahead
Docker: the road aheadDocker: the road ahead
Docker: the road ahead
 
Monetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital AssetsMonetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital Assets
 
Managing Sensitive Information in an API and Microservices World
Managing Sensitive Information in an API and Microservices WorldManaging Sensitive Information in an API and Microservices World
Managing Sensitive Information in an API and Microservices World
 
Adapt or Die Sydney - API Security
Adapt or Die Sydney - API SecurityAdapt or Die Sydney - API Security
Adapt or Die Sydney - API Security
 
Using Open Source and Open Standards in the Platform game
Using Open Source and Open Standards in the Platform gameUsing Open Source and Open Standards in the Platform game
Using Open Source and Open Standards in the Platform game
 
AWS Summit 2013 | Singapore - Delivering Search for Today's Local, Social, an...
AWS Summit 2013 | Singapore - Delivering Search for Today's Local, Social, an...AWS Summit 2013 | Singapore - Delivering Search for Today's Local, Social, an...
AWS Summit 2013 | Singapore - Delivering Search for Today's Local, Social, an...
 
Design Patterns for Developers - Technical 201
Design Patterns for Developers - Technical 201Design Patterns for Developers - Technical 201
Design Patterns for Developers - Technical 201
 
Understanding AWS Security
Understanding AWS SecurityUnderstanding AWS Security
Understanding AWS Security
 
AWSome Day Jakarta - Opening Keynote
AWSome Day Jakarta - Opening KeynoteAWSome Day Jakarta - Opening Keynote
AWSome Day Jakarta - Opening Keynote
 
More Nines for Your Dimes: Improving Availability and Lowering Costs using Au...
More Nines for Your Dimes: Improving Availability and Lowering Costs using Au...More Nines for Your Dimes: Improving Availability and Lowering Costs using Au...
More Nines for Your Dimes: Improving Availability and Lowering Costs using Au...
 

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

INRDealsAPIDocumentation.pdf
INRDealsAPIDocumentation.pdfINRDealsAPIDocumentation.pdf
INRDealsAPIDocumentation.pdf
VinitPal11
 
Periscopix presentation
Periscopix presentationPeriscopix presentation
Periscopix presentation
JamieCluett
 

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

Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario V...
Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario V...Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario V...
Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario V...
 
AI: Integrate Search Function into Your App Using Bing Search API.
AI: Integrate Search Function into Your App Using Bing Search API.AI: Integrate Search Function into Your App Using Bing Search API.
AI: Integrate Search Function into Your App Using Bing Search API.
 
Think Mobile with Google Event - AppsFlyer Presentation - English
Think Mobile with Google Event - AppsFlyer Presentation - EnglishThink Mobile with Google Event - AppsFlyer Presentation - English
Think Mobile with Google Event - AppsFlyer Presentation - English
 
Workshop: Integrating Amazon APIs in Unity
Workshop: Integrating Amazon APIs in Unity Workshop: Integrating Amazon APIs in Unity
Workshop: Integrating Amazon APIs in Unity
 
Peak Ace on Air #31 - Apple's iOS 14.5 Update
Peak Ace on Air #31 - Apple's iOS 14.5 UpdatePeak Ace on Air #31 - Apple's iOS 14.5 Update
Peak Ace on Air #31 - Apple's iOS 14.5 Update
 
INRDealsAPIDocumentation.pdf
INRDealsAPIDocumentation.pdfINRDealsAPIDocumentation.pdf
INRDealsAPIDocumentation.pdf
 
Fraudpointer - Google Apps integration
Fraudpointer  - Google Apps integrationFraudpointer  - Google Apps integration
Fraudpointer - Google Apps integration
 
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdfMonetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
 
Wave Analytics: Developing Predictive Business Intelligence Apps
Wave Analytics: Developing Predictive Business Intelligence AppsWave Analytics: Developing Predictive Business Intelligence Apps
Wave Analytics: Developing Predictive Business Intelligence Apps
 
IBM Worklight- Mobile Commerce Checkout Process
IBM Worklight- Mobile Commerce Checkout ProcessIBM Worklight- Mobile Commerce Checkout Process
IBM Worklight- Mobile Commerce Checkout Process
 
The recurring nightmare - Rosa Gutierrez - Codemotion Amsterdam 2016
The recurring nightmare  - Rosa Gutierrez - Codemotion Amsterdam 2016The recurring nightmare  - Rosa Gutierrez - Codemotion Amsterdam 2016
The recurring nightmare - Rosa Gutierrez - Codemotion Amsterdam 2016
 
Periscopix presentation
Periscopix presentationPeriscopix presentation
Periscopix presentation
 
Android Quiz App – Test Your IQ.pdf
Android Quiz App – Test Your IQ.pdfAndroid Quiz App – Test Your IQ.pdf
Android Quiz App – Test Your IQ.pdf
 
Social Gold in-Flash Webinar Jan 2010
Social Gold in-Flash Webinar Jan 2010Social Gold in-Flash Webinar Jan 2010
Social Gold in-Flash Webinar Jan 2010
 
Social Gold In-Flash Payments Webinar
Social Gold In-Flash Payments WebinarSocial Gold In-Flash Payments Webinar
Social Gold In-Flash Payments Webinar
 
Introduction to Firebase [Google I/O Extended Bangkok 2016]
Introduction to Firebase [Google I/O Extended Bangkok 2016]Introduction to Firebase [Google I/O Extended Bangkok 2016]
Introduction to Firebase [Google I/O Extended Bangkok 2016]
 
Grocery App
Grocery AppGrocery App
Grocery App
 
Shopify
ShopifyShopify
Shopify
 
Opticon 2015 - Getting Started with the Optimizely Developer Platform
Opticon 2015 - Getting Started with the Optimizely Developer PlatformOpticon 2015 - Getting Started with the Optimizely Developer Platform
Opticon 2015 - Getting Started with the Optimizely Developer Platform
 
How AdWords UI maps into adwords api
How AdWords UI maps into adwords apiHow AdWords UI maps into adwords api
How AdWords UI maps into adwords api
 

Plus de Amazon Web Services

Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
Amazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
Amazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
Amazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
Amazon Web Services
 

Plus de Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

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

  • 1. 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 © 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.
  • 2. Agenda • Introducing the Mobile Associates API – Setting up your App – LinkService – Shopping Service • Mobile Ads API • In-App Purchasing API
  • 3. Introducing the Mobile Associates API
  • 5. Amazon Mobile Associates 6% Offer Physical and Digital Items for Sale Earn up to 6% Advertising Fees Leverage Amazon’s Checkout Experience
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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.
  • 10. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – Shopping Service • Mobile Ads API • In-App Purchasing API
  • 11. 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
  • 12. Demo – Setting up your app
  • 13. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – Shopping Service • Mobile Ads API • In-App Purchasing API
  • 15. Direct Linking – Amazon Product Page
  • 17. 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)); }
  • 18. 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) { } } });
  • 19. 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) { } } });
  • 20. 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) { } } });
  • 21. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – Shopping Service • Mobile Ads API • In-App Purchasing API
  • 22. Demo – Snake Game with LinkService
  • 23. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – ShoppingService • Mobile Ads API • In-App Purchasing API
  • 26. 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>
  • 27. 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; } }
  • 28. 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); }
  • 29. 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) { } }
  • 30. Service Status public void onResume() { super.onResume(); globalListener.setLocalListener(this); try { AssociatesAPI.getShoppingService().getServiceStatus(); } catch (NotInitializedException e) { } catch(final NoListenerException e) { } }
  • 31. 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); }
  • 32. 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); }
  • 33. 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) { } } } });
  • 34. 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); }
  • 35.
  • 37. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – ShoppingService • Mobile Ads API • In-App Purchasing API
  • 39. Amazon Mobile Ad Network API available for Android running 1.6 and higher Must be available through Amazon first Serves ads to U.S. customers
  • 40. 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
  • 41. 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
  • 42. 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()); } ...
  • 44. Demo – Snake Game with Ads
  • 45. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – ShoppingService • Mobile Ads API • In-App Purchasing API
  • 47. In-App Purchase Adoption Is Rising 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
  • 48. What Are Customers Buying? Consumables Entitlements Subscriptions
  • 49. IAP Tips • Number of Sessions vs. Session Length • Build a core audience • Design High Value Items
  • 50. Implementing In-App Purchasing All IAP Activities are Performed Asynchronously Purchasing Observer Your App Purchasing Manager Amazon Appstore Client
  • 51. 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
  • 52. Implementing In-App Purchasing • • • • • • Register ResponseReceiver Implement PurchasingObserver Register PurchasingObserver Initiate In-App Purchase Handle Purchase Notification Test Your Implementation
  • 53. Implementing In-App Purchasing Test Your Implementation with SDK Tester
  • 55. Demo – Snake Game with IAP
  • 56. Agenda • Introducing the Mobile Associates API – Setting up your app – LinkService – ShoppingService • Mobile Ads API • In-App Purchasing API
  • 58. Login with Amazon Freemium Amazon Device Messaging Android App Distribution Kindle Fire Mobile Associates Leaderboards Direct to Account Indie Storefront In-App Purchasing Achievements PC / Mac Downloads A/B/n Testing Amazon Coins AWS Amazon GameCircle Engagement Reports Mobile Ads Paymium Whispersync for Games Cross Platform
  • 59. 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
  • 60. Learn More • Developer Portal: developer.amazon.com/appstore • Blog: developer.amazon.com/blog • Follow us: @AmazonAppDev @TheDaveDev
  • 61. Please give us your feedback on this presentation MBL 306 As a thank you, we will select prize winners daily for completed surveys!