Implementing In App Purchase on iOS

Christina Moulton, Teak Mobile Inc.

@ChristinaMltn, christina@teakmobile.com

KW iOS Training

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

  1. Create Explicit App ID in iOS Provisioning Portal
  2. Create App in iTunesConnect
  3. Add Product(s) in iTunesConnect

Set Up: iTunesConnect

Set Up: 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:

[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* receipt, NSArray* downloads) {
      NSLog(@"Purchased: %@", purchasedFeature);
    } onCancelled:^ {
      NSLog(@"User Cancelled Transaction");
    }
];

(If auto-renewing, setup expiry notifications)

Pull data from App Store to populate UI (at least price)

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

MKStoreKit

Intro to MKStoreKit:

App Store Review Guidelines

Based on iOS 5 Programming: Pushing the Limits, ch. 14: Selling Past the Sale with In App Purchase

Questions?

Christina Moulton, Teak Mobile Inc.

@ChristinaMltn, christina@teakmobile.com

KW iOS Training