Implementing In-App Purchases on iOS
description
Transcript of Implementing In-App Purchases on iOS
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