Skip to content

Subscription module

From JSDoc (src/module/subscription/AffiseSubscription.ts:11):

Module subscription fetchProducts / Module subscription purchase

  • AffiseModules.SUBSCRIPTION = "Subscription" (src/module/AffiseModules.ts:1-16)

AffiseSubscription (src/module/subscription/AffiseSubscription.ts:11) implements AffiseModuleSubscriptionApi (src/module/subscription/AffiseModuleSubscriptionApi.ts:8):

Affise.module.subscription.fetchProducts(
ids: string[],
callback: AffiseResultCallback<AffiseProductsResult>,
): void
// AffiseModuleSubscriptionApi.ts:14
Affise.module.subscription.purchase(
product: AffiseProduct,
type: AffiseProductType,
callback: AffiseResultCallback<AffisePurchasedInfo>,
): void
// AffiseModuleSubscriptionApi.ts:22
Affise.module.subscription.hasModule(): Promise<boolean>
// via AffiseHasModule, src/module/AffiseHasModule.ts:4-6

From src/module/subscription/AffiseProductType.ts:3-8:

export enum AffiseProductType {
CONSUMABLE,
NON_CONSUMABLE,
RENEWABLE_SUBSCRIPTION,
NON_RENEWABLE_SUBSCRIPTION,
}

BaseSubscriptionEvent (src/events/subscription/BaseSubscriptionEvent.ts:5-25) accepts AffiseCustomSubscriptionEventProps { type, subtype, data?, userData? }. Concrete events fill type/subtype from SubscriptionEventName / SubscriptionSubType.

SubscriptionEventName (src/events/subscription/SubscriptionEventName.ts:1-10)

Section titled “SubscriptionEventName (src/events/subscription/SubscriptionEventName.ts:1-10)”
  • AFFISE_SUBSCRIPTION_ACTIVATION
  • AFFISE_SUBSCRIPTION_CANCELLATION
  • AFFISE_SUBSCRIPTION_ENTERED_BILLING_RETRY
  • AFFISE_SUBSCRIPTION_FIRST_CONVERSION
  • AFFISE_SUBSCRIPTION_REACTIVATION
  • AFFISE_SUBSCRIPTION_RENEWAL
  • AFFISE_SUBSCRIPTION_RENEWAL_FROM_BILLING_RETRY
  • AFFISE_UNSUBSCRIPTION

20 values prefixed AFFISE_SUB_* (src/events/subscription/SubscriptionSubType.ts:1-22).

All extend BaseSubscriptionEvent (files under src/events/subscription/*Event.ts, each at :6):

  • InitialSubscriptionEvent, InitialTrialEvent, InitialOfferEvent
  • FailedTrialEvent, FailedOfferiseEvent, FailedSubscriptionEvent
  • FailedTrialFromRetryEvent, FailedOfferFromRetryEvent, FailedSubscriptionFromRetryEvent
  • TrialInRetryEvent, OfferInRetryEvent, SubscriptionInRetryEvent
  • ConvertedTrialEvent, ConvertedOfferEvent
  • ReactivatedSubscriptionEvent, RenewedSubscriptionEvent
  • ConvertedTrialFromRetryEvent, ConvertedOfferFromRetryEvent
  • RenewedSubscriptionFromRetryEvent
  • UnsubscriptionEvent
  • AffiseProduct (src/module/subscription/AffiseProduct.ts:5)
  • AffiseProductPrice (src/module/subscription/AffiseProductPrice.ts:1)
  • AffiseProductSubscriptionDetail (src/module/subscription/AffiseProductSubscriptionDetail.ts:3)
  • AffiseProductsResult (src/module/subscription/AffiseProductsResult.ts:3)
  • AffisePurchasedInfo (src/module/subscription/AffisePurchasedInfo.ts:3)
  • AffiseResultCallback<T> (src/module/subscription/AffiseResultCallback.ts:3)
  • TimeUnitType enum (src/module/subscription/TimeUnitType.ts:3)

Since 1.7.16 the module ships as its own npm package, affise-attribution-module-subscription (Android and iOS). Install it next to the core library:

Terminal window
npm install affise-attribution-lib
npm install affise-attribution-module-subscription

The package only pulls in the native dependency (com.affise:module-subscription / AffiseModule/Subscription at 1.7.16); its JS entry point is empty, so keep importing everything from affise-attribution-lib. Rebuild the native app (and run pod install on iOS) after installing.

pod 'AffiseModule/Subscription', '1.7.16'
implementation "com.affise:module-subscription:$affise_version"