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

221 lines 9.37 kB
import { registerPlugin } from '@capacitor/core'; import { QonversionErrorCode, UserPropertyKey } from "../dto/enums"; import Mapper from "./Mapper"; import { isAndroid, isIos } from "./utils"; import { PurchaseOptionsBuilder } from '../dto/PurchaseOptionsBuilder'; const sdkVersion = "0.3.1"; const entitlementsUpdatedEvent = 'entitlementsUpdatedEvent'; const promoPurchaseEvent = 'shouldPurchasePromoProductEvent'; const QonversionNative = registerPlugin('Qonversion', { web: () => import('./web').then(m => new m.QonversionWeb()), }); export default class QonversionInternal { constructor(qonversionConfig) { QonversionNative.storeSdkInfo({ source: "capacitor", 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); } } 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 purchaseProduct(product, options) { var _a, _b, _c, _d, _e, _f; try { if (!options) { options = new PurchaseOptionsBuilder().build(); } let purchasePromise; 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 }; if (isIos()) { purchasePromise = QonversionNative.purchase({ productId: product.qonversionID, quantity: options.quantity, contextKeys: options.contextKeys, promoOffer: promoOffer }); } else { purchasePromise = 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 entitlements = await purchasePromise; // noinspection UnnecessaryLocalVariableJS const mappedPermissions = Mapper.convertEntitlements(entitlements); return mappedPermissions; } catch (e) { e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED; throw e; } } 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; } collectAdvertisingId() { if (isIos()) { QonversionNative.collectAdvertisingId(); } } collectAppleSearchAdsAttribution() { if (isIos()) { QonversionNative.collectAppleSearchAdsAttribution(); } } setEntitlementsUpdateListener(listener) { QonversionNative.addListener(entitlementsUpdatedEvent, (payload) => { const entitlements = Mapper.convertEntitlements(payload); listener.onEntitlementsUpdated(entitlements); }); } 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