Purchases

Entry point for Purchases. It should be instantiated as soon as your app has a unique user id for your user. This can be when a user logs in if you have accounts or on launch if you can generate a random user identifier. Make sure you follow the quickstart guide to setup your RevenueCat account.

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard

Gets the current user's CustomerCenterConfigData. Used by RevenueCatUI to present the customer center.

Link copied to clipboard
suspend fun Purchases.awaitCustomerInfo(fetchPolicy: CacheFetchPolicy = CacheFetchPolicy.default()): CustomerInfo

Get latest available customer info. Coroutine friendly version of Purchases.getCustomerInfo.

Link copied to clipboard
suspend fun Purchases.awaitLogIn(appUserID: String): LogInResult

This function will change the current appUserID. Typically this would be used after a log out to identify a new user without calling configure

Link copied to clipboard

Logs out the Purchases client clearing the save appUserID. This will generate a random user id and save it in the cache.

Link copied to clipboard

Syncs subscriber attributes and then fetches the configured offerings for this user. This method is intended to be called when using Targeting Rules with Custom Attributes. Any subscriber attributes should be set before calling this method to ensure the returned offerings are applied with the latest subscriber attributes.

Link copied to clipboard

This method will send all the purchases to the RevenueCat backend. Call this when using your own implementation for subscriptions anytime a sync is needed, such as when migrating existing users to RevenueCat.

Link copied to clipboard
fun close()

Call close when you are done with this instance of Purchases

Link copied to clipboard

Automatically collect subscriber attributes associated with the device identifiers $gpsAdId, $androidId, $ip

Link copied to clipboard

Note: This method only works for the Amazon Appstore. There is no Google equivalent at this time. Calling from a Google-configured app will always return AmazonLWAConsentStatus.UNAVAILABLE.

Link copied to clipboard

Note: This method only works for the Amazon Appstore. There is no Google equivalent at this time. Calling from a Google-configured app will always return AmazonLWAConsentStatus.UNAVAILABLE.

Link copied to clipboard
fun Purchases.getAmazonLWAConsentStatusWith(onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (AmazonLWAConsentStatus) -> Unit)

Note: This method only works for the Amazon Appstore. There is no Google equivalent at this time. Calling from a Google-configured app will always return AmazonLWAConsentStatus.UNAVAILABLE.

Link copied to clipboard

Get latest available customer info.

Link copied to clipboard
fun Purchases.getCustomerInfoWith(onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (customerInfo: CustomerInfo) -> Unit)

Get latest available customer info.

fun Purchases.getCustomerInfoWith(fetchPolicy: CacheFetchPolicy, onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (customerInfo: CustomerInfo) -> Unit)

Get customer info from cache or network depending on fetch policy.

Link copied to clipboard

Fetch the configured offerings for this user. Offerings allows you to configure your in-app products vis RevenueCat and greatly simplifies management. See the guide for more info.

Link copied to clipboard
fun getProducts(productIds: List<String>, callback: GetStoreProductsCallback)

Gets the StoreProduct(s) for the given list of product ids for all product types.

fun getProducts(productIds: List<String>, type: ProductType? = null, callback: GetStoreProductsCallback)

Gets the StoreProduct(s) for the given list of product ids of type type

Link copied to clipboard

Invalidates the cache for customer information.

Link copied to clipboard
fun logIn(newAppUserID: String, callback: LogInCallback? = null)

This function will change the current appUserID. Typically this would be used after a log out to identify a new user without calling configure

Link copied to clipboard
fun Purchases.logInWith(appUserID: String, onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (customerInfo: CustomerInfo, created: Boolean) -> Unit)

This function will change the current appUserID. Typically this would be used after a log out to identify a new user without calling configure

Link copied to clipboard

Resets the Purchases client clearing the save appUserID. This will generate a random user id and save it in the cache.

Link copied to clipboard
fun Purchases.logOutWith(onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (customerInfo: CustomerInfo) -> Unit)

