@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
JavaScript
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