130 likes | 270 Views
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?)
E N D
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 • 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 & Products • Create Explicit App ID iniOS Provisioning Portal • Create App in iTunesConnect • Add Product(s) in iTunesConnect
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: [MKStoreManagersharedManager]; • Configure Plist • (If renewable, add shared secret to MKStoreKitConfigs.h)
Implementation: MKStoreKit Pt.2 • Implement purchase [[MKStoreManagersharedManager] 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