Subscription module
Installation
Section titled “Installation”Artifact: com.affise:module-subscription (module-subscription/build.gradle:53).
implementation("com.affise:module-subscription:1.7.8")Purpose
Section titled “Purpose”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).
Data types
Section titled “Data types”sealed class AffiseResult<out T>withSuccess<T>(value)andError(error: Exception)—attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseResult.kt:5-8fun interface AffiseResultCallback<T> { fun handle(result: AffiseResult<T>) }—attribution/src/main/java/com/affise/attribution/modules/subscription/AffiseResultCallback.kt:4-7data 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; helpersasConsumable(),asNonConsumable()at lines 15-27.
AffiseProductType
Section titled “AffiseProductType”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");Additional dependencies
Section titled “Additional dependencies”module-subscription/build.gradle:38:
implementation "com.android.billingclient:billing-ktx:7.0.0"No additional AndroidManifest.xml entries.
ProviderType values contributed
Section titled “ProviderType values contributed”None.
Related: Ad revenue and the subscription lifecycle events listed in Events tracking.