Finishes [CSDK-451].
This new small public API allows users to quickly figure out if
everything in the SDK is correctly configured in a simple way:
```swift
let diagnostics = PurchasesDiagnostics.default
do {
try await diagnostics.testSDKHealth()
} catch {
print(error)
}
```
The specific underlying errors will provide information about what
failed.
We can continue growing this to check for more specific things, but for
now it does 4 things:
- Verify API connectivity: networking issues, firewalling, etc.
- Verify API key is correct
- Verify `Offerings` are configured correctly
- Verify that all products in `Offerings` are configured correctly and
found in `StoreKit`
This new API is covered by:
- API testers
- Unit tests
- Integration tests (both on `SK1` and `SK2`)
_I've taken the "shortcut" of making this `async` only (while still
compatible with Objective-C), which means it's not compatible with iOS
12.x. But that made the implementation a lot simpler, which I think is a
useful tradeoff._
### Depends on:
- #1970
- #1971
- #1973
- #1974
- #1975
- #1976
[CSDK-451]:
https://revenuecats.atlassian.net/browse/CSDK-451?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
6.4 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:)
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:)