SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
MARIO VIVIANI
T E C H N O L O G Y E V A N G E L I S T, A M A Z O N A P P S T O R E E U
@mariuxtheone marioviviani
W H Y A N D H O W TO A D D
I N - A P P P U R C H A S I N G A N D
S U B S C R I P T I O N S TO Y O U R A P P S
I T ’ S A - M E !
Ma r io V ivia n i
Technology Evangelist, Amazon Appstore EU
@mariuxtheone
Android Developer since 2010
95+ apps published
12,000,000+ downloads
Google Developer Expert 2013-15
Startup Founder, Co-Worker
Speaker at: Droidcon,
Casual Connect, Big Android BBQ,
Google I/O
MOBILE APPS & GAMES
MONETISATION
IS EVOLVING
A P P M O N E T I S AT I O N M O D E L S
Paid
Apps
In-App
Purchase
Subscriptions
AD
Advertisement
MAKING MONEY IS ART
AND WORKING IS ART
AND GOOD BUSINESS
IS THE BEST ART.
A n d y Wa r h o l
A r t i s t
The Guardian
Minecraft
TVPlayer
The Telegraph
Daily Mirror
Mail Plus
BoxNation
UFC
Independent
HayU
OfficeSuite
Colorfy
A M A Z O N S U B S C R I P T I O N S
Amazon Appstore UK Data: Jan – May 2017
96% OF SUBSCRIPTIONS COME FROM
AMAZON DEVICES
A M A Z O N S U B S C R I P T I O N S O N F I R E T V
+150% YoY
Amazon Fire TV
Subscription
Revenue
Amazon Appstore UK Data: Jan – May 2017
A M A Z O N S U B S C R I P T I O N S O N F I R E T V
+1400% YoY
Fire TV
On-Demand
Movie Streaming
Category Revenue
Amazon Appstore UK Data: Jan – May 2017
+125% YoY
Fire TV
Sports
Category Revenue
TO P 1 0 G R O S S I N G A P P C AT E G O R I E S U S I N G S U B S C R I P T I O N S
Amazon Appstore UK Data: Jan – May 2017
1. Newspapers and Magazines
2. On-Demand Movie Streaming
3. Magazines
4. Novelty
5. Sports
6. Education
7. News
8. Adventure
9. Trivia
10.Document Editing
(AGGREGATE OF AMAZON DEVICES AND NON-AMAZON ANDROID)
TO P 1 0 G R O S S I N G A P P C AT E G O R I E S U S I N G S U B S C R I P T I O N S
Amazon Appstore UK Data: Jan – May 2017
1. On-Demand Movie Streaming
2. Sports
3. Novelty
4. Newspapers
5. Magazines
6. Workout Guides
7. Concert Finders
8. News
9. Outdoors & Nature
10. News, Politics and Opinion
1. Newspapers
2. Magazines
3. Education
4. News
5. Adventure
6. Trivia
7. Document Editing
8. On-Demand Movie Streaming
9. News, Politics and Opinion
10. Music & Rhythm
AMAZON FIRE TV AMAZON FIRE TABLETS
AMAZON IAP &
SUBSCRIPTIONS
API
A P P M O N E T I S AT I O N M O D E L S
Paid
Apps
In-App
Items
Subscriptions
AD
Advertisement
Amazon In-App Purchase API
W H Y A M A Z O N I A P & S U B S C R I P T I O N A P I
A D VA N TA G E S
Provide IAP Items,
Entitlements & Subscriptions
Handles purchase flow, payment
processing, receipts, and rights
management.
Amazon 1-Click Settings
HOW TO ADD
IN-APP ITEMS
I N - A P P I T E M S : A B R E A K D O W N
T Y P E O F I N - A P P I T E M IN-APP ITEMS INFO
Consumables
Entitlements
Subscriptions
• Title
• SKU
• Content delivery
• Availability & Pricing
• Subscription Periods
(subscriptions only)
• Free Trial (subscriptions only)
• Description
• Images
T E S T I A P I T E M S & S U B S C R I P T I O N S O N - D E V I C E
CONFIGURE IAP ITEMS
ON DEV PORTAL
LAUNCH AND TEST
IAP & SUBSCRIPTION
INSTALL
AMAZON APP TESTER
ON YOUR TEST DEVICE
RETRIEVE JSON OF IAP
ITEMS
JSON
1 ) A D D G E N E R A L I N F O R M AT I O N
2 ) A D D S U B S C R I P T I O N P E R I O D S
3 ) A D D D E S C R I P T I O N
4 ) A D D I M A G E S
5 ) F I N A L I S E & D O W N L O A D J S O N
amazon.sdktester.json
A M A Z O N . S D K T E S T E R . J S O N
{
"com.amazon.sample.iap.subscription.mymagazine.month": {
"description":"Monthly Subscription to My Magazine",
"title":"My Magazine",
"itemType":"SUBSCRIPTION",
"price":5.0,
"subscriptionParent":"com.amazon.sample.iap.subscription.mymagazine"
}
}
Child SKU – Subscription Period
Parent SKU
A M A Z O N . S D K T E S T E R . J S O N
{
"com.amazon.sample.iap.subscription.mymagazine.month": {
"description":"Monthly Subscription to My Magazine",
"title":"My Magazine",
"itemType":"SUBSCRIPTION",
"price":5.0,
"subscriptionParent":"com.amazon.sample.iap.subscription.mymagazine"
},
"com.amazon.sample.iap.subscription.mymagazine.quarter": {
"description":"Quarterly Subscription to My Magazine",
"title":"My Magazine",
"itemType":"SUBSCRIPTION",
"price":12.0,
"subscriptionParent":"com.amazon.sample.iap.subscription.mymagazine"
}
}
I N S TA L L A M A Z O N A P P T E S T E R F R O M A P P S TO R E
I N S TA L L A M A Z O N A P P T E S T E R F R O M A P P S TO R E
I N S TA L L A M A Z O N A P P T E S T E R F R O M A P P S TO R E
SET UP THE
AMAZON IAP SDK
IN YOU APP
D O W N L O A D T H E S D K
developer.amazon.com/sdk-download
D O W N L O A D T H E S D K
A D D T H E S D K TO Y O U R L I B S F O L D E R
Project/app/libs
A D D T H E S D K TO Y O U R L I B S F O L D E R
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
b u i l d . g ra d l e
ADD THE IAP
COMPONENTS TO
YOUR APP
T H E M A I N C O M P O N E N T S O F T H E I A P S D K
PurchasingListener
PurchasingService
ResponseReceiver
A D D R E S P O N S E R E C E I V E R TO A N D R O I D M A N I F E S T
<application>
...
<receiver android:name = "com.amazon.device.iap.ResponseReceiver" >
<intent-filter>
<action android:name = "com.amazon.inapp.purchasing.NOTIFY"
android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
...
</application> Response
Receiver
F E T C H T H E U S E R & R E C E I P T S D ATA
String parentSKU = "com.amazon.sample.iap.subscription.mymagazine";
@Override
protected void onResume() {
super.onResume();
PurchasingService.getUserData();
PurchasingService.getPurchaseUpdates(true);
final Set<String> productSkus = new HashSet<String>();
productSkus.add(parentSKU);
PurchasingService.getProductData(productSkus);
}
Purchasing
Service
I N I T I A L I Z E P U R C H A S I N G L I S T E N E R
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PurchasingService.registerListener(this, purchasingListener);
...
T H E P U R C H A S I N G L I S T E N E R
PurchasingListener purchasingListener = new PurchasingListener() {
@Override
public void onUserDataResponse(UserDataResponse userDataResponse) {...}
@Override
public void onProductDataResponse(ProductDataResponse productDataResponse) {...}
@Override
public void onPurchaseResponse(PurchaseResponse purchaseResponse) {...}
@Override
public void onPurchaseUpdatesResponse(PurchaseUpdatesResponse purchaseUpdatesResponse) {…}
};
Purchasing
Listener
@Override
public void onUserDataResponse(UserDataResponse response) {
final UserDataResponse.RequestStatus status = response.getRequestStatus();
switch (status) {
case SUCCESSFUL:
currentUserId = response.getUserData().getUserId();
currentMarketplace = response.getUserData().getMarketplace();
break ;
case FAILED:
case NOT_SUPPORTED:
// Fail gracefully.
break ;
}
}
U S E R D ATA R E S P O N S E
Purchasing
Listener
Response
Receiver
P R O D U C T D ATA R E S P O N S E
Purchasing
Listener
Response
Receiver
@Override
public void onProductDataResponse(ProductDataResponse response) {
switch (response.getRequestStatus()) {
case SUCCESSFUL:
for ( final String s : response.getUnavailableSkus()) {
//perform action to hide/display unavailable SKUs
}
break ;
case FAILED:
break ;
}
}
Button button = (Button) findViewById(R.id.subscriptionButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PurchasingService.purchase(parentSKU);
}
});
P E R F O R M I N G P U R C H A S E
Purchasing
Service
@Override
public void onPurchaseResponse(PurchaseResponse purchaseResponse) {
logthis("onPurchaseResponse");
logthis("Response: "+purchaseResponse.getRequestStatus().name());
logthis("SKU Purchased:"+purchaseResponse.getReceipt().getSku());
switch (purchaseResponse.getRequestStatus()) {
case SUCCESSFUL:
//notify fulfillment of the transaction
PurchasingService.notifyFulfillment(purchaseResponse.getReceipt().getReceiptId(),
FulfillmentResult.FULFILLED);
break ;
case FAILED:
break ;
}
}
@Override
public void onPurchaseResponse(PurchaseResponse purchaseResponse) {
logthis("onPurchaseResponse");
logthis("Response: "+purchaseResponse.getRequestStatus().name());
logthis("SKU Purchased:"+purchaseResponse.getReceipt().getSku());
switch (purchaseResponse.getRequestStatus()) {
case SUCCESSFUL:
//notify fulfillment of the transaction
PurchasingService.notifyFulfillment(purchaseResponse.getReceipt().getReceiptId(),
FulfillmentResult.FULFILLED);
break ;
case FAILED:
break ;
}
}
P U R C H A S E R E S P O N S E
Purchasing
Listener
Purchasing
Service
Response
Receiver
P U R C H A S E U P D AT E S R E S P O N S E & G R A N T I N G I A P I T E M
@Override
public void onPurchaseUpdatesResponse(PurchaseUpdatesResponse response) {
switch (response.getRequestStatus()) {
case SUCCESSFUL:
for ( final Receipt receipt : response.getReceipts()) {
// Process receipts
if (!receipt.isCanceled()){
// GRANT THE ITEMS TO THE USER
}
}
if (response.hasMore()) {
PurchasingService.getPurchaseUpdates(true);
}
break ;
case FAILED:
Log.d("FAILED","FAILED");
break ;
}
}
};
Purchasing
Listener
Purchasing
Service
Response
Receiver
NEXT STEPS
N E X T S T E P S
Set up Live App Testing for
your app
Obfuscate your code
Set up receipt verification
using RVS
G E T S TA RT E D W I T H I A P
developer.amazon.com/in-app-purchasing
THANK YOU!
Mario Viviani
@mariuxtheone
@AmazonAppDev
vivianim@amazon.co.uk
developer.amazon.com/appstore

