From 6b5ca687e42e8ff7e8d1e3ce07bcab4b35eb28e2 Mon Sep 17 00:00:00 2001 From: sravan Date: Thu, 16 Jul 2026 14:47:28 +0530 Subject: [PATCH] docs(ios): track ReplayKit screen-broadcast + native audio-routing as phase-2 follow-ups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit iOS WebViews don't support getDisplayMedia, so sharing the device screen into a meeting needs a native ReplayKit Broadcast Upload Extension (+ App Groups) — viewing a shared screen works today. Also note native audio routing (AVAudioSession) as a phase-2 plugin. Adjusted the App Review note so we don't advertise iOS screen-sharing before that extension ships. --- mobile/IOS_SETUP.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/mobile/IOS_SETUP.md b/mobile/IOS_SETUP.md index 62eeea3..d7129ea 100644 --- a/mobile/IOS_SETUP.md +++ b/mobile/IOS_SETUP.md @@ -65,5 +65,27 @@ collect account info + usage for chat/calls). Then submit for review (or flip `s ### App Review note (Guideline 4.2 — "Minimum Functionality") Apple scrutinises apps that look like "just a website". Ours passes because it ships **real native capabilities** — push notifications, camera/microphone for calls, photo sharing. Make sure push (Step 5) -is live before the **public** submission, and in the reviewer notes mention the native video calling + -screen sharing so it's obvious this is more than a web view. TestFlight builds are fine without push. +is live before the **public** submission, and in the reviewer notes mention the **native video/voice +calling + push notifications**. Do **not** advertise "share your screen" as an iOS feature in the store +listing yet — see the follow-up below (you can still *view* a screen someone else shares). + +--- + +## Known iOS limitations & follow-ups (phase 2 — after TestFlight) + +### 1. Sharing YOUR iOS screen into a meeting → needs a ReplayKit Broadcast Upload Extension +- **Why:** the app's screen share uses the web `getDisplayMedia` API, which **iOS WebViews and Safari do + not support**. Apple only allows capturing the *device* screen via **ReplayKit**. +- **What works today on iOS:** *viewing* a screen another participant shares (it's just incoming video), + chat, voice/video calls, camera, photo sharing. +- **What's needed to broadcast the iOS screen:** a native **Broadcast Upload Extension** target that + captures frames via ReplayKit and feeds them into the LiveKit/WebRTC session, plus the **App Groups** + capability (to pass data between the app and the extension). This is native Swift work — NOT part of + the Capacitor wrapper — so it's tracked as a separate task, done after the app is on TestFlight. +- **Store impact:** don't claim iOS screen-sharing in the listing until this ships, or a reviewer may + test it and it will fail. + +### 2. Native mobile audio routing (speaker / earpiece / Bluetooth) — needs a Capacitor audio plugin +- Mobile **web** can't switch the audio output route (`setSinkId` is unimplemented on iOS/Android), so the + in-meeting speaker/earpiece/Bluetooth control is web-only where it works and hidden where it doesn't. +- True routing on iOS needs a small native plugin driving `AVAudioSession`. Phase-2 native task.