Update to 4.1 as an iOS-integration snapshot - #30
Draft
yauch-dev wants to merge 3 commits into
Draft
Conversation
Contract 4.1.0 and native AdaptySDK-iOS 4.1.0. Android stays on the 4.0.x natives until its 4.1 release, mirroring the Flutter plugin's cut, so this version is marked not-for-publishing in the changelog. - UpdateAttribution -> UpdateExternalAttribution with source -> provider, and AppliedAttributionSources -> AppliedExternalAttributionProviders, matching the native rename; no deprecated aliases, and the profile member's wire key stays - AdaptyConfiguration.Builder.AdaptyAttributionEnabled, off and unsent by default - MakePromotedPurchase, AdaptyPromotedProduct and IAdaptyEventListener.OnReceivePromotedPurchase for App Store promoted purchases; the pinned native completes them itself and does not emit the event yet, so the API is wired for the release that does - a product request writes its offer identifier nested as subscription.offer.offer_identifier, through an envelope DTO shared by the paywall and promoted product requests; the flat key is gone - AdaptyFlow carries ui_schema to the renderer as an opaque JObject, pinned by the flow-full round trip - the demo's iOS fallback stub moves to format 11, which native 4.1 requires; verified on a simulator together with a StoreKit-config purchase, the profile update event, and flow rendering - 4.1.0-dev.1 in the version fields, changelog with the migration link, README pins, and MIGRATION-v4.0-to-v4.1.md
Symptoms before causes (the fallback section now opens with the error the user actually sees), reassurance where the reader would worry (an Android build does not break, an empty handler is a valid choice), and the reasoning behind the missing deprecated aliases instead of the bare fact.
yauch-dev
marked this pull request as draft
August 15, 2026 19:33
The native dependency is pinned exactVersion 4.1.0, so a future native release that starts forwarding didReceivePromotedPurchase cannot slip into a build on its own — the handler fires only once an SDK release moves the pin. The migration guide claimed otherwise; the changelog copies said it vaguely enough to mislead. Review finding P2.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Important
Draft on purpose: waiting for the Android SDK 4.1 release. The iOS half is done and accepted; this PR merges once the Android natives expose the matching 4.1 contract and get pinned here (crossplatform + android-sdk + the rebuilt unity-wrapper AAR). Until then the package version stays
4.1.0-dev.1and must not be published.What
Moves the SDK to cross-platform contract 4.1.0 and native AdaptySDK-iOS 4.1.0, as an iOS-integration snapshot: the Android SDK has no 4.1 release yet, so Android stays on the 4.0.x natives (crossplatform 4.0.2 / android-sdk 4.0.1), mirroring the Flutter plugin's cut. The version is
4.1.0-dev.1and the changelog marks it not-for-publishing until the coordinated release.Breaking
UpdateAttribution→UpdateExternalAttribution(source→provider),AdaptyProfile.AppliedAttributionSources→AppliedExternalAttributionProviders— matching the native 4.1 rename, no deprecated aliases. Wire key of the profile member unchanged.IAdaptyEventListenergainedOnReceivePromotedPurchase(AdaptyPromotedProduct)— a deliberate abstract add, no default implementation: the iOS default is silently purchase, which should not hide in a default.SetFallback(adapty_code: 2006); the demo stub is updated and the migration guide tells users to re-download theirs.Added
Adapty.MakePromotedPurchase+AdaptyPromotedProduct(App Store promoted purchases, iOS only). Note: the pinned native completes promoted purchases itself and does not emit the event yet (AdaptyPluginDelegatekeeps the default implementation behind a TODO at tag 4.1.0); the listener method starts firing only once a future SDK release moves the exact pin to a native that reports them.AdaptyConfiguration.Builder.AdaptyAttributionEnabled(+SetAdaptyAttributionEnabled), off and unsent by default.subscription.offer.offer_identifierthroughAdaptySubscriptionOfferRequest, shared by the paywall and promoted DTOs; the flat key is no longer written (natives read both, the contract documents only the nested form).AdaptyFlowcarriesui_schema(UIBuilder 5.1 custom layouts) to the renderer as an opaque privateJObject— round-trip only, not public API.MIGRATION-v4.0-to-v4.1.md, README pins and the changelog section (both copies, entry-set in sync).Deliberately not in this PR
obfuscated_profile_idand error 1030 re-checked per AGENTS — status quo holds.type: "code"while both iOS and this SDK handle it — pre-existing, a question for the contract owners.Testing
#if UNITY_IOSgate on the promoted product'sis_family_shareable, now aligned with the paywall product.GetFlow calm10+ products, a purchase through the new nested offer envelope (intro offer applied,[Environment: Xcode]), profile update arriving viadid_load_latest_profile(Premium: true),UpdateExternalAttribution, and full-screen flow rendering by native UIBuilder 5.1.