Weitere ähnliche Inhalte

Ähnlich wie Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario Viviani

Analytics for iOS apps (crash/diagnostic/usage/sales)
Analytics for iOS apps (crash/diagnostic/usage/sales) Analytics for iOS apps (crash/diagnostic/usage/sales)
Analytics for iOS apps (crash/diagnostic/usage/sales) Jurgis Kirsakmens
 
Amazon Underground, a Year After - Mario Viviani
Amazon Underground, a Year After - Mario VivianiAmazon Underground, a Year After - Mario Viviani
Amazon Underground, a Year After - Mario VivianiAmazon Appstore Developers
 
In-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario Viviani
In-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario VivianiIn-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario Viviani
In-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario VivianiAmazon Appstore Developers
 
Developing Android Apps for TV in Minutes with Amazon Fire App Builder
Developing Android Apps for TV in Minutes with Amazon Fire App BuilderDeveloping Android Apps for TV in Minutes with Amazon Fire App Builder
Developing Android Apps for TV in Minutes with Amazon Fire App BuilderAmazon Appstore Developers
 
Building New Experiences on Amazon Fire TV - Mario Viviani
Building New Experiences on Amazon Fire TV - Mario VivianiBuilding New Experiences on Amazon Fire TV - Mario Viviani
Building New Experiences on Amazon Fire TV - Mario VivianiAmazon Appstore Developers
 