Logs out the Purchases client clearing the save appUserID. This will generate a random user id and save it in the cache.

Link copied to clipboard
fun purchase(purchaseParams: PurchaseParams, callback: PurchaseCallback)

Initiate a purchase with the given PurchaseParams. Initialized with an Activity either a Package, StoreProduct, or SubscriptionOption.

Link copied to clipboard

Redeem a web purchase using a WebPurchaseRedemption object obtained through Purchases.parseAsWebPurchaseRedemption.

Link copied to clipboard

Call this when you are finished using the UpdatedCustomerInfoListener. You should call this to avoid memory leaks.

Link copied to clipboard

Restores purchases made with the current Play Store account for the current user. This method will post all purchases associated with the current Play Store account to RevenueCat and become associated with the current appUserID. If the receipt token is being used by an existing user, the current appUserID will be aliased together with the appUserID of the existing user. Going forward, either appUserID will be able to reference the same user.

Link copied to clipboard
fun setAd(ad: String?)

Subscriber attribute associated with the install ad for the user

Link copied to clipboard
fun setAdGroup(adGroup: String?)

Subscriber attribute associated with the install ad group for the user

Link copied to clipboard
fun setAdjustID(adjustID: String?)

Subscriber attribute associated with the Adjust Id for the user Required for the RevenueCat Adjust integration

Link copied to clipboard
fun setAirshipChannelID(airshipChannelID: String?)

Subscriber attribute associated with the Airship Channel ID Required for the RevenueCat Airship integration

Link copied to clipboard
fun setAppsflyerID(appsflyerID: String?)

Subscriber attribute associated with the AppsFlyer Id for the user Required for the RevenueCat AppsFlyer integration

Link copied to clipboard
fun setAttributes(attributes: Map<String, String?>)

Subscriber attributes are useful for storing additional, structured information on a user. Since attributes are writable using a public key they should not be used for managing secure or sensitive information such as subscription status, coins, etc.

Link copied to clipboard
fun setCampaign(campaign: String?)

Subscriber attribute associated with the install campaign for the user

Link copied to clipboard
fun setCleverTapID(cleverTapID: String?)

Subscriber attribute associated with the CleverTap ID for the user Required for the RevenueCat CleverTap integration

Link copied to clipboard
fun setCreative(creative: String?)

Subscriber attribute associated with the install ad creative for the user

Link copied to clipboard
fun setDisplayName(displayName: String?)

Subscriber attribute associated with the display name for the user

Link copied to clipboard
fun setEmail(email: String?)

Subscriber attribute associated with the Email address for the user

Link copied to clipboard
fun setFBAnonymousID(fbAnonymousID: String?)

Subscriber attribute associated with the Facebook SDK Anonymous Id for the user Recommended for the RevenueCat Facebook integration

Link copied to clipboard
fun setFirebaseAppInstanceID(firebaseAppInstanceID: String?)

Subscriber attribute associated with the Firebase App Instance ID for the user Required for the RevenueCat Firebase integration

Link copied to clipboard
fun setKeyword(keyword: String?)

Subscriber attribute associated with the install keyword for the user

Link copied to clipboard
fun setKochavaDeviceID(kochavaDeviceID: String?)

Subscriber attribute associated with the Kochava Device ID for the user Recommended for the RevenueCat Kochava integration

Link copied to clipboard
fun setMediaSource(mediaSource: String?)

Subscriber attribute associated with the install media source for the user

Link copied to clipboard
fun setMixpanelDistinctID(mixpanelDistinctID: String?)

Subscriber attribute associated with the Mixpanel Distinct ID for the user

Link copied to clipboard
fun setMparticleID(mparticleID: String?)

Subscriber attribute associated with the mParticle Id for the user Recommended for the RevenueCat mParticle integration

Link copied to clipboard
fun setOnesignalID(onesignalID: String?)

