Releases: RevenueCat/purchases-hybrid-common
4.14.3
Dependency Updates
- [AUTOMATIC] iOS 4.17.10 => 4.17.11 (#394) via RevenueCat Git Bot (@RCGitBot)
- Bump cocoapods from 1.12.0 to 1.12.1 (#393) via dependabot[bot] (@dependabot[bot])
- Bump fastlane from 2.212.1 to 2.212.2 (#391) via dependabot[bot] (@dependabot[bot])
- [AUTOMATIC] iOS 4.17.9 => 4.17.10 (#389) via RevenueCat Git Bot (@RCGitBot)
Other Changes
- Bump fastlane-plugin-revenuecat_internal from
9255366
to8482a43
(#375) via dependabot[bot] (@dependabot[bot])
5.0.0-beta.6
Breaking Changes
- Reverted breaking change for
productType
onStoreProduct
mapper (#386) via Josh Holtz (@joshdholtz)
New Features
- Add
productCategory
support ingetProductInfo()
andpurchaseProduct()
(#387) via Josh Holtz (@joshdholtz)
5.0.0-beta.5
Breaking Changes
- iOS rename
productCategory
toproduct type
andproductType
toproductSubtype
(#377) via Josh Holtz (@joshdholtz) - Android rename
productCategory
toproductType
andproductType
toproductSubtype
(#376) via Josh Holtz (@joshdholtz)
Other Changes
- Use new mapped product type values for
purchaseProduct()
andgetProductInfo()
(#384) via Josh Holtz (@joshdholtz)
4.14.2
Dependency Updates
- [AUTOMATIC] iOS 4.17.8 => 4.17.9 (#379) via RevenueCat Git Bot (@RCGitBot)
- Bump activesupport from 7.0.4.2 to 7.0.4.3 (#360) via dependabot[bot] (@dependabot[bot])
Other Changes
CommonFunctionality.beginRefundRequest
: available on Catalyst (#374) via NachoSoto (@NachoSoto)
5.0.0-beta.4
Bugfixes
- Add platform check,
OfferPaymentMode
, andpresentedOfferingIdentifier
(#371) via Josh Holtz (@joshdholtz)
5.0.0-beta.3
Breaking Changes
- [BC5] Use Int for Google proration mode to make mapping logic to GoogleProrationMode reusable (#368) via Josh Holtz (@joshdholtz)
New Features
- [BC5] Add
iso8601
toPeriod
for subscription option pricing phases (#369) via Josh Holtz (@joshdholtz)
5.0.0-beta.2
Breaking Changes
- [BC5] Rename
Period
fields tounit
andvalue
(#365) via Josh Holtz (@joshdholtz)
Bug Fixes
- [BC5] Fix
purchaseProduct
to work withproductIdentifiers
with base plans (#366) via Josh Holtz (@joshdholtz)
5.0.0-beta.1
The first beta of RevenueCat Purchases Hybrid Common v5 is here!! 😻
This latest release updates the Android SDK dependency from v5 to v6 to use BillingClient 5. This version of BillingClient brings an entire new subscription model which has resulted in large changes across the entire SDK.
Migration Guides
- See Android Native - 5.x to 6.x Migration for a
more thorough explanation of the new Google subscription model announced with BillingClient 5 and how to take
advantage of it in V6. This guide includes tips on product setup with the new model.
New SubscriptionOption
concept
Purchasing
In v4, a Google Play Android Package
or StoreProduct
represented a single purchaseable entity, and free trials or intro
offers would automatically be applied to the purchase if the user was eligible.
Now, in Hybrid Common v5, an Google Play Android Package
or StoreProduct
represents a duration of a subscription and contains all the ways to
purchase that duration -- any offers and its base plan. Each of these purchase options are SubscriptionOption
s.
When passing a Package
to purchasePackage()
or StoreProduct
to purchaseStoreProduct()
, the SDK will use the following logic to choose which
SubscriptionOption
to purchase:
- Filters out offers with "rc-ignore-offer" tag
- Uses
SubscriptionOption
with the longest free trial or cheapest first phase- Only offers the user is eligible will be applied
- Falls back to base plan
For more control, purchase subscription options with the new purchaseSubscriptionOption()
method.
Models
StoreProduct
now has a few new properties use for Google Play Android:
defaultOption
- A subscription option that will automatically be applie when purchasing a
Package
orStoreProduct
- A subscription option that will automatically be applie when purchasing a
subscriptionOptions
- A list of subscription options (could be null)
Subscription Option
Below is an example of what a subscription option:
{
"id": "basePlan",
"storeProductId": "subId:basePlanId",
"productId": "subId",
"pricingPhases": [
{
"price": 0,
"priceString": "FREE",
"period": "P1M",
"cycles": 1
},
{
"price": 4.99,
"priceString": "$4.99",
"period": "P1M",
"cycles": 0
}
],
"tags": ["free-offers"],
"isBasePlan": false,
"billingPeriod": {
"periodUnit": "MONTH",
"periodNumberOfUnits": 0
},
"fullPricePhase": {
"price": 4.99,
"priceString": "$4.99",
"period": "P1M",
"cycles": 0
},
"freePhase" {
"price": 0,
"priceString": "FREE",
"period": "P1M",
"cycles": 1
},
"introPhase": null
}
Observer Mode
Observer mode is still supported in v5. Other than updating the SDK version, there are no changes required.