Skip to content

Release 7.0.3-rc4 - #440

Merged
Kobikg78 merged 13 commits into
masterfrom
releases/7.x.x/7.0.x/7.0.3-rc4
Oct 4, 2026
Merged

Kobikg78 merged 13 commits into
masterfrom
releases/7.x.x/7.0.x/7.0.3-rc4

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

RC release branch for 7.0.3-rc4. Promotion is gated by rc-smoke/github-release.

af-obodovskyi and others added 12 commits September 30, 2026 16:54
…-based exports

Unity's scene delegate (UnityScene.mm) funnels both custom-URL-scheme
opens and Universal Links through one private applyURL: choke point,
which always dispatches kUnityOnOpenURL - the correct AppsFlyerLib
entry point for custom-scheme links, but the wrong one for Universal
Links (which AppsFlyerLib documents should go through
continueUserActivity:restorationHandler: instead). Once a scene
delegate is configured, iOS also stops calling the AppDelegate's
continueUserActivity:, so AppsFlyer+AppController.m's existing swizzle
is dead code in scene-based exports.

Adds AppsFlyer+UnityScene.m: swizzles scene:continueUserActivity: and
scene:willConnectToSession:options: to forward Universal Links through
the correct AppsFlyerLib entry point while the NSUserActivity is still
intact, and suppresses the one applyURL: dispatch that follows to
avoid a duplicate event. Custom-URL-scheme handling and pre-scene
exports are unaffected.

Also adds an E2E regression phase (.af-e2e/test-plan.json phase_7) and
its QA injection harness (UnitySceneDeepLink.mm), and fixes two runner
bugs surfaced while wiring it up: af-scenario-runner.sh had no way to
skip a phase per-platform, and log collection filtered on a stale PID
after a deep-link trigger relaunches the app.

Bumps plugin version 7.0.2 -> 7.0.3.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
…es only

scene:continueUserActivity: is Apple's general activity-continuation
entry point, not Universal-Link-only - it also fires for Handoff, Siri
Shortcuts/donated activities, Spotlight continuation, etc. The warm
re-open swizzle was setting the apply-URL suppression flag for any
non-nil NSUserActivity, unlike the cold-launch path
(__af_firstBrowsingActivity) which already filtered for
NSUserActivityTypeBrowsingWeb + a non-nil webpageURL.

A non-browsing activity would set the flag without Unity's own
applyURL: ever firing to consume it, silently suppressing the next
legitimate deep link dispatch (a real custom-URL-scheme open or a
genuine Universal Link) via kUnityOnOpenURL/handleOpenUrl:.

Extracts the cold-launch path's filter into a shared
__af_isBrowsingActivity helper and applies it to both call sites.

Addresses PR review feedback.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
The top-level plan description still said phase_7 covers "Universal
Link cold launch through the scene delegate," inconsistent with the
phase's own (already-accurate) description: the QA harness can only
drive scene:continueUserActivity: (warm re-open), since
UISceneConnectionOptions has no public initializer to fabricate a real
scene:willConnectToSession:options: cold-launch event.

Since DELIVERY-115275 originated from a cold-launch-specific drop,
call out explicitly that this automation does not cover it, so it
doesn't read as fully verified.

Addresses PR review feedback.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
AppsFlyerRPCClient.ParseResponse checked only root.ContainsKey("error"),
not whether the value was non-null. iOS emits "error":null (key present)
on a successful response rather than omitting the key entirely, so every
successful response threw AppsFlyerRPCException(-1, "Unknown RPC error")
instead of returning its result data.

Reported by a customer upgrading to 7.0.x on iOS; root cause confirmed
against the 7.0.2 release tag.

Adds a regression test (ParseResponse_SuccessWithExplicitNullErrorKey_ReturnsData)
covering the "error":null-alongside-"result" shape, which no existing
fixture exercised.

Bumps plugin version 7.0.2 -> 7.0.3.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
…elegate-support

fix(ios): route Universal Links through continueUserActivity in scene…
CI was pinned to Unity 6000.3.5f1, whose iOS exporter never emits
UnityScene.h/.mm or UIApplicationSceneManifest - only the classic
UnityAppController-only template. Since AppsFlyer+UnityScene.m and
UnitySceneDeepLink.mm are both gated on #if __has_include("UnityScene.h"),
they silently compiled to empty translation units in CI, so phase_7
(and the underlying scene-delegate fix) could never actually run there,
even though everything passed locally on Unity 6000.5.6f1.

Bumps rc-e2e-ios.yml and e2e-manual.yml's package-build job to
6000.5.6f1 (verified download URLs/hash). Left rc-release.yml,
release_production_workflow.yml (only run -exportPackage, don't need
scene export) and rc-e2e-android.yml/push-unity-to-ghcr.yml (blocked -
no 6000.5.6f1 tag published yet for unityci/editor) untouched.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
fix(ci): bump iOS E2E Unity Editor to 6000.5.6f1
Unity 6000.5.6f1 renamed the iOS Trampoline framework directory from
Frameworks/libiPhone-lib-sim-arm64/ to Frameworks/UnityRuntime-sim-arm64/.
The "Patch Unity libs to arm64 simulator" step still referenced the old
path, so the cp of UnityRuntime.framework/UnityRuntime failed after the
Unity version bump in the previous commit.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
fix(ci): update arm64 simulator patch path for Unity 6000.5.6f1
…/iOS pipeline

- rc-e2e-ios.yml: run on the new dedicated self-hosted Apple Silicon Mac
  instead of GH-hosted macos-15, so Unity 6000.5.6f1 + iOS module stay
  resident on disk instead of being downloaded/installed fresh every run.
- rc-e2e-android.yml: pin reactivecircus/android-emulator-runner to an
  exact release (v2.38.0) instead of the floating @v2 tag, so its internal
  SDK/cmdline-tools installation logic can't silently change between runs.
- unity-playmode-tests.yml: export GITHUB_TOKEN for game-ci/unity-test-runner
  so its internal CLI-release lookup is authenticated instead of hitting the
  anonymous GitHub API rate limit (403), which was failing the iOS playmode
  unit test job.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
ci(e2e): move iOS E2E to dedicated self-hosted runner, harden pipeline
al-af
al-af previously approved these changes Oct 4, 2026

@al-af al-af left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved!

@Kobikg78 Kobikg78 added the pass QA ready for deploy QA approved. Triggers RC-PROMOTE: strips -rc suffix on release PRs to master after rc-smoke passes. label Oct 4, 2026
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Author

RC-PROMOTE complete. Version surfaces and installation links now point at 7.0.3, and the branch is ready to merge.

@al-af al-af left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@Kobikg78
Kobikg78 merged commit 8756add into master Oct 4, 2026
5 checks passed
github-actions Bot pushed a commit that referenced this pull request Oct 4, 2026
@Kobikg78
Kobikg78 deployed to Production October 4, 2026 11:41 — with GitHub Actions Active

This branch was successfully deployed

1 active deployment
Production — d394a6bc Deployed Oct 4, 2026 by Kobikg78 via Release-To-Production / Release-To-Production #78
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pass QA ready for deploy QA approved. Triggers RC-PROMOTE: strips -rc suffix on release PRs to master after rc-smoke passes.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants