Fixes SDK-3084  ## Changes: - Added new `ENABLE_CUSTOM_ENTITLEMENT_COMPUTATION` compile time flag - Hidden `configureInCustomEntitlementsModeWithApiKey` behind `ENABLE_CUSTOM_ENTITLEMENT_COMPUTATION` - Added new `RevenueCat_CustomEntitlementComputation` SPM target and library - Added CircleCI job for `swift build --target RevenueCat_CustomEntitlementComputation` - Added new `SPMCustomEntitlementComputationInstallation` using the new `configureInCustomEntitlementsComputationMode` - Added CircleCI job for `SPMCustomEntitlementComputationInstallation` - Added `FrameworkDisambiguation.swift` to avoid using `RevenueCat.` disambiguation for files that - Changed API testers to only use the new methods if `ENABLE_CUSTOM_ENTITLEMENT_COMPUTATION` is defined - Updated `DangerousSettings` to not expose `customEntitlementComputation` publicly. The only way to use that now with `public` API is through `Purchases.configureInCustomEntitlementsModeWithApiKey` - Updated sample app to use new library
6.5 KiB
RevenueCat
😻 In-App Subscriptions Made Easy 😻
Overview
RevenueCat is a powerful, reliable, and free to use in-app purchase server with cross-platform support. Our open-source framework provides a backend and a wrapper around StoreKit and Google Play Billing to make implementing in-app purchases and subscriptions easy.
Whether you are building a new app or already have millions of customers, you can use RevenueCat to:
- Fetch products, make purchases, and check subscription status with our native SDKs.
- Host and configure products remotely from our dashboard.
- Analyze the most important metrics for your app business in one place.
- See customer transaction histories, chart lifetime value, and grant promotional subscriptions.
- Get notified of real-time events through webhooks.
- Send enriched purchase events to analytics and attribution tools with our easy integrations.
Sign up to get started for free.
RevenueCat SDK Features
| RevenueCat | |
|---|---|
| ✅ | Server-side receipt validation |
| ➡️ | Webhooks - enhanced server-to-server communication with events for purchases, renewals, cancellations, and more |
| 🖥 | iOS, tvOS, macOS and watchOS support |
| 🎯 | Subscription status tracking - know whether a user is subscribed whether they're on iOS, Android or web |
| 📊 | Analytics - automatic calculation of metrics like conversion, mrr, and churn |
| 📝 | Online documentation up to date |
| 🔀 | Integrations - over a dozen integrations to easily send purchase data where you need it |
| 💯 | Well maintained - frequent releases |
| 📮 | Great support - Help Center |
- Important: You're viewing the documentation for RevenueCat iOS SDK version 4. For documentation on version 3, visit the docs for RevenueCat iOS SDK version 3.
Migrating from Purchases v3
When transitioning between our V3 SDK, we ported our entire SDK into Swift. Migrating from Objective-C to Swift required a number of API changes, but we feel that the changes resulted in the SDK having a more natural feel for developers. In addition, we introduced several new types and APIs.
Our doc:V4_API_Migration_guide provides information on how to migrate from V3 to V4.
Getting Started
For more detailed information, you can view our complete documentation at docs.revenuecat.com.
Or browse our iOS sample apps:
Topics
Purchases
Purchases
Configuring the SDK
Purchases/configure(withAPIKey:)Purchases/configure(with:)-6oipyPurchasesDiagnostics
Displaying Products
-
Offerings -
Offering -
Package -
StoreProduct -
SubscriptionPeriod -
Purchases/offerings() -
Purchases/getOfferings(completion:) -
Purchases/products(_:) -
Purchases/getProducts(_:completion:)
Making Purchases
-
StoreTransaction -
Purchases/purchase(package:) -
Purchases/purchase(package:completion:) -
Purchases/purchase(product:) -
Purchases/purchase(product:completion:)
Making Purchases with Subscription Offers
-
IntroEligibility -
PromotionalOffer -
StoreProductDiscount -
Purchases/checkTrialOrIntroDiscountEligibility(productIdentifiers:) -
Purchases/checkTrialOrIntroDiscountEligibility(productIdentifiers:completion:) -
Purchases/checkTrialOrIntroDiscountEligibility(product:) -
Purchases/checkTrialOrIntroDiscountEligibility(product:completion:) -
Purchases/promotionalOffer(forProductDiscount:product:) -
Purchases/getPromotionalOffer(forProductDiscount:product:completion:) -
Purchases/purchase(package:promotionalOffer:) -
Purchases/purchase(package:promotionalOffer:completion:) -
Purchases/purchase(product:promotionalOffer:) -
Purchases/purchase(product:promotionalOffer:completion:)
Subscription Status
-
CustomerInfo -
EntitlementInfo -
EntitlementInfos -
PurchasesDelegate -
Purchases/getCustomerInfo(completion:) -
Purchases/customerInfo(fetchPolicy:) -
Purchases/customerInfoStream
Identifying Users
Purchases/logIn(_:)-arjaPurchases/logIn(_:completion:)-4km90Purchases/logOut()Purchases/logOut(completion:)
Managing Subscriptions
Purchases/syncPurchases()Purchases/syncPurchases(completion:)Purchases/restorePurchases()Purchases/restorePurchases(completion:)Purchases/beginRefundRequestForActiveEntitlement()Purchases/beginRefundRequest(forEntitlement:)Purchases/beginRefundRequest(forProduct:)Purchases/showManageSubscriptions()Purchases/showManageSubscriptions(completion:)
Parsing Receipts
PurchasesReceiptParserAppleReceipt
Subscriber Attributes
Purchases/setAttributes(_:)Purchases/setAd(_:)Purchases/setEmail(_:)Purchases/setDisplayName(_:)Purchases/setKeyword(_:)Purchases/setCampaign(_:)Purchases/setCreative(_:)Purchases/setAdGroup(_:)Purchases/setPushToken(_:)Purchases/setPushTokenString(_:)Purchases/setMediaSource(_:)Purchases/setPhoneNumber(_:)Purchases/setAttributes(_:)Purchases/collectDeviceIdentifiers()
Integrations
Purchases/setAdjustID(_:)Purchases/setAirshipChannelID(_:)Purchases/setAppsflyerID(_:)Purchases/setCleverTapID(_:)Purchases/setFBAnonymousID(_:)Purchases/setFirebaseAppInstanceID(_:)Purchases/setMixpanelDistinctID(_:)Purchases/setMparticleID(_:)Purchases/setOnesignalID(_:)
Configuring the SDK with parameters (deprecated)
Purchases/configure(withAPIKey:appUserID:)Purchases/configure(withAPIKey:appUserID:observerMode:)Purchases/configure(withAPIKey:appUserID:observerMode:userDefaults:)Purchases/configure(withAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:)