Purchasely
3.7
3.7
  • Welcome page
  • General
    • Presentation
  • Quick start
    • Console Configuration
    • SDK Implementation
    • Testing
    • Sample
  • Basic configuration
    • Console Configuration
      • Creating a new application
      • Creating your Products
        • App Store
        • Play Store
        • Huawei App Gallery
        • Amazon App Store
        • Products & Plans
      • Design your Paywalls
      • Design your Paywalls-Latest
        • Carousel
        • Carousel Flow
        • Features List
        • Features List & Plan Picker with 2 & 3 columns
        • Feature list overlay
        • Plan picker horizontal
        • Plan picker with 2 and 3 Column
    • SDK installation
      • iOS SDK
      • Android SDK
      • React Native SDK
      • Cordova SDK
      • Flutter SDK
      • Unity SDK
    • SDK configurations
      • Paywall observer mode
      • Full mode
      • StoreKit 2
      • Appendices
        • Start the SDK
        • Set User Id
        • Notify when the app is ready
        • Present paywalls
        • Unlock content / service
        • Close SDK (Android only)
    • Stripe (beta)
    • Purchasely with RevenueCat
  • S2S notifications
    • Server-to-server notifications ?
    • Apple App Store
    • Google Play Store
    • Huawei App Gallery
    • Amazon App Store
  • Analytics
    • Dashboards
      • Introduction
      • Live
      • Subscriptions
      • Cohorts
      • Trials
      • Events
    • Events
      • Webhook events
        • Subscription events
        • Subscription events attributes
      • SDK events
        • UI events
        • UI attributes
  • Integrations
    • Webhook
      • Receiving and understanding messages
      • Managing entitlements
      • Detailed sequence diagrams
    • Airship
    • Batch
    • Amplitude
    • AppsFlyer
    • Adjust
    • AT Internet (Piano Analytics)
    • Branch
    • Braze
    • Clevertap
    • Customer.io
    • Firebase
    • Iterable
    • Mixpanel
    • MoEngage
    • OneSignal
    • Segment
    • Sendinblue
  • Advanced Features
    • Asynchronous paywalls
    • Anonymous user
    • Associating content
    • Audiences
    • Customising UI
      • Errors & alerts
      • Controllers (iOS) / Fragments (Android)
    • Deeplinks automations
    • Disable placements
    • Displaying users subscriptions
    • Localization
    • Lottie animations
    • Non-subscription products
    • Paywall action interceptor
    • Promoting your products
      • Self-promotion
      • Promoting In-App Purchases
    • Purchase manually
    • Subscription status
    • Use your own paywall
  • Others
    • Frequently Asked Questions
    • Migration guides
      • Migrate to Purchasely
      • Webhook
        • Migrate to Webhook v3.0
      • SDK
        • Migrate to SDK v3.0
          • v2.2.0
          • v2.1.3
        • Migrate to SDK v3.1
        • Migrate to SDK v3.2
  • TESTING
    • Testing Cycle Durations
Powered by GitBook

© Purchasely 2020-2023

On this page
  • Configuration
  • Implementation
  • Complete code sample

Was this helpful?

Edit on GitHub
  1. Basic configuration
  2. SDK configurations

StoreKit 2

You can opt-in to use StoreKit2 for Apple In-App Purchases

PreviousFull modeNextAppendices

Last updated 2 years ago

Was this helpful?

To request StoreKit 2 usage, simply send an email to our support team or reach out to us via Intercom.

Purchasely, by default, uses StoreKit 1 to initiate and process purchases on iOS devices. However, if you wish to enable StoreKit 2 for users on iOS 15 and above, see requirements below, you can make a request to our support team. Our team will assist you in enabling StoreKit 2 for your application, ensuring a seamless purchasing experience for your users on the latest iOS devices. Users with devices below minimum requirements will continue to uses StoreKit 1 under the hood.

Configuration

Configuring StoreKit 2 with App Store Connect to allow Purchasely to verify transactions requires a . Once completed, you can update your application settings in Purchasely console. This configuration is essential for using StoreKit 2 with Purchasely SDK.

Enable App Store Connect API access

  • Sign in to

  • Go to "Users and Access"

  • Select "Keys" under the "In-App Purchase" section

  • Click on the "+" button to generate a new API key

  • Choose a name for the key and click "Generate"

  • Download the API key file (.p8), and note the Key ID and Issuer ID. Keep the file secure, as you won't be able to download it again

Setup StoreKit2 on Purchasely Console

  • Go to "App Settings"

  • Select Apple App Store" under the "Store configuration" section

  • Fill in the Private Key Id from the key you generated

  • Upload your Private Key File (.p8)

  • Fill your Issuer Id

  • Click on Save in the top right corner

Implementation

In order to activate StoreKit 2 for compatible devices within the Purchasely SDK, follow these steps to update your implementation:

  1. Enable StoreKit 2 flag

    Add the storeKit2 flag to the Purchasely.start() method in your app's initialization code. This will enable StoreKit 2 for users on compatible devices (iOS 15 and above).

    Purchasely.start(
        withApiKey: "API_KEY",
        storekitSettings: StorekitSettings(
            shouldUseStorekit2IfAvailable: true, 
            simulateAskToBuy: false)
    )
  2. Handling purchases and restorations (Paywall Observer mode)

    After processing a purchase or restoration, call

    try await Purchasely.syncPurchase(for: "apple product id")

Complete code sample

Purchasely.start(
    withApiKey: "API_KEY",
    appUserId: "USER_ID",
    runningMode: .full,
    eventDelegate: nil,
    uiDelegate: nil,
    paywallActionsInterceptor: nil,
    storekitSettings: StorekitSettings(shouldUseStorekit2IfAvailable: true, simulateAskToBuy: false),
    logLevel: .debug,
    initialized: nil
)

// Call syncPurchase if you are in paywallObserver mode after your purchase has been done.
try await Purchasely.syncPurchase(for: "apple-product-id")
[Purchasely startWithAPIKey:@"API_KEY"
                      appUserId:@"USER_ID"
                    runningMode:PLYRunningModeFull
                  eventDelegate:nil
                     uiDelegate:nil
      paywallActionsInterceptor:nil
               storekitSettings:[[StorekitSettings alloc] initWithShouldUseStorekit2IfAvailable:YES simulateAskToBuy:NO]
                       logLevel:LogLevelDebug
                    initialized:nil];
                    
 // Call syncPurchase if you are in paywallObserver mode after your purchase has been done.
 [Purchasely syncPurchaseFor:@"apple-product-id" completionHandler:^(NSError * _Nullable error) {
    // Handle Error.    
    }];

Purchasely SDK

  • iOS: 3.5.0

OS version (built with Xcode 14 or later)

  • iOS 15

  • iPadOS 15

  • macOS 12

  • tvOS 15

  • watchOS 8

Connect to

If you are using the Purchasely SDK in , it is essential to call Purchasely.syncPurchase() once a purchase or restoration has been processed. This allows the SDK to be aware of new transactions and ensures accurate data reporting for A/B tests and paywall conversion.

Purchasely Console
Paywall Observer mode
few steps
App Store Connect