Files
purchases-ios/Sources/DocCDocumentation/DocCDocumentation.docc/RevenueCat.md
T
NachoSoto faf51e3d99 Introduced PurchasesDiagnostics to help diagnose SDK configuration errors (#1977)
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
2022-10-27 12:00:53 -07:00

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

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:)-6oipy
  • PurchasesDiagnostics

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(_:)-arja
  • Purchases/logIn(_:completion:)-4km90
  • Purchases/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:)