6.0.0-rc.2
Warning
v6 is currently in a release-candidate phase — use 6.0.0-rc.2, not 6.0.0. 6.0.0-rc.2 is the official build to integrate against for early integration and testing while v6 stabilizes. Use it to validate your migration and report any issues; the stable 6.0.0 will be announced once the RC cycle completes.
implementation("io.purchasely:core:6.0.0-rc.2")
implementation("io.purchasely:google-play:6.0.0-rc.2")
// implementation("io.purchasely:player:6.0.0-rc.2") // optionalPurchasely Android SDK 6.0.0-rc.2
The second release candidate of the v6 major version. It builds on 6.0.0-rc.1 with bug fixes and one API rename. The full set of v6 breaking changes is documented in the migration guide; the sections below cover only what changed since rc.1.
⚠️ Breaking Changes (since rc.1)
setDefaultPresentationResultHandler→setDefaultPresentationDismissHandler(rename, same signature). Matches iOS and reflects that it delivers a fullPLYPresentationOutcome(withpresentationpopulated), not a bare result. The handler now also correctly fires for deeplink presentations (previously it never did). The analytics presence marker is renamed accordingly (DEFAULT_PRESENTATION_RESULT_HANDLER→DEFAULT_PRESENTATION_DISMISSED_HANDLER).
✨ Highlights & Fixes
- Observer-mode purchase outcomes — when a paywall purchase/restore is handled by your action interceptor (returns
SUCCESS) and reported viasynchronize(),display(...)now resolves to aPURCHASEDoutcome with the plan (orRESTORED), instead ofCANCELLEDwith a null plan. Mirrors Full-mode behavior. - User switch refresh & dismissal — fixed the subscription refresh and dismissal flow on user switch; stale subscription-refresh jobs are now cancelled so a fast identity change no longer races an in-flight refresh.
- Logout → login attribute leak — logout cleanup (built-in attributes and, when requested, user attributes) now runs outside the cancellable refresh job, so a fast
logout()→login()sequence no longer lets the new user inherit the previous user's attributes. Built-in cleanup runs off the caller thread to avoid StrictMode/jank. - Transition dimensions honor
0— a drawer/popin height or popin width configured to0px/0%is now rendered as-is instead of silently falling back to the surface default (drawer 60%, popin 50%, widthmatch_parent). An absent dimension still uses the default.
🛠 Build Requirements
- Unchanged from rc.1: Minimum Gradle 9.3.0, Kotlin 2.2.x (K2), Java target 11.