SlideShare a Scribd company logo
1 of 31
Presented by Max Stottrop

IN-APP PURCHASE
What I will cover today
โ€ข   Introduction
โ€ข   Proccess of implementing In-App Purchase
โ€ข   StoreKit Framework
โ€ข   Business & Tips
With In-App Purchase you canโ€ฆ
โ€ข   โ€ฆ embed a store directly to your application
โ€ข   It uses the Storekit Framework.
In-App Purchase Types

โ€ข   Non-Consumable


โ€ข   Consumable


โ€ข   Auto-renewable subscription


โ€ข   Free subscription


โ€ข   Non-renewable subscription
Walkthrough




 Create     Fetch     Purchase   Restore
Products   Products   Products   Products
Implementing In-App Purchase



               Setup        Sell
Determine                             Verify     Restore
            Products in   Products
 Product                             Product     previous
              iTunes        with
Offerings                            Receipts   Purchases
             Connect      StoreKit
Products
โ€ข   Supported types:
    โ€ข   Content
    โ€ข   Functionality
    โ€ข   Services
    โ€ข   Subscriptions
โ€ข   Each product has a unique productIdentifier.
โ€ข   No real-world goods!
iTunes Connect Setup

โ€ข   Setup your Products
โ€ข   Create a Test User
    โ€ข   One per country
โ€ข   Sign out of your Store Settings
    โ€ข   Donโ€˜t enter your Test Userโ€˜s Ids in the Settings
Store Kit Framework
         Validate In-App Purchase Access


           Retrieving product information


              Show the Store Interface


                Make the purchase


                Process Transaction


              Make the feature avaible


                 Finish Transaction


                 Verify the receipts


            Restore previous Purchases
Validate In-App Purchase Acces

โ€ข   Validate In-App Purchase Acces
โ€ข   Payment Queue class method canMakePurchase
Determine sellable products

