Skip to content

Release 2.15.2#195

Open
itmindbox wants to merge 13 commits into
masterfrom
release/2.15.2
Open

Release 2.15.2#195
itmindbox wants to merge 13 commits into
masterfrom
release/2.15.2

Conversation

@itmindbox
Copy link
Copy Markdown
Contributor

Automated PR: merge release/2.15.2 into master

Versions:

  • Flutter SDK: 2.15.2
  • Android SDK: 2.15.2
  • iOS SDK: 2.15.1

Vailence and others added 13 commits May 5, 2026 19:47
Place all required Configuration constructor params consecutively, with
operationsDomain among the optional params at the end.
Switch from nullable String? with conditional toMap to default empty
string with unconditional serialization. Native sides treat empty as
"not set" (Android skips builder call; iOS converts to nil), mirroring
how previousDeviceUUID and previousInstallationId are wired.
Capture init MethodCall args and verify operationsDomain is forwarded
across the platform channel both when set and when defaulted.
- Configuration dartdoc: use Dart `null`/empty wording, remove the
  native-config reference that leaks SDK-internal behavior.
- MindboxAndroidPlugin: rename local to operationsDomainArg and apply
  the builder method outside the chain to avoid name collision with the
  builder method.
- example: drop the placeholder commented-out arg from the sample app.
Merge 'master' into 'develop' after release
`MindboxFlutterAppDelegate` is scene-safe (never touches `window` or
`rootViewController`), but the inline comments did not reflect how its
callbacks behave once the host app declares `UIApplicationSceneManifest`.
Add markers at the two callbacks whose semantics change:

  `application(_:didFinishLaunchingWithOptions:)` — `launchOptions` is
  nil in scene mode; the cold-start payload arrives in the customer's
  `scene(_:willConnectTo:options:)` and must be forwarded via
  `Mindbox.shared.track(.launchScene(...))`.

  `application(_:continue:restorationHandler:)` — not invoked in scene
  mode; universal links arrive in the customer's `scene(_:continue:)`
  and must be forwarded via `Mindbox.shared.track(.universalLink(...))`.

Translate the pre-existing inline comments in the file from Russian to
English to align with the repository's language convention.

No behavior change.
Add `SceneDelegate.swift` forwarding `.launchScene` and `.universalLink`
to Mindbox, and declare `UIApplicationSceneManifest` in `Info.plist`. The
two example `AppDelegate` variants now conform to
`FlutterImplicitEngineDelegate`: under UISceneDelegate the engine is
created by the scene, so `window`/`rootViewController` are not yet
available in `didFinishLaunchingWithOptions`, and plugin /
`FlutterEventChannel` setup has to move into
`didInitializeImplicitFlutterEngine(_:)`.

Each `AppDelegate` carries a header block labeling it as the migrated
variant with links to Flutter's UISceneDelegate guide and the Mindbox
`UISCENE_MIGRATION.md`, plus a commented-out pre-migration class at the
bottom of the file as a reference for projects still on the legacy
AppDelegate-only flow.

`pubspec.yaml` now requires Flutter `>=3.41` (first version where
UISceneDelegate is the recommended Flutter iOS lifecycle and
`FlutterImplicitEngineDelegate` is available) so anyone trying to run
the example on an older SDK gets a clear `pub get` error instead of a
build-time surprise. The SDK packages themselves keep their existing
Flutter `>=2.0.0` constraint — only the example is gated.
Apps that declare `UIApplicationSceneManifest` in `Info.plist` no longer
receive `application(_:didFinishLaunchingWithOptions:)` with a populated
`launchOptions`, and `application(_:continue:restorationHandler:)` is
not invoked at all — universal-link arrivals land in
`scene(_:continue:)` on the scene delegate. Without forwarding those
events Mindbox loses launch and universal-link tracking.

`UISCENE_MIGRATION.md` (at the repo root for discoverability) describes
only the Mindbox-side glue: where to call
`Mindbox.shared.track(.launchScene(_:))` and
`Mindbox.shared.track(.universalLink(_:))` from the customer's
`SceneDelegate`, and confirms that the rest (APNS token, push handlers,
BG tasks, notification extensions, `MindboxFlutterAppDelegate`) needs no
changes under scene mode. Anything that is not Mindbox-specific points
at the official Flutter UISceneDelegate guide instead of duplicating it.

The repo `README.md` is the single entry point linking to the guide —
the per-package READMEs (`mindbox`, `mindbox_ios`) are not the right
place for scene-mode integration guidance, since UISceneDelegate is an
app-side migration with no implications for the SDK packages themselves.
…xample

After UISCENE_MIGRATION.md moved to the repo root, the in-source link in
SceneDelegate.swift and two relative paths inside the doc still pointed at
the old `mindbox_ios/...` and `../example/...` locations. Switched them to
absolute GitHub URLs on `develop`, matching the developers.mindbox.ru
callout and the in-source comment.

Also rewrote the SceneDelegate.swift header comment: `FlutterSceneDelegate`
itself needs Flutter ≥ 3.35, but the example app pins to ≥ 3.41 because of
`FlutterImplicitEngineDelegate` in AppDelegate.
…legate-support

MOBILE-171: Example `UISceneDelegate` support
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.

3 participants