Skip to content

SDK 4.3: commitment subscriptions, kept flow views, preloaded flows, held store messages - #41

Merged
x401om merged 11 commits into
devfrom
feature/sdk-4.3-update
Nov 13, 2026
Merged

x401om merged 11 commits into
devfrom
feature/sdk-4.3-update

Conversation

@yauch-dev

@yauch-dev yauch-dev commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

What

AdaptySDK-iOS 4.3.2 with its cross-platform contract, and AdaptySDK-Android 4.3.3 (crossplatform 4.3.1, android-sdk 4.3.2, android-ui 4.3.1). Stacked on #36.

  • Commitment subscriptions. On iOS AdaptySubscription.PricingTerms carries 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, so MakePurchase buys 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 platforms AdaptyProfile.AccessLevel / Subscription gain BillingPlan and CommitmentInfo; a subscription always has a plan, UpFront when the store reports none.
  • Kept flow views. DismissFlowView(view, destroy: false) hides a view, Present shows it again, DestroyFlowView releases it.
  • PreloadFlows / PreloadFlowsForDefaultAudience fill the flow cache for several placements.
  • Held store messages. AdaptyStoreMessagesHandling.Manual, then ShowStoreMessages (on iOS filtered by AdaptyStoreMessageType); GetPendingStoreMessageTypes lists what is held on iOS and reports null on Android.
  • AdaptyFlow.VariationName; error codes BillingPlanUnavailable, OperationInProgress, ResolverFailure; on iOS a price without currency_code or localized_string is a decoding error.
  • The Android bridge needed no change: crossplatform 4.3.0 keeps init, getShared, setActivity, onMethodCall and the callback interfaces.
  • Harness: list arguments, AdaptyStoreMessageType in its link.xml, a commitment product in AdaptyDemo.storekit. CHANGELOG and AGENTS.md describe the changes and the contract deviations kept on purpose.

Verified

  • JSON layer suite, all four legs.
  • Harness on the iOS simulator (iPhone 17 Pro, iOS 26.5) with local StoreKit: purchase on the monthly commitment plan, PreloadFlows then GetFlow cache-first, GetPendingStoreMessageTypes, ShowStoreMessages with a filter, dismiss with destroy: false → Present → DestroyFlowView (the view is gone afterwards).
  • Harness on a Xiaomi device (Android 15, Activity entry point): activation with manual store messages, both PreloadFlows, GetFlow with variation_name, Play products, GetPendingStoreMessageTypes → null, ShowStoreMessages with and without a filter, the same kept-view sequence, and a license-tester purchase whose profile reads billing_plan_id: up_front on the subscription and null plan and commitment on the access level.
  • Version 4.3.0, CHANGELOG and _upm.changelog; the .unitypackage install path (clean project, import, Install Dependencies, compile) on 6000.0.74f1; contract-conformance against the 4.3.1 contract.

Not yet

  • The release itself: the CHANGELOG date is set for the day of the cut.
  • Not exercised: commitment renewals, a real store message on screen, a commitment plan on Android, GameActivity.

@yauch-dev
yauch-dev added this pull request to stack #40 October 28, 2026 18:32
@yauch-dev
yauch-dev force-pushed the feature/sdk-4.3-update branch 2 times, most recently from 6ea4501 to f13c090 Compare October 28, 2026 20:17
@yauch-dev yauch-dev changed the title SDK 4.3 on iOS: commitment subscriptions, kept flow views, preloaded flows, held store messages SDK 4.3: commitment subscriptions, kept flow views, preloaded flows, held store messages Oct 28, 2026
@yauch-dev
yauch-dev requested a review from x401om October 31, 2026 07:10
@yauch-dev yauch-dev self-assigned this Oct 31, 2026
@yauch-dev
yauch-dev force-pushed the feature/sdk-4.3-update branch 2 times, most recently from f16c6db to f2c46b5 Compare November 9, 2026 19:32
@yauch-dev
yauch-dev marked this pull request as ready for review November 9, 2026 20:00
@yauch-dev
yauch-dev force-pushed the feature/sdk-4.3-update branch from 4cac3cf to f798004 Compare November 9, 2026 20:27
@x401om
x401om force-pushed the feature/sdk-4.3-update branch from be5cb45 to 5b547e5 Compare November 13, 2026 13:45
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
x401om force-pushed the feature/sdk-4.3-update branch from 5b547e5 to 0ef1c3a Compare November 13, 2026 13:45
@x401om
x401om merged commit 7276eb2 into dev Nov 13, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants