Skip to main content

Android Native - 7.x to 8.x Migration

This latest release updates the SDK to use BillingClient 7. This version increased the minSdk to 21 (Android 5.0) and removed the ProrationMode enum. Additionally, it added support for installment plans and pending prepaid plans.

Additionally, we've also updated Kotlin which means we now require Kotlin 1.7.0+. If you were using an older version of Kotlin, you will need to update it.

The only modification at the API level involves removing UpgradeInfo and ProrationMode. Related functions that were deprecated previously in V7 of our SDK have now been removed completely since they depended on classes not available anymore in billing client 7.0.0.

If your app supports upgrading/downgrading, you need to migrate to use the purchase(PurchaseParams) method. The PurchaseParams parameter has accessors to set the oldSku and replacementMode which will allow you to handle upgrades and downgrades.

Updated Code References

This migration guide has detailed class, property, and method changes.

Class/interface changes

New
InstallmentsInfo
GoogleInstallmentsInfo
PurchaseConfiguration.pendingTransactionsForPrepaidPlansEnabled
SubscriptionOption.installmentsInfo
Removed
UpgradeInfo
ProrationMode
GoogleProrationMode
StoreTransaction.prorationMode
PurchaseParams.googleProrationMode
purchasePackage(activity, packageToPurchase, upgradeInfo, callback)
purchaseProduct(activity, productToPurchase, upgradeInfo, callback)

Bumped minimum Android SDK version

RevenueCat SDK v8 bumps minimum Android SDK version from Android 4.4 (API level 19) to Android 5.0 (API level 21) since it's required by Google's Billing client.

Support for Google Play Installment subscriptions

We've added support for Google Play Installment subscriptions which is a type of subscription where customers pay for the subscription in multiple installments over a period of time, rather than paying the entire subscription fee upfront. We've also extended our product import functionality to import installment subscription products from the Google Play Console.

If you're looking to use Google's installment plans, all you'll need to do is create a base plan for an Installment subscription in Google Play Console! You can access the installment plan details from the SDK by using the SubscriptionOption.installmentsInfo property, like this:

val offerings = purchases.awaitOfferings()
// This provides the number of installments the customer commits to, and the number of installments the customer commits to upon a renewal.
val installmentsInfo = offerings.current?.monthly?.product?.defaultOption?.installmentsInfo

The installmentsInfo includes the following installment subscription details:

  • commitmentPaymentsCount: Number of payments the customer commits to in order to purchase the subscription.
  • renewalCommitmentPaymentsCount: The number of payments the user commits to upon a renewal. This number can either be 1, where the subscription will behave as a monthly subscription, or your commitment payment count number, where the subscription will renew for another commitment.

Installment subscriptions are currently only available in 4 countries: Brazil, Italy, Spain and France. (check Google Play Console for latest availability). As a result, these products will not be loaded in non-supported countries and you will need to provide a fallback to a different RevenueCat package.

Support for Google Play pending purchases

We've added support for Google Play pending transactions for prepaid subscriptions. These are transactions that require one or more additional steps between customer initiation and the payment method being processed. For example, a user could start a transaction which involves them paying cash at a physical location.

Pending transactions for a prepaid subscription is disabled by default. If you want to enable this behavior during configuration of the RevenueCat SDK:

Purchases.configure(
PurchasesConfiguration.Builder(applicationContext, apiKey)
.pendingTransactionsForPrepaidPlansEnabled(true)
.build()
)

Paywalls

We have decided to remove the experimental flag from Paywalls. It's not required anymore to add @OptIn(ExperimentalPreviewRevenueCatUIPurchasesAPI::class) to your paywall code.

Observer Mode

Observer mode is still supported in v8. Other than updating the SDK version, there are no changes required. Just make sure the version of the billing client is also version 7.0.0.

Reporting undocumented issues:

Feel free to file an issue! New RevenueCat Issue.