a561852067
Build error: `cannot inherit from non-open class 'VideoView' outside of its defining module` — VideoView is public, not open, so it can't be subclassed in the plugin module. Reworked TileVideoView from a VideoView subclass into a UIView CONTAINER that holds a VideoView: the container is frame-synced to the web tile rect, the pinch/pan zoom transform lives on the inner video (so it never fights the position poll), and the name/mute overlays sit on the container so they no longer scale with zoom. track/layoutMode are forwarded. Also silenced the extension warning: SampleHandler now restates `@unchecked Sendable`. The broadcast extension itself compiled + linked in the failed build, so the SPM-linked extension injection + App Group setup are working. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
17 lines
1.1 KiB
Swift
17 lines
1.1 KiB
Swift
import ReplayKit
|
|
import LiveKit
|
|
|
|
// Principal class of the Broadcast Upload Extension (ReplayKit) that lets the iOS user share their screen.
|
|
//
|
|
// HOW IT WORKS: when the user starts a system broadcast, iOS launches THIS extension. LiveKit's LKSampleHandler
|
|
// does everything — on broadcastStarted it opens an IPC socket in the shared App Group (group.com.bizgaze.connect)
|
|
// and streams the ReplayKit sample buffers to the MAIN app, whose LiveKit connection publishes them as a
|
|
// screen-share track. The extension itself never creates a Room / initialises WebRTC, so it stays well under the
|
|
// 50 MB extension memory limit. So this subclass can be empty.
|
|
//
|
|
// The extension finds the app group + reports state to the app via LiveKit's Darwin-notification/socket
|
|
// convention, keyed off this extension's bundle id (com.bizgaze.connect.broadcast) and the default app group
|
|
// group.<appBundleId>. Both are also set explicitly on the app side (RTCScreenSharingExtension /
|
|
// RTCAppGroupIdentifier in Info.plist) so there's no ambiguity.
|
|
final class SampleHandler: LKSampleHandler, @unchecked Sendable {}
|