Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building a modern subscription experience on iOS

Bas Broek
August 17, 2022

Building a modern subscription experience on iOS

Sharing a story on how we built subscriptions for the iOS WeTransfer app.

Bas Broek

August 17, 2022
Tweet

More Decks by Bas Broek

Other Decks in Programming

Transcript

  1. WHO AM I? ▸ @basthomas on Twitter ▸ XING ▸

    Moya, GitHawk ▸ Apple (macOS VoiceOver) ▸ WeTransfer 6 — @basthomas, SwiftConf, August 17, 2022
  2. WE GOT SOME DESIGNS. LET'S GET CRACKIN', RIGHT? 15 —

    @basthomas, SwiftConf, August 17, 2022
  3. public func purchase(product: StoreProduct) async throws -> PurchaseInformation { try

    checkRevenueCatConfiguration() let purchaseInformation = try await revenueCat.purchase(product: product) return .init( transaction: purchaseInformation.0, customerInformation: .init(customerInformation: purchaseInformation.1), isUserCancelled: purchaseInformation.2 ) } 37 — @basthomas, SwiftConf, August 17, 2022
  4. HAS ANYONE EVER TOLD YOU TO BE CAREFUL WITH FORCE-UNWRAPPING?

    41 — @basthomas, SwiftConf, August 17, 2022
  5. // when we are here, we should always be able

    // to find a package. if not, that's a programmer error 43 — @basthomas, SwiftConf, August 17, 2022
  6. // when we are here, we should always be able

    // to find a package. if not, that's a // programmer error... or an Apple issue. // So do _NOT_ crash. ! 45 — @basthomas, SwiftConf, August 17, 2022
  7. BE CAREFUL WITH "TRICKING" USERS TO BUY SUBSCRIPTIONS 78 —

    @basthomas, SwiftConf, August 17, 2022
  8. There's something one should expect not only of a watch

    but also of oneself: to never stand sti . — Walter Lange 84 — @basthomas, SwiftConf, August 17, 2022
  9. OPTIMIZATIONS TO CONSIDER ▸ Default to monthly ▸ Default to

    yearly ▸ Focus on Pro ▸ Focus on Premium ▸ Button colors ▸ Etc. etc. 88 — @basthomas, SwiftConf, August 17, 2022