@qonversion/react-native-sdk
Version:
Qonversion provides full in-app purchases infrastructure, so you do not need to build your own server for receipt validation. Implement in-app subscriptions, validate user receipts, check subscription status, and provide access to your app features and co
319 lines (284 loc) • 13.6 kB
text/typescript
import Entitlement from './dto/Entitlement';
import Product from './dto/Product';
import {UserPropertyKey, AttributionProvider} from './dto/enums';
import Offerings from './dto/Offerings';
import IntroEligibility from './dto/IntroEligibility';
import User from './dto/User';
import type {EntitlementsUpdateListener} from './dto/EntitlementsUpdateListener';
import type {PromoPurchasesListener} from './dto/PromoPurchasesListener';
import RemoteConfig from "./dto/RemoteConfig";
import RemoteConfigList from "./dto/RemoteConfigList";
import UserProperties from './dto/UserProperties';
import PurchaseModel from './dto/PurchaseModel';
import PurchaseUpdateModel from './dto/PurchaseUpdateModel';
import PurchaseOptions from "./dto/PurchaseOptions";
import SKProductDiscount from './dto/storeProducts/SKProductDiscount';
import PromotionalOffer from './dto/PromotionalOffer';
export interface QonversionApi {
/**
* Call this function to sync the subscriber data with the first launch when Qonversion is implemented.
*/
syncHistoricalData(): void;
/**
* iOS only
* Contact us before you start using this function
* Call this function to sync purchases if you are using StoreKit2 and our SDK in Analytics mode.
*/
syncStoreKit2Purchases(): void;
/**
* Call this function to check if the fallback file is accessible.
* @returns the promise with the flag that indicates whether Qonversion was able to read data from the fallback file or not.
*/
isFallbackFileAccessible(): Promise<boolean>;
/**
* iOS only.
* Retrieve the promotional offer for the product if it exists.
* Make sure to call this function before displaying product details to the user.
* The generated signature for the promotional offer is valid for a single transaction.
* If the purchase fails, you need to call this function again to obtain a new promotional offer signature.
* Use this signature to complete the purchase through the purchase function, along with the purchase options object.
* @param product - product you want to purchase.
* @param discount - discount to create promotional offer signature.
* @returns the promise with the PromotionalOffer.
*/
getPromotionalOffer(product: Product, discount: SKProductDiscount): Promise<PromotionalOffer | null>;
/**
* Make a purchase and validate it through server-to-server using Qonversion's Backend
* @param product product to purchase
* @param options additional options for the purchase process.
* @returns the promise with the user entitlements including the ones obtained by the purchase
*
* @see [Making Purchases](https://documentation.qonversion.io/docs/making-purchases)
*/
purchaseProduct(product: Product, options?: PurchaseOptions | undefined): Promise<Map<string, Entitlement>>
/**
* Make a purchase and validate it through server-to-server using Qonversion's Backend.
*
* @deprecated Use {@link purchaseProduct} function instead.
* @param purchaseModel necessary information for purchase
* @returns the promise with the user entitlements including the ones obtained by the purchase
* @see [Making Purchases](https://documentation.qonversion.io/docs/making-purchases)
*/
purchase(purchaseModel: PurchaseModel): Promise<Map<string, Entitlement>>;
/**
* Android only. Returns `null` if called on iOS.
*
* Update (upgrade/downgrade) subscription on Google Play Store and validate it through server-to-server using Qonversion's Backend.
*
* @deprecated Use {@link purchaseProduct} function instead.
* @param purchaseUpdateModel necessary information for purchase update
* @returns the promise with the user entitlements including updated ones.
* @see [Update policy](https://developer.android.com/google/play/billing/subscriptions#replacement-modes)
* @see [Making Purchases](https://documentation.qonversion.io/docs/making-purchases)
*/
updatePurchase(purchaseUpdateModel: PurchaseUpdateModel): Promise<Map<string, Entitlement> | null>;
/**
* Returns Qonversion products in association with Apple and Google Play Store Products.
*
* @returns the promise with Qonversion products
*/
products(): Promise<Map<string, Product>>;
/**
* Return Qonversion Offerings Object.
*
* An offering is a group of products that you can offer to a user on a given paywall based on your business logic.
* For example, you can offer one set of products on a paywall immediately after onboarding and another
* set of products with discounts later on if a user has not converted.
* Offerings allow changing the products offered remotely without releasing app updates.
*
* @returns the promise with Qonversion offerings
*
* @see [Offerings](https://qonversion.io/docs/offerings) for more details
*/
offerings(): Promise<Offerings | null>;
/**
* You can check if a user is eligible for an introductory offer, including a free trial.
* You can show only a regular price for users who are not eligible for an introductory offer.
*
* @param ids products identifiers that must be checked
* @returns the promise with eligibility map
*/
checkTrialIntroEligibility(ids: string[]): Promise<Map<string, IntroEligibility>>;
/**
* You need to call the checkEntitlements method to check if a user has the required entitlement.
*
* This method will check the user receipt and will return the current entitlements.
*
* @returns the promise with the entitlements
*
* If Apple or Google servers are not responding at the time of the request, Qonversion provides the latest
* entitlements' data from its database.
*/
checkEntitlements(): Promise<Map<string, Entitlement>>;
/**
* Restores users purchases in your app, to maintain access to purchased content.
* Users sometimes need to restore purchased content, such as when they upgrade to a new phone.
*
* @returns the promise with the user entitlements
*/
restore(): Promise<Map<string, Entitlement>>;
/**
* Android only. Does nothing if called on iOS.
*
* This method will send all purchases to the Qonversion backend. Call this every time when purchase is handled
* by your own implementation.
*
* **Warning!**
*
* This method works for Android only.
* It should only be called if you're using Qonversion SDK in observer mode.
*
* @see [Observer mode for Android SDK](https://documentation.qonversion.io/docs/observer-mode#android-sdk)
*/
syncPurchases(): void;
/**
* Call this function to link a user to his unique ID in your system and share purchase data.
*
* @param userId unique user ID in your system
* @returns the promise with the information about the identified user.
*/
identify(userId: string): Promise<User>;
/**
* Call this function to unlink a user from his unique ID in your system and his purchase data.
*/
logout(): void;
/**
* This method returns information about the current Qonversion user.
* @returns the promise with the information about the user.
*/
userInfo(): Promise<User>;
/**
* Sends your attribution {@link data} to the {@link provider}.
*
* @param data an object containing your attribution data
* @param provider the provider to which the data will be sent
*/
attribution(data: Object, provider: AttributionProvider): void;
/**
* Sets Qonversion reserved user properties, like email or user id
*
* User properties are attributes you can set on a user level.
* You can send user properties to third party platforms as well as use them in Qonversion for customer segmentation
* and analytics.
*
* Note that using {@link UserPropertyKey.CUSTOM} here will do nothing.
* To set custom user property, use {@link setCustomUserProperty} method instead.
*
* @param key defined enum key that will be transformed to string.
* @param value property value.
*
* @see [documentation](https://documentation.qonversion.io/docs/user-properties)
*/
setUserProperty(key: UserPropertyKey, value: string): void;
/**
* Adds custom user property.
*
* User properties are attributes you can set on a user level.
* You can send user properties to third party platforms as well as use them in Qonversion for customer segmentation
* and analytics.
*
* @param key custom user property key.
* @param value property value.
*
* @see [documentation](https://documentation.qonversion.io/docs/user-properties)
*/
setCustomUserProperty(key: string, value: string): void;
/**
* This method returns all the properties, set for the current Qonversion user.
* All set properties are sent to the server with delay, so if you call
* this function right after setting some property, it may not be included
* in the result.
* @returns the promise with the user properties
*/
userProperties(): Promise<UserProperties>;
/**
* Provide a listener to be notified about asynchronous user entitlements updates.
*
* Make sure you provide this listener for being up-to-date with the user entitlements.
* Else you can lose some important updates. Also, please, consider that this listener
* should live for the whole lifetime of the application.
*
* You may set entitlements listener both *after* Qonversion SDK initializing
* with {@link QonversionApi.setEntitlementsUpdateListener} and *while* Qonversion initializing
* with {@link Qonversion.initialize}.
*
* @param listener listener to be called when entitlements update
*/
setEntitlementsUpdateListener(listener: EntitlementsUpdateListener): void;
/**
* iOS only. Does nothing if called on Android.
*
* On iOS 14.5+, after requesting the app tracking permission using ATT, you need to notify Qonversion if tracking
* is allowed and IDFA is available.
*/
collectAdvertisingId(): void;
/**
* iOS only. Does nothing if called on Android.
*
* Enable attribution collection from Apple Search Ads.
*/
collectAppleSearchAdsAttribution(): void;
/**
* iOS only. Does nothing if called on Android.
*
* Set the delegate to handle promo purchases.
* The delegate is called when a promo purchase from the App Store happens.
* @param delegate delegate to be called when event happens.
*/
setPromoPurchasesDelegate(delegate: PromoPurchasesListener): void;
/**
* iOS only. Does nothing if called on Android.
*
* On iOS 14.0+ shows up a sheet for users to redeem App Store offer codes.
*/
presentCodeRedemptionSheet(): void;
/**
* Returns Qonversion remote config object by {@link contextKey} or default one if the key is not specified.
* Use this function to get the remote config with specific payload and experiment info.
* @returns the promise with the remote config.
*/
remoteConfig(contextKey: string | undefined): Promise<RemoteConfig>
/**
* Returns Qonversion remote config objects for all existing context key (including empty one).
* Use this function to get the remote config with specific payload and experiment info.
* @returns the promise with the remote config list.
*/
remoteConfigList(): Promise<RemoteConfigList>
/**
* Returns Qonversion remote config objects by a list of {@link contextKeys}.
* Use this function to get the remote config with specific payload and experiment info.
* @param contextKeys list of context keys to load remote configs for
* @param includeEmptyContextKey set to true if you want to include remote config with empty context key to the result
* @returns the promise with the remote config list.
*/
remoteConfigListForContextKeys(contextKeys: string[], includeEmptyContextKey: boolean): Promise<RemoteConfigList>
/**
* This function should be used for the test purposes only. Do not forget to delete the usage of this function before the release.
* Use this function to attach the user to the experiment.
* @param experimentId identifier of the experiment
* @param groupId identifier of the experiment group
* @returns the promise for success result or throws an error otherwise.
*/
attachUserToExperiment(experimentId: string, groupId: string): Promise<void>
/**
* This function should be used for the test purposes only. Do not forget to delete the usage of this function before the release.
* Use this function to detach the user from the experiment.
* @param experimentId identifier of the experiment
* @returns the promise for success result or throws an error otherwise.
*/
detachUserFromExperiment(experimentId: string): Promise<void>
/**
* This function should be used for the test purposes only. Do not forget to delete the usage of this function before the release.
* Use this function to attach the user to the remote configuration.
* @param remoteConfigurationId identifier of the remote configuration
* @returns the promise for success result or throws an error otherwise.
*/
attachUserToRemoteConfiguration(remoteConfigurationId: string): Promise<void>
/**
* This function should be used for the test purposes only. Do not forget to delete the usage of this function before the release.
* Use this function to detach the user from the remote configuration.
* @param remoteConfigurationId identifier of the remote configuration
* @returns the promise for success result or throws an error otherwise.
*/
detachUserFromRemoteConfiguration(remoteConfigurationId: string): Promise<void>
}