You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] [iOS] App delegate swizzler has no UIScene equivalent — cold-launch & universal links miss Analytics/Dynamic Links on scene-based apps #1892
The C++ SDK's iOS app-delegate swizzler (app/src/invites/ios/invites_ios_startup.mm, hooking installed via +load → RunOnAppDelegateClasses → HookAppDelegateMethods) only replaces UIApplicationDelegate methods:
There is no UISceneDelegate/UIWIndowSceneDelegate handling anywhere in the C++ SDK (looking at unity-v12.10.1 and v13.10.0)
On modern scene-based apps (UIWindowSceneDelegate), URL/NSUserActivity delivery moves off the app delegate onto the scene delegate. The C++ SDK adds nothing on top. As a result these link-delivery paths reach neither the C++ Dynamic Links machinery nor Analytics:
scene:willConnectToSession:options: — cold-launch deep links (connectionOptions.URLContexts) and cold-launch universal links (connectionOptions.userActivities)
scene:openURLContexts: — deep links delivered while the scene is already connected
scene:continueUserActivity: — universal links delivered while the scene is already connected
Impact: on scene-based iOS apps, cold-launch deep/universal links and connected-scene universal links are silently dropped by the SDK.
Steps to reproduce:
Scene-based iOS app (Unity export uses UnityScene : UIWindowSceneDelegate in their latest Editor versions).
Register a Dynamic Link / campaign URL.
Cold-launch the app via a universal link → delivered to scene:willConnectToSession:options:.
Observe: no firebase::/GUL frame in the stack for that delivery; no Dynamic Link resolution; no Analytics campaign event. (Same for scene:continueUserActivity: or scene:openURLContexts: while connected.)
Question for maintainers:
Is scene-delegate support planned for the C++ SDK's swizzler?
Workaround we're using (and would like validated):
We swizzle only the three uncovered scene methods on the scene delegate and forward to [FIRAnalytics handleOpenURL:] / [FIRAnalytics handleUserActivity:], chaining to the original implementation so the engine's own deep-link handling is preserved. Is this the recommended approach, and is there any double-handling risk if the SDK later completes scene coverage?
Thanks for reaching out about this, we are still trying to figure out the best way to handle this on our end. The underlying Firebase iOS SDK gives guidance on how users can connect the swizzling themselves, but in the C++ setting that is significantly harder to do, so we will see if we can automate this in some way.
Activity
a-maurice commentedon Aug 25, 2026
Thanks for reaching out about this, we are still trying to figure out the best way to handle this on our end. The underlying Firebase iOS SDK gives guidance on how users can connect the swizzling themselves, but in the C++ setting that is significantly harder to do, so we will see if we can automate this in some way.