Using analytics in iOS apps - #uikonf2016 #unconference
Using analytics in iOS apps - #uikonf2016 #unconferenceUsing analytics in iOS apps - #uikonf2016 #unconference
Using analytics in iOS apps - #uikonf2016 #unconferenceJurgis Kirsakmens
 
Working Backward from Amazon Customers: Audience Marketing Strategies - Lau...
Working Backward from Amazon Customers:  Audience Marketing Strategies  - Lau...Working Backward from Amazon Customers:  Audience Marketing Strategies  - Lau...
Working Backward from Amazon Customers: Audience Marketing Strategies - Lau...Amazon Appstore Developers
 
App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...
App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...
App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...Kahena Digital Marketing
 
Lessons in Appstore Optimization from the Amazon Appstore
Lessons in Appstore Optimization from the Amazon AppstoreLessons in Appstore Optimization from the Amazon Appstore
Lessons in Appstore Optimization from the Amazon AppstoreDevGAMM Conference
 
Lessons in Appstore Optimization from the Amazon Appstore | Mike Hines
Lessons in Appstore Optimization from the Amazon Appstore | Mike HinesLessons in Appstore Optimization from the Amazon Appstore | Mike Hines
Lessons in Appstore Optimization from the Amazon Appstore | Mike HinesJessica Tams
 
ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...
ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...
ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...Amazon Web Services
 
