Skip to content

Subscription module

Artifact: com.affise:module-subscription (module-subscription/build.gradle:53).

implementation("com.affise:module-subscription:1.7.8")

Google Play billing wrapper to fetch products and record purchases as Affise subscription / purchase events.

Entry class: internal class SubscriptionModule : AffiseModule(), AffiseSubscriptionApi (module-subscription/src/main/java/com/affise/attribution/module/subscription/SubscriptionModule.kt:17).

Public API at attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseSubscriptionApi.kt:6-38:

  • fetchProducts(productsIds: List<String>, callback: AffiseResultCallback<AffiseProductsResult>)
  • purchase(activity: Activity, product: AffiseProduct, type: AffiseProductType?, callback: AffiseResultCallback<AffisePurchasedInfo>)
  • purchase(activity: Activity, productId: String, offerToken: String?, type: AffiseProductType?, callback: AffiseResultCallback<AffisePurchasedInfo>)

AffiseModuleSubscriptionApi adds hasModule() via AffiseHasModule (attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseModuleSubscriptionApi.kt:5).

Wrapper on Affise.Module: Affise.Module.Subscription (AffiseAttributionModule.kt:19).

  • sealed class AffiseResult<out T> with Success<T>(value) and Error(error: Exception)attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseResult.kt:5-8
  • fun interface AffiseResultCallback<T> { fun handle(result: AffiseResult<T>) }attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseResultCallback.kt:4-7
  • data class AffiseProduct(productId, title, productDescription, productType: AffiseProductType, price: AffiseProductPrice?, subscription: AffiseProductSubscriptionDetail?, productDetails: Any?)attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseProduct.kt:3-13; helpers asConsumable(), asNonConsumable() at lines 15-27.

attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseProductType.kt:3-7:

enum class AffiseProductType(val value: String) {
CONSUMABLE("consumable"),
NON_CONSUMABLE("non_consumable"),
RENEWABLE_SUBSCRIPTION("renewable_subscription"),
NON_RENEWABLE_SUBSCRIPTION("non_renewable_subscription");

module-subscription/build.gradle:38:

implementation "com.android.billingclient:billing-ktx:7.0.0"

No additional AndroidManifest.xml entries.

None.

Related: Ad revenue and the subscription lifecycle events listed in Events tracking.