UNPKG

@qonversion/capacitor-plugin

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

256 lines 10.9 kB
import { registerPlugin } from '@capacitor/core'; import { UserPropertyKey } from "../dto/enums"; import Mapper from "./Mapper"; import { isAndroid, isIos } from "./utils"; import { PurchaseOptionsBuilder } from '../dto/PurchaseOptionsBuilder'; export const sdkVersion = "1.5.0"; export const sdkSource = "capacitor"; const entitlementsUpdatedEvent = 'entitlementsUpdatedEvent'; const deferredPurchaseCompletedEvent = 'deferredPurchaseCompletedEvent'; const promoPurchaseEvent = 'shouldPurchasePromoProductEvent'; const QonversionNative = registerPlugin('Qonversion', { web: () => import('./web').then(m => new m.QonversionWeb()), }); export default class QonversionInternal { constructor(qonversionConfig) { this.entitlementsUpdateListener = null; this.deferredPurchasesListener = null; this.entitlementsEventSubscribed = false; this.deferredPurchaseEventSubscribed = false; this.entitlementsUpdatedEventHandler = (payload) => { var _a; const entitlements = Mapper.convertEntitlements(payload); (_a = this.entitlementsUpdateListener) === null || _a === void 0 ? void 0 : _a.onEntitlementsUpdated(entitlements); }; this.deferredPurchaseCompletedEventHandler = (payload) => { var _a; const purchaseResult = Mapper.convertPurchaseResult(payload); if (purchaseResult) { (_a = this.deferredPurchasesListener) === null || _a === void 0 ? void 0 : _a.onDeferredPurchaseCompleted(purchaseResult); } }; QonversionNative.storeSdkInfo({ source: sdkSource, version: sdkVersion }); QonversionNative.initialize({ projectKey: qonversionConfig.projectKey, launchMode: qonversionConfig.launchMode, environment: qonversionConfig.environment, entitlementsCacheLifetime: qonversionConfig.entitlementsCacheLifetime, proxyUrl: qonversionConfig.proxyUrl, kidsMode: qonversionConfig.kidsMode }); if (qonversionConfig.entitlementsUpdateListener) { this.setEntitlementsUpdateListener(qonversionConfig.entitlementsUpdateListener); } if (qonversionConfig.deferredPurchasesListener) { this.setDeferredPurchasesListener(qonversionConfig.deferredPurchasesListener); } } syncHistoricalData() { QonversionNative.syncHistoricalData(); } syncStoreKit2Purchases() { if (isIos()) { QonversionNative.syncStoreKit2Purchases(); } } async getPromotionalOffer(product, discount) { if (isAndroid()) { return null; } const promoOffer = await QonversionNative.getPromotionalOffer({ productId: product.qonversionId, discountId: discount.identifier, }); const mappedPromoOffer = Mapper.convertPromoOffer(promoOffer); return mappedPromoOffer; } async purchase(product, options) { var _a, _b, _c, _d, _e, _f; if (!options) { options = new PurchaseOptionsBuilder().build(); } const promoOffer = { productDiscountId: (_a = options.promotionalOffer) === null || _a === void 0 ? void 0 : _a.productDiscount.identifier, keyIdentifier: (_b = options.promotionalOffer) === null || _b === void 0 ? void 0 : _b.paymentDiscount.keyIdentifier, nonce: (_c = options.promotionalOffer) === null || _c === void 0 ? void 0 : _c.paymentDiscount.nonce, signature: (_d = options.promotionalOffer) === null || _d === void 0 ? void 0 : _d.paymentDiscount.signature, timestamp: (_e = options.promotionalOffer) === null || _e === void 0 ? void 0 : _e.paymentDiscount.timestamp }; let purchaseResult; if (isIos()) { purchaseResult = await QonversionNative.purchase({ productId: product.qonversionId, quantity: options.quantity, contextKeys: options.contextKeys, promoOffer: promoOffer }); } else { purchaseResult = await QonversionNative.purchase({ productId: product.qonversionId, offerId: options.offerId, applyOffer: options.applyOffer, oldProductId: (_f = options.oldProduct) === null || _f === void 0 ? void 0 : _f.qonversionId, updatePolicyKey: options.updatePolicy, contextKeys: options.contextKeys }); } const mappedPurchaseResult = Mapper.convertPurchaseResult(purchaseResult); if (!mappedPurchaseResult) { throw new Error('Failed to process purchase result'); } return mappedPurchaseResult; } async products() { let products = await QonversionNative.products(); const mappedProducts = Mapper.convertProducts(products); return mappedProducts; } async offerings() { let offerings = await QonversionNative.offerings(); const mappedOfferings = Mapper.convertOfferings(offerings); return mappedOfferings; } async checkTrialIntroEligibility(ids) { const eligibilityInfo = await QonversionNative.checkTrialIntroEligibility({ ids }); const mappedEligibility = Mapper.convertEligibility(eligibilityInfo); return mappedEligibility; } async checkEntitlements() { const entitlements = await QonversionNative.checkEntitlements(); const mappedPermissions = Mapper.convertEntitlements(entitlements); return mappedPermissions; } async restore() { const entitlements = await QonversionNative.restore(); const mappedPermissions = Mapper.convertEntitlements(entitlements); return mappedPermissions; } syncPurchases() { if (!isAndroid()) { return; } QonversionNative.syncPurchases(); } async identify(userId) { const userInfo = await QonversionNative.identify({ userId: userId }); const mappedUserInfo = Mapper.convertUserInfo(userInfo); return mappedUserInfo; } logout() { QonversionNative.logout(); } async userInfo() { const info = await QonversionNative.userInfo(); const mappedUserInfo = Mapper.convertUserInfo(info); return mappedUserInfo; } async forceSendProperties() { await QonversionNative.forceSendProperties(); } collectAdvertisingId() { if (isIos()) { QonversionNative.collectAdvertisingId(); } } collectAppleSearchAdsAttribution() { if (isIos()) { QonversionNative.collectAppleSearchAdsAttribution(); } } setEntitlementsUpdateListener(listener) { this.subscribeToEntitlementsUpdatedEvent(); this.entitlementsUpdateListener = listener; } setDeferredPurchasesListener(listener) { this.subscribeToDeferredPurchaseEvent(); this.deferredPurchasesListener = listener; } subscribeToEntitlementsUpdatedEvent() { if (this.entitlementsEventSubscribed) { return; } QonversionNative.addListener(entitlementsUpdatedEvent, this.entitlementsUpdatedEventHandler); this.entitlementsEventSubscribed = true; } subscribeToDeferredPurchaseEvent() { if (this.deferredPurchaseEventSubscribed) { return; } QonversionNative.addListener(deferredPurchaseCompletedEvent, this.deferredPurchaseCompletedEventHandler); this.deferredPurchaseEventSubscribed = true; } setPromoPurchasesDelegate(delegate) { if (!isIos()) { return; } QonversionNative.addListener(promoPurchaseEvent, (payload) => { const promoPurchaseExecutor = async () => { const entitlements = await QonversionNative.promoPurchase({ productId: payload.productId }); const mappedPermissions = Mapper.convertEntitlements(entitlements); return mappedPermissions; }; delegate.onPromoPurchaseReceived(payload.productId, promoPurchaseExecutor); }); } presentCodeRedemptionSheet() { if (isIos()) { QonversionNative.presentCodeRedemptionSheet(); } } async remoteConfig(contextKey) { const remoteConfig = await QonversionNative.remoteConfig({ contextKey }); const mappedRemoteConfig = Mapper.convertRemoteConfig(remoteConfig); return mappedRemoteConfig; } async remoteConfigList() { const remoteConfigList = await QonversionNative.remoteConfigList(); const mappedRemoteConfigList = Mapper.convertRemoteConfigList(remoteConfigList); return mappedRemoteConfigList; } async remoteConfigListForContextKeys(contextKeys, includeEmptyContextKey) { const remoteConfigList = await QonversionNative.remoteConfigList({ contextKeys, includeEmptyContextKey }); const mappedRemoteConfigList = Mapper.convertRemoteConfigList(remoteConfigList); return mappedRemoteConfigList; } async attachUserToExperiment(experimentId, groupId) { await QonversionNative.attachUserToExperiment({ experimentId, groupId }); return; } async detachUserFromExperiment(experimentId) { await QonversionNative.detachUserFromExperiment({ experimentId }); return; } async attachUserToRemoteConfiguration(remoteConfigurationId) { await QonversionNative.attachUserToRemoteConfiguration({ remoteConfigurationId }); return; } async detachUserFromRemoteConfiguration(remoteConfigurationId) { await QonversionNative.detachUserFromRemoteConfiguration({ remoteConfigurationId }); return; } async isFallbackFileAccessible() { const isAccessibleResult = await QonversionNative.isFallbackFileAccessible(); return isAccessibleResult.success; } attribution(data, provider) { QonversionNative.addAttributionData({ data, provider }); } setUserProperty(property, value) { if (property === UserPropertyKey.CUSTOM) { console.warn("Can not set user property with the key `UserPropertyKey.CUSTOM`. " + "To set custom user property, use the `setCustomUserProperty` method."); return; } QonversionNative.setDefinedUserProperty({ property, value }); } setCustomUserProperty(property, value) { QonversionNative.setCustomUserProperty({ property, value }); } async userProperties() { const properties = await QonversionNative.userProperties(); const mappedUserProperties = Mapper.convertUserProperties(properties); return mappedUserProperties; } } //# sourceMappingURL=QonversionInternal.js.map