Beyond Install: Maximizing User Acquisition via Post-Install Events | Anh Nguyen
Beyond Install: Maximizing User Acquisition via Post-Install Events | Anh NguyenBeyond Install: Maximizing User Acquisition via Post-Install Events | Anh Nguyen
Beyond Install: Maximizing User Acquisition via Post-Install Events | Anh NguyenJessica Tams
 
12 Things You Should Know Before You Launch an App
12 Things You Should Know Before You Launch an App12 Things You Should Know Before You Launch an App
12 Things You Should Know Before You Launch an AppMarie Outtier
 
Mobile Growth Marketing: Strategy, Hacks and Tools
Mobile Growth Marketing: Strategy, Hacks and ToolsMobile Growth Marketing: Strategy, Hacks and Tools
Mobile Growth Marketing: Strategy, Hacks and ToolsAdrien Montcoudiol
 

Ähnlich wie Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario Viviani (20)

Analytics for iOS apps (crash/diagnostic/usage/sales)
Analytics for iOS apps (crash/diagnostic/usage/sales) Analytics for iOS apps (crash/diagnostic/usage/sales)
Analytics for iOS apps (crash/diagnostic/usage/sales)
 
Introduction to the Amazon Appstore
Introduction to the Amazon AppstoreIntroduction to the Amazon Appstore
Introduction to the Amazon Appstore
 
Amazon Underground, a Year After - Mario Viviani
Amazon Underground, a Year After - Mario VivianiAmazon Underground, a Year After - Mario Viviani
Amazon Underground, a Year After - Mario Viviani
 
In-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario Viviani
In-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario VivianiIn-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario Viviani
In-App Purchase Like a Pro: Best Practices from the Top 50 Apps - Mario Viviani
 
Developing Android Apps for TV in Minutes with Amazon Fire App Builder
Developing Android Apps for TV in Minutes with Amazon Fire App BuilderDeveloping Android Apps for TV in Minutes with Amazon Fire App Builder
Developing Android Apps for TV in Minutes with Amazon Fire App Builder
 
Building New Experiences on Amazon Fire TV - Mario Viviani
Building New Experiences on Amazon Fire TV - Mario VivianiBuilding New Experiences on Amazon Fire TV - Mario Viviani
Building New Experiences on Amazon Fire TV - Mario Viviani
 
AWS MSP & Competency
AWS MSP & CompetencyAWS MSP & Competency
AWS MSP & Competency
 
Using analytics in iOS apps - #uikonf2016 #unconference
Using analytics in iOS apps - #uikonf2016 #unconferenceUsing analytics in iOS apps - #uikonf2016 #unconference
Using analytics in iOS apps - #uikonf2016 #unconference
 
Working Backward from Amazon Customers: Audience Marketing Strategies - Lau...
Working Backward from Amazon Customers:  Audience Marketing Strategies  - Lau...Working Backward from Amazon Customers:  Audience Marketing Strategies  - Lau...
Working Backward from Amazon Customers: Audience Marketing Strategies - Lau...
 
App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...
App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...
App Store Optimization - Metrics, Organic Discovery, & The Future | SMX Muni...
 
Lessons in Appstore Optimization from the Amazon Appstore
Lessons in Appstore Optimization from the Amazon AppstoreLessons in Appstore Optimization from the Amazon Appstore
Lessons in Appstore Optimization from the Amazon Appstore
 
Lessons in Appstore Optimization from the Amazon Appstore | Mike Hines
Lessons in Appstore Optimization from the Amazon Appstore | Mike HinesLessons in Appstore Optimization from the Amazon Appstore | Mike Hines
Lessons in Appstore Optimization from the Amazon Appstore | Mike Hines
 
ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...
ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...
ABD214_Real-time User Insights for Mobile and Web Applications with Amazon Pi...
 
App Economy
App EconomyApp Economy
App Economy
 
Thinking in react
Thinking in reactThinking in react
Thinking in react
 
Beyond Install: Maximizing User Acquisition via Post-Install Events | Anh Nguyen
Beyond Install: Maximizing User Acquisition via Post-Install Events | Anh NguyenBeyond Install: Maximizing User Acquisition via Post-Install Events | Anh Nguyen
Beyond Install: Maximizing User Acquisition via Post-Install Events | Anh Nguyen
 
12 Things You Should Know Before You Launch an App
12 Things You Should Know Before You Launch an App12 Things You Should Know Before You Launch an App
12 Things You Should Know Before You Launch an App
 