โ€ข   Load Product IDs
โ€ข   Use SKProductsRequest to determine the sellable subset of the IDs


    NSSet* products = [NSSet setWithObject: @โ€productID1โ€, @โ€œproductID2โ€œ, nil];
    SKProductsRequest *request= [[SKProductsRequest alloc]
    initWithProductIdentifiers: products];
    [productRequest start];


    (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:
    (SKProductsResponse *)response {
                    response.invalidProductsIdentifiers == nonsellable;
                    response.products == sellable;
Show Store
โ€ข   UITableView Power?




    (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:
    (SKProductsResponse *)response {
                    for(SKProducts* aProduct in response.products)
                    cell.textLabel.text = aProduct.localizedTitle;
                    cell.textLabel.description = aProduct.localizedDescription;
                    cell.textLabel.extra = aProduct.price;
    }
Request payment

 โ€ข   SKPayment Class
     โ€ข   Create payment object
     โ€ข   Add it to the queue
     โ€ข   Observe the payment queue




 SKPayment *payRequest = [SKPayment paymentWithObject:selected];

 [[SKPaymentQueue defaultQueue] addPayment:payRequest];

 - (void)addTransactionObserver:(id <SKPaymentTransactionObserver>) observer
Complete Transaction
  โ€ข   updatedTransaction method
      โ€ข   SKPaymentTransactionStatePurchased = Succes
      โ€ข   SKPaymentTransactionStateRestored = Succes
  โ€ข   finishTransaction method



-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray
*)transactions {
   if (atransaction.transactionState == SKPaymentTransactionStatePurchased ) {
          //Unlock content
          [queue finishTransaction:aTransaction]; }
}
Collecting Payments
Feature Delivery

โ€ข   Self contained


โ€ข   Downloadable
Downloadable Content




             User sends               iPhone
   Fetch                    Apple                  Server     Apple
              payment                  sends
 Products                  returns                verifies    sends
             request to              receipt to
from Apple                receipts                receipt.   product
               Apple                   server
In-App Content



                User purchases
Embed content                      Application
                  content and
   in your                          unlocks
                 Apple verifies
 application.                     functionality.
                   payment.
Remember Product Purchase

  โ€ข   Use NSUserDefaults class and preference file
      โ€ข   unsecure, easy to โ€žhackโ€œ.
      โ€ข   saves to Application Support directory
  โ€ข   Use Keychain API
      โ€ข   Secure
      โ€ข   Saved to app Keychain Slice




[[NSUserDefaults standartUserDefaults] setObject:bought forKey:@โ€œboughtItemsโ€œ];


SecItemAdd ((CFDictionaryRef) boughtItems, NULL);
Verify Product Purchase




   Own          iTunes
                          Validation
  Server        Server
Verify Product Purchase


              Post Base64
  Check                          Server
                 encoded
Transaction                     verifies    App unlocks
               transaction
  receipt                     transaction     content
              to the server
Verify Product Purchase

โ€ข   Send JSON object with encoded transaction receipt
    โ€ข       {โ€œreceipt - dataโ€œ : โ€œ7b4187e54587ert27e2โ€œ}
โ€ข   Post to iTunes verification service
    โ€ข       http://buy.itunes.apple.com/verifyReceipt
    โ€ข       http://sandbox.itunes.apple.com/verifyReceipt
โ€ข   Get a JSON object
    โ€ข       {โ€œstatusโ€œ : 0, โ€œreceiptโ€œ : { โ€ฆ } }
        โ€ข       0 == Succes,
        โ€ข       everything else == BAD PIRATES AT WORK
Restore Previous Purchases
โ€ข   Free Subscription, Auto-
    Renewing Subscription, Non-
    Consumable items
โ€ข   [[SKPaymentQueue
    defaultQueue]
    restoreCompletedTransactions]
โ€ข   Subscription & Consumable need
    own mechanism



                                Proccess      โ€žAlready
     Customer
                                Succesfull   purchasedโ€œ
      signs in
                                Payment        Dialog
Business Model

โ€ข Which Model to choose?
โ€ข What to content sell?
  โ€ข Game
  โ€ข Everything else

                           Extra Levels
                           Social content
                           In-game Currency
                           Optional Content
                           Money for time/Time
Tips

โ€ข   Product Ids are unique across apps!
โ€ข   Built Store with sellable products only!
โ€ข   Use MBBase64 category from the CocoaDev website
โ€ข   Auto-renewing Subscription only for apps with dynamic content.
โ€ข   Only show the button when Internet Connection is avaible.
โ€ข   To test In-App Purchase you must add the Binary - Reject it!
โ€ข   After you added your Products, wait a bit!

โ€ข MKStoreKit: Open Source helper.
ONE LAST THING
StoreFront
StoreFront

โ€ข   Works via JSON to display Content, Downloads, Updates.
โ€ข   Allows to sell free content.
โ€ข   No additional server costs/bandwidth.
โ€ข   Restoring Auto-renewable Subscriptions - YAY
Q &A
THANKS!
Links

โ€ข   Receipt validation: http://bit.ly/zMuTKk, http://bit.ly/we2Pt0 & http://bit.ly/AB09Sv
โ€ข   Apple: http://bit.ly/xy7aGV, http://bit.ly/wyLec6 & http://bit.ly/weMm3p
โ€ข   MKStoreKit: https://github.com/MugunthKumar/MKStoreKit
โ€ข   StoreFront: http://urbanairship.com/docs/inapp_client.html
โ€ข   Dr. Touch's Purchase Button: http://bit.ly/zxGjcY

More Related Content

What's hot

TikTok Marketing: The Next Biggest Social Media Platform
TikTok Marketing: The Next Biggest Social Media PlatformTikTok Marketing: The Next Biggest Social Media Platform
TikTok Marketing: The Next Biggest Social Media PlatformMelvyn Tan
ย 
HootsuiteSocialMediaTrends2023_Report_en.pdf
HootsuiteSocialMediaTrends2023_Report_en.pdfHootsuiteSocialMediaTrends2023_Report_en.pdf
HootsuiteSocialMediaTrends2023_Report_en.pdfIdzwan Yacob
ย 
Lightning Web Component in Salesforce
Lightning Web Component in SalesforceLightning Web Component in Salesforce
Lightning Web Component in SalesforceJitendra Zaa
ย 
Influencer Marketing 101
Influencer Marketing 101Influencer Marketing 101
Influencer Marketing 101Gravity Thinking
ย 
Instagram slideshare
Instagram slideshareInstagram slideshare
Instagram slideshareJenYoungTO
ย 
Whatsapp Official Business
Whatsapp Official BusinessWhatsapp Official Business
Whatsapp Official BusinessRenata Punina
ย 
Twitter Best Practices 2023.pdf
Twitter Best Practices 2023.pdfTwitter Best Practices 2023.pdf
Twitter Best Practices 2023.pdfThe Orchard
ย 
Digital Marketing Trends 2023: How to Come Out on Top?
Digital Marketing Trends 2023: How to Come Out on Top?Digital Marketing Trends 2023: How to Come Out on Top?
Digital Marketing Trends 2023: How to Come Out on Top?Jomer Gregorio
ย 
Introduction of Instagram inc. (power point presentation)
 Introduction of Instagram inc. (power point presentation) Introduction of Instagram inc. (power point presentation)
Introduction of Instagram inc. (power point presentation)sai guntapelliwar
ย 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - IntroductionKnoldus Inc.
ย 
Snapchat Advertising
Snapchat Advertising Snapchat Advertising
Snapchat Advertising Brianna Hanson
ย 
Analytics and AI based Retention in e-commerce
Analytics and AI based Retention in e-commerceAnalytics and AI based Retention in e-commerce
Analytics and AI based Retention in e-commerceCleverTap
ย 
Zoho CRM Integration With Zoho Projects
Zoho CRM Integration With Zoho Projects Zoho CRM Integration With Zoho Projects
Zoho CRM Integration With Zoho Projects Cloud Analogy
ย 
Dynamic input tables lwc vs aura vs. visualforce
Dynamic input tables  lwc vs aura vs. visualforceDynamic input tables  lwc vs aura vs. visualforce
Dynamic input tables lwc vs aura vs. visualforceMike Tetlow
ย 
How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...
How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...
How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...Simplilearn
ย 
Whatsapp in marketing
Whatsapp in marketing Whatsapp in marketing
Whatsapp in marketing umamahes2994
ย 

What's hot (20)

Social Media Content Strategy
Social Media Content StrategySocial Media Content Strategy
Social Media Content Strategy
ย 
TikTok Marketing: The Next Biggest Social Media Platform
TikTok Marketing: The Next Biggest Social Media PlatformTikTok Marketing: The Next Biggest Social Media Platform
TikTok Marketing: The Next Biggest Social Media Platform
ย 
HootsuiteSocialMediaTrends2023_Report_en.pdf
HootsuiteSocialMediaTrends2023_Report_en.pdfHootsuiteSocialMediaTrends2023_Report_en.pdf
HootsuiteSocialMediaTrends2023_Report_en.pdf
ย 
Web3 Development Report Q3 2022 - Alchemy
Web3 Development Report Q3 2022 - AlchemyWeb3 Development Report Q3 2022 - Alchemy
Web3 Development Report Q3 2022 - Alchemy
ย 
Lightning Web Component in Salesforce
Lightning Web Component in SalesforceLightning Web Component in Salesforce
Lightning Web Component in Salesforce
ย 
Influencer Marketing 101
Influencer Marketing 101Influencer Marketing 101
Influencer Marketing 101
ย 
Instagram slideshare
Instagram slideshareInstagram slideshare
Instagram slideshare
ย 
Whatsapp Official Business
Whatsapp Official BusinessWhatsapp Official Business
Whatsapp Official Business
ย 
NYU Talk
NYU TalkNYU Talk
NYU Talk
ย 
Twitter Best Practices 2023.pdf
Twitter Best Practices 2023.pdfTwitter Best Practices 2023.pdf
Twitter Best Practices 2023.pdf
ย 
Digital Marketing Trends 2023: How to Come Out on Top?
Digital Marketing Trends 2023: How to Come Out on Top?Digital Marketing Trends 2023: How to Come Out on Top?
Digital Marketing Trends 2023: How to Come Out on Top?
ย 
Introduction of Instagram inc. (power point presentation)
 Introduction of Instagram inc. (power point presentation) Introduction of Instagram inc. (power point presentation)
Introduction of Instagram inc. (power point presentation)
ย 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
ย 
Snapchat Advertising
Snapchat Advertising Snapchat Advertising
Snapchat Advertising
ย 
Analytics and AI based Retention in e-commerce
Analytics and AI based Retention in e-commerceAnalytics and AI based Retention in e-commerce
Analytics and AI based Retention in e-commerce
ย 
Zoho CRM Integration With Zoho Projects
Zoho CRM Integration With Zoho Projects Zoho CRM Integration With Zoho Projects
Zoho CRM Integration With Zoho Projects
ย 
Dynamic input tables lwc vs aura vs. visualforce
Dynamic input tables  lwc vs aura vs. visualforceDynamic input tables  lwc vs aura vs. visualforce
Dynamic input tables lwc vs aura vs. visualforce
ย 
Instagram
InstagramInstagram
Instagram
ย 
How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...
How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...
How To Increase Followers On Instagram | 20 Tips To Increase Instagram Follow...
ย 
Whatsapp in marketing
Whatsapp in marketing Whatsapp in marketing
Whatsapp in marketing
ย 

Viewers also liked

TizenLog.pl: In App Purchase
TizenLog.pl: In App PurchaseTizenLog.pl: In App Purchase
TizenLog.pl: In App PurchaseoMatej
ย 
The Power Of In-App Purchases
The Power Of In-App PurchasesThe Power Of In-App Purchases
The Power Of In-App PurchasesNoel Llopis
ย 
IAP introduce@myBook
IAP introduce@myBook IAP introduce@myBook
IAP introduce@myBook Jason Huang
ย 
IAP auto renewable in practice
IAP auto renewable  in practiceIAP auto renewable  in practice
IAP auto renewable in practiceHokila Jan
ย 
SwiftyJSON ๆ…˜็—›็ถ“้ฉ—
SwiftyJSON   ๆ…˜็—›็ถ“้ฉ—SwiftyJSON   ๆ…˜็—›็ถ“้ฉ—
SwiftyJSON ๆ…˜็—›็ถ“้ฉ—Hokila Jan
ย 

Viewers also liked (6)

TizenLog.pl: In App Purchase
TizenLog.pl: In App PurchaseTizenLog.pl: In App Purchase
TizenLog.pl: In App Purchase
ย 
The Power Of In-App Purchases
The Power Of In-App PurchasesThe Power Of In-App Purchases
The Power Of In-App Purchases
ย 
IAP introduce@myBook
IAP introduce@myBook IAP introduce@myBook
IAP introduce@myBook
ย 
IAP auto renewable in practice
IAP auto renewable  in practiceIAP auto renewable  in practice
IAP auto renewable in practice
ย 
SwiftyJSON ๆ…˜็—›็ถ“้ฉ—
SwiftyJSON   ๆ…˜็—›็ถ“้ฉ—SwiftyJSON   ๆ…˜็—›็ถ“้ฉ—
SwiftyJSON ๆ…˜็—›็ถ“้ฉ—
ย 
Newsstand
NewsstandNewsstand
Newsstand
ย 

Similar to In-App Purchase

In App Purchases
In  App  PurchasesIn  App  Purchases
In App PurchasesMugunth Kumar
ย 
Testing In App Billing
Testing In App BillingTesting In App Billing
Testing In App BillingRyan Harter
ย 
Android In-app Billing @ Droidcon Murcia
Android In-app Billing @ Droidcon MurciaAndroid In-app Billing @ Droidcon Murcia
Android In-app Billing @ Droidcon MurciaRobot Media
ย 
Android in-app billing @ Google DevFest Barcelona 2012
Android in-app billing @ Google DevFest Barcelona 2012Android in-app billing @ Google DevFest Barcelona 2012
Android in-app billing @ Google DevFest Barcelona 2012Robot Media
ย 
App Store Subscriptions - Condensed Edition
App Store Subscriptions - Condensed EditionApp Store Subscriptions - Condensed Edition
App Store Subscriptions - Condensed EditionMark Pavlidis
ย 
INTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILE
INTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILEINTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILE
INTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILERajesh Roky
ย 
Monetize your app_with_google_subscriptions_v3_services_intuit
Monetize your app_with_google_subscriptions_v3_services_intuitMonetize your app_with_google_subscriptions_v3_services_intuit
Monetize your app_with_google_subscriptions_v3_services_intuitManohar Mahapatra
ย 
Oracle iprocurement-101018113112-phpapp01
Oracle iprocurement-101018113112-phpapp01Oracle iprocurement-101018113112-phpapp01
Oracle iprocurement-101018113112-phpapp01Kaushik Kumar Kuberanathan
ย 
Android In-App Billing @ Droidcon 2011
Android In-App Billing @ Droidcon 2011Android In-App Billing @ Droidcon 2011
Android In-App Billing @ Droidcon 2011Robot Media
ย 
Extending Sitecore Commerce Connect
Extending Sitecore Commerce ConnectExtending Sitecore Commerce Connect
Extending Sitecore Commerce ConnectKautilya Prasad
ย 
Extending Sitecore Commerce Connect
Extending Sitecore Commerce ConnectExtending Sitecore Commerce Connect
Extending Sitecore Commerce ConnectKautilya Prasad
ย 
How to migrate an application in IBM APIc, and preserve its client credential
How to migrate an application in IBM APIc, and preserve its client credentialHow to migrate an application in IBM APIc, and preserve its client credential
How to migrate an application in IBM APIc, and preserve its client credentialShiu-Fun Poon
ย 
Sug bangalore - sitecore commerce introduction
Sug bangalore - sitecore commerce introductionSug bangalore - sitecore commerce introduction
Sug bangalore - sitecore commerce introductionAnindita Bhattacharya
ย 
SPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersSPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersNCCOMMS
ย 
Android In-App Billing @ Barcelona GTUG
Android In-App Billing @ Barcelona GTUGAndroid In-App Billing @ Barcelona GTUG
Android In-App Billing @ Barcelona GTUGRobot Media
ย 
Creating a Symfony Ecommerce App
Creating a Symfony Ecommerce AppCreating a Symfony Ecommerce App
Creating a Symfony Ecommerce AppMuhammad Azaz Qadir
ย 
An Introduction to Drupal Commerce & Real World Examples
An Introduction to Drupal Commerce & Real World ExamplesAn Introduction to Drupal Commerce & Real World Examples
An Introduction to Drupal Commerce & Real World ExamplesPhase2
ย 
iOS In-App-Purchase verifying receipt locally in Swift
iOS In-App-Purchase verifying receipt locally in SwiftiOS In-App-Purchase verifying receipt locally in Swift
iOS In-App-Purchase verifying receipt locally in SwiftKaz Yoshikawa
ย 
Codestrong 2012 breakout session how to develop your own modules
Codestrong 2012 breakout session   how to develop your own modulesCodestrong 2012 breakout session   how to develop your own modules
Codestrong 2012 breakout session how to develop your own modulesAxway Appcelerator
ย 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumAaron Saunders
ย 

Similar to In-App Purchase (20)

In App Purchases
In  App  PurchasesIn  App  Purchases
In App Purchases
ย 
Testing In App Billing
Testing In App BillingTesting In App Billing
Testing In App Billing
ย 
Android In-app Billing @ Droidcon Murcia
Android In-app Billing @ Droidcon MurciaAndroid In-app Billing @ Droidcon Murcia
Android In-app Billing @ Droidcon Murcia
ย 
Android in-app billing @ Google DevFest Barcelona 2012
Android in-app billing @ Google DevFest Barcelona 2012Android in-app billing @ Google DevFest Barcelona 2012
Android in-app billing @ Google DevFest Barcelona 2012
ย 
App Store Subscriptions - Condensed Edition
App Store Subscriptions - Condensed EditionApp Store Subscriptions - Condensed Edition
App Store Subscriptions - Condensed Edition
ย 
INTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILE
INTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILEINTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILE
INTEGRATED SHOPPING ASSISTANCE WITH FREDGE AND MOBILE
ย 
Monetize your app_with_google_subscriptions_v3_services_intuit
Monetize your app_with_google_subscriptions_v3_services_intuitMonetize your app_with_google_subscriptions_v3_services_intuit
Monetize your app_with_google_subscriptions_v3_services_intuit
ย 
Oracle iprocurement-101018113112-phpapp01
Oracle iprocurement-101018113112-phpapp01Oracle iprocurement-101018113112-phpapp01
Oracle iprocurement-101018113112-phpapp01
ย 
Android In-App Billing @ Droidcon 2011
Android In-App Billing @ Droidcon 2011Android In-App Billing @ Droidcon 2011
Android In-App Billing @ Droidcon 2011
ย 
Extending Sitecore Commerce Connect
Extending Sitecore Commerce ConnectExtending Sitecore Commerce Connect
Extending Sitecore Commerce Connect
ย 
Extending Sitecore Commerce Connect
Extending Sitecore Commerce ConnectExtending Sitecore Commerce Connect
Extending Sitecore Commerce Connect
ย 
How to migrate an application in IBM APIc, and preserve its client credential
How to migrate an application in IBM APIc, and preserve its client credentialHow to migrate an application in IBM APIc, and preserve its client credential
How to migrate an application in IBM APIc, and preserve its client credential
ย 
Sug bangalore - sitecore commerce introduction
Sug bangalore - sitecore commerce introductionSug bangalore - sitecore commerce introduction
Sug bangalore - sitecore commerce introduction
ย 
SPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersSPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event Handlers
ย 
Android In-App Billing @ Barcelona GTUG
Android In-App Billing @ Barcelona GTUGAndroid In-App Billing @ Barcelona GTUG
Android In-App Billing @ Barcelona GTUG
ย 
Creating a Symfony Ecommerce App
Creating a Symfony Ecommerce AppCreating a Symfony Ecommerce App
Creating a Symfony Ecommerce App
ย 
An Introduction to Drupal Commerce & Real World Examples
An Introduction to Drupal Commerce & Real World ExamplesAn Introduction to Drupal Commerce & Real World Examples
An Introduction to Drupal Commerce & Real World Examples
ย 
iOS In-App-Purchase verifying receipt locally in Swift
iOS In-App-Purchase verifying receipt locally in SwiftiOS In-App-Purchase verifying receipt locally in Swift
iOS In-App-Purchase verifying receipt locally in Swift
ย 
Codestrong 2012 breakout session how to develop your own modules
Codestrong 2012 breakout session   how to develop your own modulesCodestrong 2012 breakout session   how to develop your own modules
Codestrong 2012 breakout session how to develop your own modules
ย 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator Titanium
ย 

Recently uploaded

VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...
VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...
VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...SUHANI PANDEY
ย 
young call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Service
young call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Serviceyoung call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Service
young call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Service9953056974 Low Rate Call Girls In Saket, Delhi NCR
ย 
Pakistani Call girls in Ajman +971563133746 Ajman Call girls
Pakistani Call girls in Ajman +971563133746 Ajman Call girlsPakistani Call girls in Ajman +971563133746 Ajman Call girls
Pakistani Call girls in Ajman +971563133746 Ajman Call girlsgwenoracqe6
ย 
Call Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857 โžก๏ธ Delhi ๐Ÿซฆ Russian Escorts FULL ENJOY
Call Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857  โžก๏ธ Delhi ๐Ÿซฆ  Russian Escorts FULL ENJOYCall Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857  โžก๏ธ Delhi ๐Ÿซฆ  Russian Escorts FULL ENJOY
Call Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857 โžก๏ธ Delhi ๐Ÿซฆ Russian Escorts FULL ENJOYCall Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
ย 
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girladitipandeya
ย 
SME IPO and sme ipo listing consultants .pptx
SME IPO and sme ipo listing consultants .pptxSME IPO and sme ipo listing consultants .pptx
SME IPO and sme ipo listing consultants .pptxindia IPO
ย 
Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024CollectiveMining1
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual serviceCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual serviceanilsa9823
ย 
Editing progress 20th march.docxxxxxxxxx
Editing progress 20th march.docxxxxxxxxxEditing progress 20th march.docxxxxxxxxx
Editing progress 20th march.docxxxxxxxxxMollyBrown86
ย 
Call Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our EscortsCall Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our Escortsindian call girls near you
ย 
Enjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort Service
Enjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort ServiceEnjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort Service
Enjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort ServiceDelhi Call girls
ย 
VIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call Girladitipandeya
ย 
(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...
(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida  ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida  ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...
(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service ๐Ÿงฆ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service  ๐ŸงฆCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service  ๐Ÿงฆ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service ๐Ÿงฆanilsa9823
ย 
slideshare Call girls Noida Escorts 9999965857 henakhan
slideshare Call girls Noida Escorts 9999965857 henakhanslideshare Call girls Noida Escorts 9999965857 henakhan
slideshare Call girls Noida Escorts 9999965857 henakhanhanshkumar9870
ย 
Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024CollectiveMining1
ย 
VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...
VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...
VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...SUHANI PANDEY
ย 
Best investment platform in india-Falcon Invoice Discounting
Best investment platform in india-Falcon Invoice DiscountingBest investment platform in india-Falcon Invoice Discounting
Best investment platform in india-Falcon Invoice DiscountingFalcon Invoice Discounting
ย 

Recently uploaded (20)

VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...
VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...
VVIP Pune Call Girls Handewadi WhatSapp Number 8005736733 With Elite Staff An...
ย 
young call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Service
young call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Serviceyoung call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Service
young call girls in Mahavir Nagar ๐Ÿ” 9953056974 ๐Ÿ” Delhi escort Service
ย 
Pakistani Call girls in Ajman +971563133746 Ajman Call girls
Pakistani Call girls in Ajman +971563133746 Ajman Call girlsPakistani Call girls in Ajman +971563133746 Ajman Call girls
Pakistani Call girls in Ajman +971563133746 Ajman Call girls
ย 
Call Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857 โžก๏ธ Delhi ๐Ÿซฆ Russian Escorts FULL ENJOY
Call Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857  โžก๏ธ Delhi ๐Ÿซฆ  Russian Escorts FULL ENJOYCall Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857  โžก๏ธ Delhi ๐Ÿซฆ  Russian Escorts FULL ENJOY
Call Girls ๐Ÿซค Hauz Khas โžก๏ธ 9999965857 โžก๏ธ Delhi ๐Ÿซฆ Russian Escorts FULL ENJOY
ย 
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
ย 
(INDIRA) Call Girl Kashmir Call Now 8617697112 Kashmir Escorts 24x7
(INDIRA) Call Girl Kashmir Call Now 8617697112 Kashmir Escorts 24x7(INDIRA) Call Girl Kashmir Call Now 8617697112 Kashmir Escorts 24x7
(INDIRA) Call Girl Kashmir Call Now 8617697112 Kashmir Escorts 24x7
ย 
SME IPO and sme ipo listing consultants .pptx
SME IPO and sme ipo listing consultants .pptxSME IPO and sme ipo listing consultants .pptx
SME IPO and sme ipo listing consultants .pptx
ย 
Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024
ย 
Russian Call Girls Rohini Sector 3 ๐Ÿ’“ Delhi 9999965857 @Sabina Modi VVIP MODEL...
Russian Call Girls Rohini Sector 3 ๐Ÿ’“ Delhi 9999965857 @Sabina Modi VVIP MODEL...Russian Call Girls Rohini Sector 3 ๐Ÿ’“ Delhi 9999965857 @Sabina Modi VVIP MODEL...
Russian Call Girls Rohini Sector 3 ๐Ÿ’“ Delhi 9999965857 @Sabina Modi VVIP MODEL...
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual serviceCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Fazullaganj Lucknow best sexual service
ย 
Editing progress 20th march.docxxxxxxxxx
Editing progress 20th march.docxxxxxxxxxEditing progress 20th march.docxxxxxxxxx
Editing progress 20th march.docxxxxxxxxx
ย 
Call Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our EscortsCall Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in Friends Colony 9711199171 Delhi Enjoy Call Girls With Our Escorts
ย 
Enjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort Service
Enjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort ServiceEnjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort Service
Enjoy NightโšกCall Girls Udyog Vihar Gurgaon >เผ’8448380779 Escort Service
ย 
VIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Miyapur high-profile Call Girl
ย 
(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...
(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida  ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida  ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...
(๐Ÿ‘‰๏พŸ9999965857 ๏พŸ)๐Ÿ‘‰ VIP Call Girls Greater Noida ๐Ÿ‘‰ Delhi ๐Ÿ‘ˆ : 9999 Cash Payment...
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service ๐Ÿงฆ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service  ๐ŸงฆCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service  ๐Ÿงฆ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Vineet Khand Lucknow best Night Fun service ๐Ÿงฆ
ย 
slideshare Call girls Noida Escorts 9999965857 henakhan
slideshare Call girls Noida Escorts 9999965857 henakhanslideshare Call girls Noida Escorts 9999965857 henakhan
slideshare Call girls Noida Escorts 9999965857 henakhan
ย 
Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024Collective Mining | Corporate Presentation - May 2024
Collective Mining | Corporate Presentation - May 2024
ย 
VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...
VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...
VVIP Pune Call Girls Sopan Baug WhatSapp Number 8005736733 With Elite Staff A...
ย 
Best investment platform in india-Falcon Invoice Discounting
Best investment platform in india-Falcon Invoice DiscountingBest investment platform in india-Falcon Invoice Discounting
Best investment platform in india-Falcon Invoice Discounting
ย 

In-App Purchase

  • 1. Presented by Max Stottrop IN-APP PURCHASE
  • 2. What I will cover today โ€ข Introduction โ€ข Proccess of implementing In-App Purchase โ€ข StoreKit Framework โ€ข Business & Tips
  • 3. With In-App Purchase you canโ€ฆ โ€ข โ€ฆ embed a store directly to your application โ€ข It uses the Storekit Framework.
  • 4. In-App Purchase Types โ€ข Non-Consumable โ€ข Consumable โ€ข Auto-renewable subscription โ€ข Free subscription โ€ข Non-renewable subscription
  • 5. Walkthrough Create Fetch Purchase Restore Products Products Products Products
  • 6. Implementing In-App Purchase Setup Sell Determine Verify Restore Products in Products Product Product previous iTunes with Offerings Receipts Purchases Connect StoreKit
  • 7. Products โ€ข Supported types: โ€ข Content โ€ข Functionality โ€ข Services โ€ข Subscriptions โ€ข Each product has a unique productIdentifier. โ€ข No real-world goods!
  • 8. iTunes Connect Setup โ€ข Setup your Products โ€ข Create a Test User โ€ข One per country โ€ข Sign out of your Store Settings โ€ข Donโ€˜t enter your Test Userโ€˜s Ids in the Settings
  • 9. Store Kit Framework Validate In-App Purchase Access Retrieving product information Show the Store Interface Make the purchase Process Transaction Make the feature avaible Finish Transaction Verify the receipts Restore previous Purchases
  • 10. Validate In-App Purchase Acces โ€ข Validate In-App Purchase Acces โ€ข Payment Queue class method canMakePurchase
  • 11. Determine sellable products โ€ข Load Product IDs โ€ข Use SKProductsRequest to determine the sellable subset of the IDs NSSet* products = [NSSet setWithObject: @โ€productID1โ€, @โ€œproductID2โ€œ, nil]; SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: products]; [productRequest start]; (void)productsRequest:(SKProductsRequest *)request didReceiveResponse: (SKProductsResponse *)response { response.invalidProductsIdentifiers == nonsellable; response.products == sellable;
  • 12. Show Store โ€ข UITableView Power? (void)productsRequest:(SKProductsRequest *)request didReceiveResponse: (SKProductsResponse *)response { for(SKProducts* aProduct in response.products) cell.textLabel.text = aProduct.localizedTitle; cell.textLabel.description = aProduct.localizedDescription; cell.textLabel.extra = aProduct.price; }
  • 13. Request payment โ€ข SKPayment Class โ€ข Create payment object โ€ข Add it to the queue โ€ข Observe the payment queue SKPayment *payRequest = [SKPayment paymentWithObject:selected]; [[SKPaymentQueue defaultQueue] addPayment:payRequest]; - (void)addTransactionObserver:(id <SKPaymentTransactionObserver>) observer
  • 14. Complete Transaction โ€ข updatedTransaction method โ€ข SKPaymentTransactionStatePurchased = Succes โ€ข SKPaymentTransactionStateRestored = Succes โ€ข finishTransaction method -(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { if (atransaction.transactionState == SKPaymentTransactionStatePurchased ) { //Unlock content [queue finishTransaction:aTransaction]; } }
  • 16. Feature Delivery โ€ข Self contained โ€ข Downloadable
  • 17. Downloadable Content User sends iPhone Fetch Apple Server Apple payment sends Products returns verifies sends request to receipt to from Apple receipts receipt. product Apple server
  • 18. In-App Content User purchases Embed content Application content and in your unlocks Apple verifies application. functionality. payment.
  • 19. Remember Product Purchase โ€ข Use NSUserDefaults class and preference file โ€ข unsecure, easy to โ€žhackโ€œ. โ€ข saves to Application Support directory โ€ข Use Keychain API โ€ข Secure โ€ข Saved to app Keychain Slice [[NSUserDefaults standartUserDefaults] setObject:bought forKey:@โ€œboughtItemsโ€œ]; SecItemAdd ((CFDictionaryRef) boughtItems, NULL);
  • 20. Verify Product Purchase Own iTunes Validation Server Server
  • 21. Verify Product Purchase Post Base64 Check Server encoded Transaction verifies App unlocks transaction receipt transaction content to the server
  • 22. Verify Product Purchase โ€ข Send JSON object with encoded transaction receipt โ€ข {โ€œreceipt - dataโ€œ : โ€œ7b4187e54587ert27e2โ€œ} โ€ข Post to iTunes verification service โ€ข http://buy.itunes.apple.com/verifyReceipt โ€ข http://sandbox.itunes.apple.com/verifyReceipt โ€ข Get a JSON object โ€ข {โ€œstatusโ€œ : 0, โ€œreceiptโ€œ : { โ€ฆ } } โ€ข 0 == Succes, โ€ข everything else == BAD PIRATES AT WORK
  • 23. Restore Previous Purchases โ€ข Free Subscription, Auto- Renewing Subscription, Non- Consumable items โ€ข [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] โ€ข Subscription & Consumable need own mechanism Proccess โ€žAlready Customer Succesfull purchasedโ€œ signs in Payment Dialog
  • 24. Business Model โ€ข Which Model to choose? โ€ข What to content sell? โ€ข Game โ€ข Everything else Extra Levels Social content In-game Currency Optional Content Money for time/Time
  • 25. Tips โ€ข Product Ids are unique across apps! โ€ข Built Store with sellable products only! โ€ข Use MBBase64 category from the CocoaDev website โ€ข Auto-renewing Subscription only for apps with dynamic content. โ€ข Only show the button when Internet Connection is avaible. โ€ข To test In-App Purchase you must add the Binary - Reject it! โ€ข After you added your Products, wait a bit! โ€ข MKStoreKit: Open Source helper.
  • 28. StoreFront โ€ข Works via JSON to display Content, Downloads, Updates. โ€ข Allows to sell free content. โ€ข No additional server costs/bandwidth. โ€ข Restoring Auto-renewable Subscriptions - YAY
  • 29. Q &A
  • 31. Links โ€ข Receipt validation: http://bit.ly/zMuTKk, http://bit.ly/we2Pt0 & http://bit.ly/AB09Sv โ€ข Apple: http://bit.ly/xy7aGV, http://bit.ly/wyLec6 & http://bit.ly/weMm3p โ€ข MKStoreKit: https://github.com/MugunthKumar/MKStoreKit โ€ข StoreFront: http://urbanairship.com/docs/inapp_client.html โ€ข Dr. Touch's Purchase Button: http://bit.ly/zxGjcY

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. Easy to implement\nNo server cost\nApplication size rises.\nContent cannot be changed or updated\n
  6. Get In-App Identifiers\nGet Product Info\nShow the UI\nMake the purchase\nProcess Transaction\nMake the feature avaible\nFinish Transaction\n
  7. \n
  8. \n
  9. Get In-App Identifiers\nGet Product Info\nShow the UI\nMake the purchase\nProcess Transaction\nMake the feature avaible\nFinish Transaction\n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. When the payment is added to the payment queue, a persistent transaction is created to hold it. After the payment is processed, the transaction is updated with information about the payment collection. Your application implements an observer that receives messages when transactions are updated. The observer should provide purchased items to the user and then remove the transaction from the payment queue.\nSKPayment\nCollecting payment starts with a payment object. The payment object includes a product identifier and optionally includes the quantity of that product to be purchased. You can queue the same payment object more than once; each time a payment object is queued results in a separate request for payment.\nUsers can disable the ability to make purchases in the Settings application. Before attempting to queue a purchase, your application should first confirm that payment can be processed. You do this by calling the payment queue&amp;#x2019;s canMakePayments method.\nSKPaymentQueue\nThe payment queue is used to communicate with the App Store. When payments are added to the queue, Store Kit transmits the request to the App Store. Store Kit presents dialogs to ask the user to authorize payment. The completed transaction is returned to your application&amp;#x2019;s observer.\nSKPaymentTransaction\nA transaction is created for every payment added to the queue. Each transaction has properties that allow your application to determine the status of the transaction. When payment is collected, the transaction includes additional details about the successful transaction.\nAlthough your application can ask the payment queue for a list of pending transactions, it is more common for an application to wait until the payment queue notifies the payment queue&amp;#x2019;s observer with a list of updated transactions.\nSKPaymentTransactionObserver\nYour application implements the SKPaymentTransactionObserver protocol on an object and adds it as an observer to the payment queue. The observer&amp;#x2019;s primary responsibility is to examine completed transactions, deliver items that were successfully purchased, and remove those transactions from the payment queue.\nYour application should associate an observer with the payment queue when it launches, rather than wait until the user attempts to purchase an item. Transactions are not lost when an application terminates. The next time the application launches, Store Kit resumes processing transactions. Adding the observer during your application&amp;#x2019;s initialization ensures that all transactions are returned to your application.\n
  16. \n
  17. Dynamic content\nKeep application size under 10mb\nMore secure (out of band receipt verification)\n
  18. Easy to implement\nNo server cost\nApplication size rises.\nContent cannot be changed or updated\n
  19. NSBundle *bundle = [NSBundle mainBundle];NSDictionary *info = [bundle infoDictionary];if ([info objectForKey: @&quot;SignerIdentity&quot;] != nil){/* do something */}\n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n