Tracking a tvOS port of firebase_in_app_messaging. Findings from the Firebase Apple SDK:
Headless engine works on tvOS. FirebaseInAppMessaging.podspec builds for tvOS (s.tvos.deployment_target = '15.0', s.tvos.source_files) — campaign fetch, trigger evaluation and analytics all compile and run. The Dart API (triggerEvent, setMessagesSuppressed, setAutomaticDataCollectionEnabled) ports with the standard federated recipe.
The default display UI is iOS-only. The tvOS source_files omit Sources/DefaultUI/** (the card / modal / banner view controllers), and the display resources are declared under s.ios.resource_bundles only (no s.tvos.resource_bundles). So the engine can trigger a message, but there is no built-in renderer on tvOS — nothing draws.
What a full port needs (self-contained in the _tvos package). Firebase already exposes a native display hook — FIRInAppMessaging.inAppMessaging().messageDisplayComponent — which receives the full message and is responsible for rendering it (the slot DefaultUI fills on iOS). So firebase_in_app_messaging_tvos would register a native, focus-based tvOS display component that draws the message with tvOS UIKit — the same auto-display behaviour as iOS, adapted for the 10-foot TV UI. No changes to the upstream plugin, the platform interface, or app code; the message data stays native.
Summary: the headless port is mechanical, but making messages actually show requires implementing the tvOS UI layer inside the _tvos package (view controllers for banner / modal / card / image-only). Documenting for visibility.
Tracking a tvOS port of
firebase_in_app_messaging. Findings from the Firebase Apple SDK:Headless engine works on tvOS.
FirebaseInAppMessaging.podspecbuilds for tvOS (s.tvos.deployment_target = '15.0',s.tvos.source_files) — campaign fetch, trigger evaluation and analytics all compile and run. The Dart API (triggerEvent,setMessagesSuppressed,setAutomaticDataCollectionEnabled) ports with the standard federated recipe.The default display UI is iOS-only. The tvOS
source_filesomitSources/DefaultUI/**(the card / modal / banner view controllers), and the display resources are declared unders.ios.resource_bundlesonly (nos.tvos.resource_bundles). So the engine can trigger a message, but there is no built-in renderer on tvOS — nothing draws.What a full port needs (self-contained in the
_tvospackage). Firebase already exposes a native display hook —FIRInAppMessaging.inAppMessaging().messageDisplayComponent— which receives the full message and is responsible for rendering it (the slot DefaultUI fills on iOS). Sofirebase_in_app_messaging_tvoswould register a native, focus-based tvOS display component that draws the message with tvOS UIKit — the same auto-display behaviour as iOS, adapted for the 10-foot TV UI. No changes to the upstream plugin, the platform interface, or app code; the message data stays native.Summary: the headless port is mechanical, but making messages actually show requires implementing the tvOS UI layer inside the
_tvospackage (view controllers for banner / modal / card / image-only). Documenting for visibility.