SXSW presentation
SXSW presentationSXSW presentation
SXSW presentation
 
Mobile Growth Marketing: Strategy, Hacks and Tools
Mobile Growth Marketing: Strategy, Hacks and ToolsMobile Growth Marketing: Strategy, Hacks and Tools
Mobile Growth Marketing: Strategy, Hacks and Tools
 
Getting started-with-similar web-api
Getting started-with-similar web-apiGetting started-with-similar web-api
Getting started-with-similar web-api
 

Mehr von Amazon Appstore Developers

Designing Apps in the Age of Media Streaming: Optimise Your Content for TV
Designing Apps in the Age of Media Streaming: Optimise Your Content for TVDesigning Apps in the Age of Media Streaming: Optimise Your Content for TV
Designing Apps in the Age of Media Streaming: Optimise Your Content for TVAmazon Appstore Developers
 
IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...
IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...
IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...Amazon Appstore Developers
 
Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...
Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...
Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...Amazon Appstore Developers
 
5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani
5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani
5 Best Practices of Top-Earning Mobile Apps and Games - Mario VivianiAmazon Appstore Developers
 
Is This Really All There Is? More Ways to Monetize - Mike Hines
Is This Really All There Is? More Ways to Monetize - Mike HinesIs This Really All There Is? More Ways to Monetize - Mike Hines
Is This Really All There Is? More Ways to Monetize - Mike HinesAmazon Appstore Developers
 
Bringing Unity Games to Fire TV - Peter Heinrich
Bringing Unity Games to Fire TV - Peter HeinrichBringing Unity Games to Fire TV - Peter Heinrich
Bringing Unity Games to Fire TV - Peter HeinrichAmazon Appstore Developers
 
Designing for Tablet - Patterns and Best Practices
Designing for Tablet - Patterns and Best Practices Designing for Tablet - Patterns and Best Practices
Designing for Tablet - Patterns and Best Practices Amazon Appstore Developers
 
Actionable Analytics: Using Better Data Better
Actionable Analytics: Using Better Data BetterActionable Analytics: Using Better Data Better
Actionable Analytics: Using Better Data BetterAmazon Appstore Developers
 
Is This All There Is? What's New in Monetization
Is This All There Is? What's New in MonetizationIs This All There Is? What's New in Monetization
Is This All There Is? What's New in MonetizationAmazon Appstore Developers
 
Reach More Players: Smart Design for Streaming Media Devices
Reach More Players: Smart Design for Streaming Media DevicesReach More Players: Smart Design for Streaming Media Devices
Reach More Players: Smart Design for Streaming Media DevicesAmazon Appstore Developers
 
What the Top 50 Apps Do with IAP That the Rest of Us Don't
What the Top 50 Apps Do with IAP That the Rest of Us Don'tWhat the Top 50 Apps Do with IAP That the Rest of Us Don't
What the Top 50 Apps Do with IAP That the Rest of Us Don'tAmazon Appstore Developers
 
Building Voice Apps & Experiences For Amazon Echo
Building Voice Apps & Experiences For Amazon EchoBuilding Voice Apps & Experiences For Amazon Echo
Building Voice Apps & Experiences For Amazon EchoAmazon Appstore Developers
 
Submitting Apps and Games to the Amazon Appstore
Submitting Apps and Games to the Amazon AppstoreSubmitting Apps and Games to the Amazon Appstore
Submitting Apps and Games to the Amazon AppstoreAmazon Appstore Developers
 
How To: Bringing Media Channels to Amazon Fire TV
How To: Bringing Media Channels to Amazon Fire TV How To: Bringing Media Channels to Amazon Fire TV
How To: Bringing Media Channels to Amazon Fire TV Amazon Appstore Developers
 

Mehr von Amazon Appstore Developers (18)

Designing Apps in the Age of Media Streaming: Optimise Your Content for TV
Designing Apps in the Age of Media Streaming: Optimise Your Content for TVDesigning Apps in the Age of Media Streaming: Optimise Your Content for TV
Designing Apps in the Age of Media Streaming: Optimise Your Content for TV
 
Bring Your Content Forward on Amazon Fire TV
Bring Your Content Forward on Amazon Fire TVBring Your Content Forward on Amazon Fire TV
Bring Your Content Forward on Amazon Fire TV
 
IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...
IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...
IMPLEMENTING VOICE CONTROL WITH THE ANDROID MEDIA SESSION API ON AMAZON FIRE ...
 
Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...
Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...
Creating Rich Multi-Screen Experiences on Android with Amazon Fling - Mario V...
 
5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani
5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani
5 Best Practices of Top-Earning Mobile Apps and Games - Mario Viviani
 