Subscriber attribute associated with the OneSignal Player Id for the user Required for the RevenueCat OneSignal integration. Deprecated for OneSignal versions above v9.0.

Link copied to clipboard
fun setOnesignalUserID(onesignalUserID: String?)

Subscriber attribute associated with the OneSignal User ID for the user Required for the RevenueCat OneSignal integration with versions v11.0 and above.

Link copied to clipboard
fun setPhoneNumber(phoneNumber: String?)

Subscriber attribute associated with the phone number for the user

Link copied to clipboard
fun setPushToken(fcmToken: String?)

Subscriber attribute associated with the push token for the user

Link copied to clipboard
fun setTenjinAnalyticsInstallationID(tenjinAnalyticsInstallationID: String?)

Subscriber attribute associated with the Tenjin Analytics installation ID for the user Required for the RevenueCat Tenjin integration

Link copied to clipboard
fun showInAppMessagesIfNeeded(activity: Activity, inAppMessageTypes: List<InAppMessageType> = listOf(InAppMessageType.BILLING_ISSUES))

Google Play only, no-op for Amazon. Displays the specified in-app message types to the user as a snackbar if there are any available to be shown. If PurchasesConfiguration.showInAppMessagesAutomatically is enabled, this will be done automatically on each Activity's onStart.

Link copied to clipboard
fun syncAmazonPurchase(productID: String, receiptID: String, amazonUserID: String, isoCurrencyCode: String?, price: Double?)

This method will send an Amazon purchase to the RevenueCat backend. This function should only be called if you have set purchasesAreCompletedBy to MY_APP or when performing a client side migration of your current users to RevenueCat.

Link copied to clipboard

Syncs subscriber attributes and then fetches the configured offerings for this user. This method is intended to be called when using Targeting Rules with Custom Attributes. Any subscriber attributes should be set before calling this method to ensure the returned offerings are applied with the latest subscriber attributes.

Link copied to clipboard
fun Purchases.syncAttributesAndOfferingsIfNeededWith(onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (Offerings) -> Unit)

Syncs subscriber attributes and then fetches the configured offerings for this user. This method is intended to be called when using Targeting Rules with Custom Attributes. Any subscriber attributes should be set before calling this method to ensure the returned offerings are applied with the latest subscriber attributes.

Link copied to clipboard

This method will send all the purchases to the RevenueCat backend. Call this when using your own implementation for subscriptions anytime a sync is needed, such as when migrating existing users to RevenueCat. The SyncPurchasesCallback.onSuccess callback will be called if all purchases have been synced successfully or there are no purchases. Otherwise, the SyncPurchasesCallback.onError callback will be called with a PurchasesError indicating the first error found.

Link copied to clipboard
fun Purchases.syncPurchasesWith(onError: (error: PurchasesError) -> Unit = ON_ERROR_STUB, onSuccess: (CustomerInfo) -> Unit)

This method will send all the purchases to the RevenueCat backend. Call this when using your own implementation for subscriptions anytime a sync is needed, such as when migrating existing users to RevenueCat. The onSuccess callback will be called if all purchases have been synced successfully or there are no purchases. Otherwise, the onError callback will be called with a PurchasesError indicating the first error found.

Link copied to clipboard
fun track(paywallEvent: PaywallEvent)

Used by RevenueCatUI to keep track of PaywallEvents.

Properties

Link copied to clipboard

The passed in or generated app user ID

Link copied to clipboard

The current configuration parameters of the Purchases SDK.

Link copied to clipboard

If the appUserID has been generated by RevenueCat

Link copied to clipboard

Default to TRUE, set this to FALSE if you are consuming and acknowledging transactions outside of the Purchases SDK.

Link copied to clipboard

The currently configured store

Link copied to clipboard
Link copied to clipboard

The listener is responsible for handling changes to customer information. Make sure removeUpdatedCustomerInfoListener is called when the listener needs to be destroyed.