Implementing In-App Purchases on iOS

Preview:

DESCRIPTION

Implementing In-App Purchases on iOS. Christina Moulton Teak Mobile Inc Teakmobile.com @ ChristinaMltn. How?. App Store Set up App Add items In App Purchase Restore S erver? MKStoreKit. Decisions. Price? Business Model Consumable Non-Consumable Subscription (auto-renew?) - PowerPoint PPT Presentation

Citation preview

Implementing In-App Purchases on iOS

Christina MoultonTeak Mobile IncTeakmobile.com@ChristinaMltn

How?• App Store–Set up App–Add items

• In App–Purchase–Restore–Server?–MKStoreKit

Decisions• Price?• Business Model–Consumable–Non-Consumable– Subscription (auto-renew?)

• Content Delivery–Compiled in– Your server–Apple Hosted

Rules• Reviewed like apps• Must use Apple’s API• Only virtual goods• No intermediate currency• Subscriptions: Minimum 7 days, all devices• Can’t sell access to camera, gyroscope, etc.• Auto-renewing subscriptions only for periodicals,

biz or media apps

See https://developer.apple.com/appstore/resources/approval/guidelines.html

Set Up: App & Products1. Create Explicit App ID in iOS

Provisioning Portal2. Create App in iTunesConnect3. Add Product(s) in iTunesConnect

Used for auto-renewing

subscriptions

Implementation: Requirements• Transaction completion went app interrupted• Track # of consumables• Restore non-consumables on multiple devices• Remember purchases securely (Keychain)• Remember non-renewing subscriptions• Validate of auto-renewing subscriptions on each

launch (latest purchase date)• Deliver content (check receipts on your server)• Localized prices and descriptions

Implementation: MKStoreKit Pt.1• https://github.com/MugunthKumar/MKStoreKit• Add MKStoreKit to project• Add Security and StoreKit Frameworks• Init in app delegate:

[MKStoreManager sharedManager];• Configure Plist• (If renewable, add shared secret to

MKStoreKitConfigs.h)

Implementation: MKStoreKit Pt.2• Implement purchase[[MKStoreManager sharedManager] buyFeature:kFeatureAId onComplete:^(NSString* purchasedFeature, NSData* purchasedReceipt, NSArray* downloads) { NSLog(@"Purchased: %@", purchasedFeature); } onCancelled:^ { NSLog(@"User Cancelled Transaction"); }];

• (If auto-renewing, setup expiry notifications)• Pull data from App Store to populate UI• Implement restoring purchases

Implementation: Testing• Test User Account in iTunesConnect• Banking & tax contracts must be set up• Other than hosted content, can use simulator• Sandbox can be slow

Resources• Demo Project: https://github.com/cmoulton/ioskwiap• MKStoreKit: https://github.com/MugunthKumar/MKStoreKit• Intro to MKStoreKit:

http://blog.mugunthkumar.com/coding/using-mkstorekit-in-your-apps/

• App Store Review Guidelines: https://developer.apple.com/appstore/resources/approval/guidelines.html

• Based on iOS 5 Programming: Pushing the Limits, ch. 14: Selling Past the Sale with In App Purchases http://www.amazon.ca/iOS-Programming-Pushing-Limits-Extraordinary/dp/1119961327

Recommended