Is This Really All There Is? More Ways to Monetize - Mike Hines
Is This Really All There Is? More Ways to Monetize - Mike HinesIs This Really All There Is? More Ways to Monetize - Mike Hines
Is This Really All There Is? More Ways to Monetize - Mike Hines
 
Bringing Unity Games to Fire TV - Peter Heinrich
Bringing Unity Games to Fire TV - Peter HeinrichBringing Unity Games to Fire TV - Peter Heinrich
Bringing Unity Games to Fire TV - Peter Heinrich
 
Designing for Tablet - Patterns and Best Practices
Designing for Tablet - Patterns and Best Practices Designing for Tablet - Patterns and Best Practices
Designing for Tablet - Patterns and Best Practices
 
Amazon Lab126
Amazon Lab126Amazon Lab126
Amazon Lab126
 
Actionable Analytics: Using Better Data Better
Actionable Analytics: Using Better Data BetterActionable Analytics: Using Better Data Better
Actionable Analytics: Using Better Data Better
 
Is This All There Is? What's New in Monetization
Is This All There Is? What's New in MonetizationIs This All There Is? What's New in Monetization
Is This All There Is? What's New in Monetization
 
Reach More Players: Smart Design for Streaming Media Devices
Reach More Players: Smart Design for Streaming Media DevicesReach More Players: Smart Design for Streaming Media Devices
Reach More Players: Smart Design for Streaming Media Devices
 
What the Top 50 Apps Do with IAP That the Rest of Us Don't
What the Top 50 Apps Do with IAP That the Rest of Us Don'tWhat the Top 50 Apps Do with IAP That the Rest of Us Don't
What the Top 50 Apps Do with IAP That the Rest of Us Don't
 
Building Voice Apps & Experiences For Amazon Echo
Building Voice Apps & Experiences For Amazon EchoBuilding Voice Apps & Experiences For Amazon Echo
Building Voice Apps & Experiences For Amazon Echo
 
Introduction to App Stores
Introduction to App StoresIntroduction to App Stores
Introduction to App Stores
 
Submitting Apps and Games to the Amazon Appstore
Submitting Apps and Games to the Amazon AppstoreSubmitting Apps and Games to the Amazon Appstore
Submitting Apps and Games to the Amazon Appstore
 
How To: Bringing Media Channels to Amazon Fire TV
How To: Bringing Media Channels to Amazon Fire TV How To: Bringing Media Channels to Amazon Fire TV
How To: Bringing Media Channels to Amazon Fire TV
 
How To Evolve Players Into Fans
How To Evolve Players Into FansHow To Evolve Players Into Fans
How To Evolve Players Into Fans
 

