encore_flutter 2.0.0
encore_flutter: ^2.0.0 copied to clipboard
Flutter plugin wrapping the native Encore iOS and Android SDKs for monetization, offers, and entitlements. All offer UI is rendered natively via StoreKit (iOS) and Play Billing (Android).
2.0.0 #
Migrates the plugin onto the native Encore 2.0 surface (iOS EncoreKit 2.0.0,
Android com.encorekit:encore 2.0.1). Breaking, with no compatibility shim;
see "Migrating from 1.x" in the README for the full walkthrough.
Android 2.0.0 is not usable and must not be pinned: its published AAR shipped the 2.0 public API obfuscated, so nothing could compile against it. 2.0.1 is the first Android release that exposes the surface this plugin needs.
Breaking #
onPurchaseRequestandonPurchaseRequestResultare gone. Both native SDKs deletedonPurchaseRequestin 2.0 and replaced it with a registered purchase controller. ImplementEncorePurchaseControllerand pass the instance toEncore.shared.configure(purchaseController: ...). The controller returns a three-valuedEncorePurchaseResult(purchased/cancelled/pending) instead of nothing (1.xonPurchaseRequest, which could not report success at all) or abool(1.xonPurchaseRequestResult, which reported deferred purchases — Ask to Buy, SCA — as failures).onPurchaseCompleteis gone, along withEncoreBillingPurchaseResult. The SDK no longer runs purchases itself, so there is no native purchase to report; your controller already sees every purchase it runs.onPassthroughis gone. The presentation record answers the same question with more detail:EncoreNotPresentedmeans nothing was shown, and a presented record carries the dismissal reason and both funnels.EncorePresentationResulthas a new shape.Granted/Claimed/NotGrantedare replaced byEncoreNotPresented(reason)andEncorePresented(outcome), where the outcome carries two independent funnels —advertiser(the Encore offer claim) andpublisher(your purchase) — plus adismissal. The record is facts only: there is no SDK-computed "unlocked" verdict, because what a claim means is a property of the variant flow that served it.Encore.shared.placements.setClaimEnabled(...)moved toEncore.shared.setClaimEnabled(...), matching the native SDKs, which folded the 1.x placements manager into the facade.EncorePlacementsis removed.
Added #
Encore.shared.outcomes— a broadcastStream<EncorePlacementOutcome>over the native outcomes stream. Carries everyshow()resolution plusEncoreStrictUnlockVerifiedevents, which can land on a later launch than the presentation that produced them and so can never be ashow()return value.EncoreUnlockModeonconfigure, selecting how claims are verified.EncoreUnlockMode.strictis what makesEncoreStrictUnlockVerifiedreachable.EncorePurchaseRequest.basePlanId— the Google Play base plan to select, when the product exposes several.nullon iOS.EncoreClaimedOffercarriescampaignId,advertiserNameand thetransactionIdthat joins a claim to its later verification.
Fixed #
EncoreUseCasenow actually reaches the native SDK. In 1.x the value was dropped at the bridge — neither native plugin implemented the channel method that carried it — soEncoreUseCase.rewardUserscould never present, andheadline/subheadlineoverrides were silently ignored. Both bridges now forward all three on everyshow().