Repository navigation
SDK 4.3: commitment subscriptions, kept flow views, preloaded flows, held store messages - #41
Merged
Merged
Conversation
yauch-dev
force-pushed
the
feature/sdk-4.3-update
branch
2 times, most recently
from
October 28, 2026 20:17
6ea4501 to
f13c090
Compare
yauch-dev
force-pushed
the
feature/sdk-4.3-update
branch
2 times, most recently
from
November 9, 2026 19:32
f16c6db to
f2c46b5
Compare
yauch-dev
marked this pull request as ready for review
November 9, 2026 20:00
yauch-dev
force-pushed
the
feature/sdk-4.3-update
branch
from
November 9, 2026 20:27
4cac3cf to
f798004
Compare
x401om
force-pushed
the
feature/sdk-4.3-update
branch
from
November 13, 2026 13:45
be5cb45 to
5b547e5
Compare
Base automatically changed from
feature/android-bridge-without-wrapper
to
dev
November 13, 2026 13:45
…flows, held store messages AdaptySDK-iOS 4.3.1 with its cross-platform contract, and AdaptySDK-Android 4.3.0 (crossplatform, android-sdk, android-ui). - Commitment subscriptions on iOS: AdaptySubscription.PricingTerms carries the billing plan, the price and period of one payment and the commitment they add up to. A product goes back with its plan and the purchase intent, so MakePurchase buys it on the plan it was offered on. On both platforms a profile's access levels and subscriptions gain BillingPlan and CommitmentInfo; a subscription always has a plan, UpFront when the store reports none. - AdaptyFlow.VariationName. - A dismissed flow view can be kept (DismissFlowView with destroy: false), shown again, and released later with DestroyFlowView. - PreloadFlows and PreloadFlowsForDefaultAudience fill the flow cache for several placements. - Store messages can be held (AdaptyStoreMessagesHandling.Manual) and shown with ShowStoreMessages, on iOS filtered by type; GetPendingStoreMessageTypes lists what is held on iOS. - On iOS a price without a currency code or localized string is a decoding error, as the contract requires. - New error codes: BillingPlanUnavailable, OperationInProgress, ResolverFailure. Null placement ids and filter entries are refused before the bridge. The demo shows a kept flow view again and releases it; the harness reads list arguments element by element, keeps AdaptyStoreMessageType in its link.xml, and its StoreKit configuration has a commitment product. CHANGELOG and AGENTS.md describe the changes and the contract deviations they keep.
SDKVersion, package.json and the README install URL move to 4.3.0. The changelog section gets its 4.3.0 heading, the iOS-only error codes their tag, and _upm.changelog the same set of entries in short. The .unitypackage install path was verified on 6000.0.74f1: a clean project, the import, Install Dependencies, a compile. AGENTS.md says the floor raise ships in 4.3.0, and that the Android bridge takes no filter for ShowStoreMessages rather than rejecting one.
The account has to be a license tester, or MakePurchase fails at once with StoreProductNotAvailable. Play's Subscribe button ignores injected touches but takes keys: Tab until uiautomator shows it focused, then Enter. Xiaomi needs USB debugging (Security settings) for adb input and may kill the harness behind the sheet; an owned subscription raises no sheet.
ReportTransaction takes appleJWSTransaction and sends it as apple_jws_transaction on iOS, as AdaptySDK-iOS 4.3.2 reads it. The contract copy is taken from the iOS release/4.3.2 branch; the native pin stays at 4.3.1 until 4.3.2 is tagged.
An empty appleJWSTransaction is not sent, as the contract omits rather than sends an empty value. The docs name the StoreKit 2 Transaction for transactionId, say to pass a null variationId to send the JWS alone, and the three-argument overload gets its full parameter docs back. AGENTS.md counts the new #if among the public API behaviour conditionals.
get_log_level is implemented by the iOS plugin only: the Android crossplatform helper has no such operation, so on Android the call never returned a level. No other Adapty cross-platform SDK exposes it - React Native, Capacitor and JS Core list it as internal - and the level is the one the app set in the configuration or with SetLogLevel. Breaking: listed under Breaking Changes in 4.3.0.
4.3.2 carries the optional JWS in reportTransaction that the 4.3.0 API already sends. Its cross_platform.yaml is the copy this repository holds, and unknownTransactionId (1030) still has no throw site, so the enum stays as it is. Checked on the simulator: the SDK reports 4.3.2 and a reported transaction's JWS reaches the validate request as "transaction".
x401om
force-pushed
the
feature/sdk-4.3-update
branch
from
November 13, 2026 13:45
5b547e5 to
0ef1c3a
Compare
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.
What
AdaptySDK-iOS 4.3.2 with its cross-platform contract, and AdaptySDK-Android 4.3.3 (
crossplatform4.3.1,android-sdk4.3.2,android-ui4.3.1). Stacked on #36.AdaptySubscription.PricingTermscarries the billing plan (UpFront,Monthly), the price and period of one payment and the commitment they add up to. A product goes back to the native side with its plan and purchase intent, soMakePurchasebuys it on the plan it was offered on. Below iOS 26.4 or with Xcode older than 26.5 a product comes on its up-front terms. On both platformsAdaptyProfile.AccessLevel/SubscriptiongainBillingPlanandCommitmentInfo; a subscription always has a plan,UpFrontwhen the store reports none.DismissFlowView(view, destroy: false)hides a view,Presentshows it again,DestroyFlowViewreleases it.PreloadFlows/PreloadFlowsForDefaultAudiencefill the flow cache for several placements.AdaptyStoreMessagesHandling.Manual, thenShowStoreMessages(on iOS filtered byAdaptyStoreMessageType);GetPendingStoreMessageTypeslists what is held on iOS and reports null on Android.AdaptyFlow.VariationName; error codesBillingPlanUnavailable,OperationInProgress,ResolverFailure; on iOS a price withoutcurrency_codeorlocalized_stringis a decoding error.crossplatform4.3.0 keepsinit,getShared,setActivity,onMethodCalland the callback interfaces.AdaptyStoreMessageTypein its link.xml, a commitment product inAdaptyDemo.storekit. CHANGELOG andAGENTS.mddescribe the changes and the contract deviations kept on purpose.Verified
PreloadFlowsthenGetFlowcache-first,GetPendingStoreMessageTypes,ShowStoreMessageswith a filter, dismiss withdestroy: false→Present→DestroyFlowView(the view is gone afterwards).PreloadFlows,GetFlowwithvariation_name, Play products,GetPendingStoreMessageTypes→ null,ShowStoreMessageswith and without a filter, the same kept-view sequence, and a license-tester purchase whose profile readsbilling_plan_id: up_fronton the subscription and null plan and commitment on the access level._upm.changelog; the.unitypackageinstall path (clean project, import, Install Dependencies, compile) on 6000.0.74f1;contract-conformanceagainst the 4.3.1 contract.Not yet