Kürzlich hochgeladen

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...Martijn de Jong
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Kürzlich hochgeladen (20)

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...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Why and How to Add In-App Purchasing and Subscriptions to your Apps - Mario Viviani

  • 1. MARIO VIVIANI T E C H N O L O G Y E V A N G E L I S T, A M A Z O N A P P S T O R E E U @mariuxtheone marioviviani W H Y A N D H O W TO A D D I N - A P P P U R C H A S I N G A N D S U B S C R I P T I O N S TO Y O U R A P P S
  • 2. I T ’ S A - M E ! Ma r io V ivia n i Technology Evangelist, Amazon Appstore EU @mariuxtheone Android Developer since 2010 95+ apps published 12,000,000+ downloads Google Developer Expert 2013-15 Startup Founder, Co-Worker Speaker at: Droidcon, Casual Connect, Big Android BBQ, Google I/O
  • 3. MOBILE APPS & GAMES MONETISATION IS EVOLVING
  • 4. A P P M O N E T I S AT I O N M O D E L S Paid Apps In-App Purchase Subscriptions AD Advertisement
  • 5. MAKING MONEY IS ART AND WORKING IS ART AND GOOD BUSINESS IS THE BEST ART. A n d y Wa r h o l A r t i s t
  • 6. The Guardian Minecraft TVPlayer The Telegraph Daily Mirror Mail Plus BoxNation UFC Independent HayU OfficeSuite Colorfy
  • 7. A M A Z O N S U B S C R I P T I O N S Amazon Appstore UK Data: Jan – May 2017 96% OF SUBSCRIPTIONS COME FROM AMAZON DEVICES
  • 8. A M A Z O N S U B S C R I P T I O N S O N F I R E T V +150% YoY Amazon Fire TV Subscription Revenue Amazon Appstore UK Data: Jan – May 2017
  • 9. A M A Z O N S U B S C R I P T I O N S O N F I R E T V +1400% YoY Fire TV On-Demand Movie Streaming Category Revenue Amazon Appstore UK Data: Jan – May 2017 +125% YoY Fire TV Sports Category Revenue
  • 10. TO P 1 0 G R O S S I N G A P P C AT E G O R I E S U S I N G S U B S C R I P T I O N S Amazon Appstore UK Data: Jan – May 2017 1. Newspapers and Magazines 2. On-Demand Movie Streaming 3. Magazines 4. Novelty 5. Sports 6. Education 7. News 8. Adventure 9. Trivia 10.Document Editing (AGGREGATE OF AMAZON DEVICES AND NON-AMAZON ANDROID)
  • 11. TO P 1 0 G R O S S I N G A P P C AT E G O R I E S U S I N G S U B S C R I P T I O N S Amazon Appstore UK Data: Jan – May 2017 1. On-Demand Movie Streaming 2. Sports 3. Novelty 4. Newspapers 5. Magazines 6. Workout Guides 7. Concert Finders 8. News 9. Outdoors & Nature 10. News, Politics and Opinion 1. Newspapers 2. Magazines 3. Education 4. News 5. Adventure 6. Trivia 7. Document Editing 8. On-Demand Movie Streaming 9. News, Politics and Opinion 10. Music & Rhythm AMAZON FIRE TV AMAZON FIRE TABLETS
  • 13. A P P M O N E T I S AT I O N M O D E L S Paid Apps In-App Items Subscriptions AD Advertisement Amazon In-App Purchase API
  • 14. W H Y A M A Z O N I A P & S U B S C R I P T I O N A P I A D VA N TA G E S Provide IAP Items, Entitlements & Subscriptions Handles purchase flow, payment processing, receipts, and rights management. Amazon 1-Click Settings
  • 15.
  • 16.
  • 18. I N - A P P I T E M S : A B R E A K D O W N T Y P E O F I N - A P P I T E M IN-APP ITEMS INFO Consumables Entitlements Subscriptions • Title • SKU • Content delivery • Availability & Pricing • Subscription Periods (subscriptions only) • Free Trial (subscriptions only) • Description • Images
  • 19. T E S T I A P I T E M S & S U B S C R I P T I O N S O N - D E V I C E CONFIGURE IAP ITEMS ON DEV PORTAL LAUNCH AND TEST IAP & SUBSCRIPTION INSTALL AMAZON APP TESTER ON YOUR TEST DEVICE RETRIEVE JSON OF IAP ITEMS JSON
  • 20. 1 ) A D D G E N E R A L I N F O R M AT I O N
  • 21. 2 ) A D D S U B S C R I P T I O N P E R I O D S
  • 22. 3 ) A D D D E S C R I P T I O N
  • 23. 4 ) A D D I M A G E S
  • 24. 5 ) F I N A L I S E & D O W N L O A D J S O N amazon.sdktester.json
  • 25. A M A Z O N . S D K T E S T E R . J S O N { "com.amazon.sample.iap.subscription.mymagazine.month": { "description":"Monthly Subscription to My Magazine", "title":"My Magazine", "itemType":"SUBSCRIPTION", "price":5.0, "subscriptionParent":"com.amazon.sample.iap.subscription.mymagazine" } } Child SKU – Subscription Period Parent SKU
  • 26. A M A Z O N . S D K T E S T E R . J S O N { "com.amazon.sample.iap.subscription.mymagazine.month": { "description":"Monthly Subscription to My Magazine", "title":"My Magazine", "itemType":"SUBSCRIPTION", "price":5.0, "subscriptionParent":"com.amazon.sample.iap.subscription.mymagazine" }, "com.amazon.sample.iap.subscription.mymagazine.quarter": { "description":"Quarterly Subscription to My Magazine", "title":"My Magazine", "itemType":"SUBSCRIPTION", "price":12.0, "subscriptionParent":"com.amazon.sample.iap.subscription.mymagazine" } }
  • 27. I N S TA L L A M A Z O N A P P T E S T E R F R O M A P P S TO R E
  • 28. I N S TA L L A M A Z O N A P P T E S T E R F R O M A P P S TO R E
  • 29. I N S TA L L A M A Z O N A P P T E S T E R F R O M A P P S TO R E
  • 30. SET UP THE AMAZON IAP SDK IN YOU APP
  • 31. D O W N L O A D T H E S D K developer.amazon.com/sdk-download
  • 32. D O W N L O A D T H E S D K
  • 33. A D D T H E S D K TO Y O U R L I B S F O L D E R Project/app/libs
  • 34. A D D T H E S D K TO Y O U R L I B S F O L D E R dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) b u i l d . g ra d l e
  • 35. ADD THE IAP COMPONENTS TO YOUR APP
  • 36. T H E M A I N C O M P O N E N T S O F T H E I A P S D K PurchasingListener PurchasingService ResponseReceiver
  • 37. A D D R E S P O N S E R E C E I V E R TO A N D R O I D M A N I F E S T <application> ... <receiver android:name = "com.amazon.device.iap.ResponseReceiver" > <intent-filter> <action android:name = "com.amazon.inapp.purchasing.NOTIFY" android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" /> </intent-filter> </receiver> ... </application> Response Receiver
  • 38. F E T C H T H E U S E R & R E C E I P T S D ATA String parentSKU = "com.amazon.sample.iap.subscription.mymagazine"; @Override protected void onResume() { super.onResume(); PurchasingService.getUserData(); PurchasingService.getPurchaseUpdates(true); final Set<String> productSkus = new HashSet<String>(); productSkus.add(parentSKU); PurchasingService.getProductData(productSkus); } Purchasing Service
  • 39. I N I T I A L I Z E P U R C H A S I N G L I S T E N E R @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PurchasingService.registerListener(this, purchasingListener); ...
  • 40. T H E P U R C H A S I N G L I S T E N E R PurchasingListener purchasingListener = new PurchasingListener() { @Override public void onUserDataResponse(UserDataResponse userDataResponse) {...} @Override public void onProductDataResponse(ProductDataResponse productDataResponse) {...} @Override public void onPurchaseResponse(PurchaseResponse purchaseResponse) {...} @Override public void onPurchaseUpdatesResponse(PurchaseUpdatesResponse purchaseUpdatesResponse) {…} }; Purchasing Listener
  • 41. @Override public void onUserDataResponse(UserDataResponse response) { final UserDataResponse.RequestStatus status = response.getRequestStatus(); switch (status) { case SUCCESSFUL: currentUserId = response.getUserData().getUserId(); currentMarketplace = response.getUserData().getMarketplace(); break ; case FAILED: case NOT_SUPPORTED: // Fail gracefully. break ; } } U S E R D ATA R E S P O N S E Purchasing Listener Response Receiver
  • 42. P R O D U C T D ATA R E S P O N S E Purchasing Listener Response Receiver @Override public void onProductDataResponse(ProductDataResponse response) { switch (response.getRequestStatus()) { case SUCCESSFUL: for ( final String s : response.getUnavailableSkus()) { //perform action to hide/display unavailable SKUs } break ; case FAILED: break ; } }
  • 43. Button button = (Button) findViewById(R.id.subscriptionButton); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { PurchasingService.purchase(parentSKU); } }); P E R F O R M I N G P U R C H A S E Purchasing Service
  • 44. @Override public void onPurchaseResponse(PurchaseResponse purchaseResponse) { logthis("onPurchaseResponse"); logthis("Response: "+purchaseResponse.getRequestStatus().name()); logthis("SKU Purchased:"+purchaseResponse.getReceipt().getSku()); switch (purchaseResponse.getRequestStatus()) { case SUCCESSFUL: //notify fulfillment of the transaction PurchasingService.notifyFulfillment(purchaseResponse.getReceipt().getReceiptId(), FulfillmentResult.FULFILLED); break ; case FAILED: break ; } } @Override public void onPurchaseResponse(PurchaseResponse purchaseResponse) { logthis("onPurchaseResponse"); logthis("Response: "+purchaseResponse.getRequestStatus().name()); logthis("SKU Purchased:"+purchaseResponse.getReceipt().getSku()); switch (purchaseResponse.getRequestStatus()) { case SUCCESSFUL: //notify fulfillment of the transaction PurchasingService.notifyFulfillment(purchaseResponse.getReceipt().getReceiptId(), FulfillmentResult.FULFILLED); break ; case FAILED: break ; } } P U R C H A S E R E S P O N S E Purchasing Listener Purchasing Service Response Receiver
  • 45. P U R C H A S E U P D AT E S R E S P O N S E & G R A N T I N G I A P I T E M @Override public void onPurchaseUpdatesResponse(PurchaseUpdatesResponse response) { switch (response.getRequestStatus()) { case SUCCESSFUL: for ( final Receipt receipt : response.getReceipts()) { // Process receipts if (!receipt.isCanceled()){ // GRANT THE ITEMS TO THE USER } } if (response.hasMore()) { PurchasingService.getPurchaseUpdates(true); } break ; case FAILED: Log.d("FAILED","FAILED"); break ; } } }; Purchasing Listener Purchasing Service Response Receiver
  • 47. N E X T S T E P S Set up Live App Testing for your app Obfuscate your code Set up receipt verification using RVS
  • 48. G E T S TA RT E D W I T H I A P developer.amazon.com/in-app-purchasing