livekit / client-sdk-swift

LiveKit Swift Client SDK. Easily build live audio or video experiences on iOS, macOS, tvOS, and visionOS.
https://livekit.io
Apache License 2.0
212 stars 100 forks source link

Dismissing RPSystemBroadcastPickerView without selecting Broadcast Extension leaves isScreenShareEnabled() true #444

Open mokuzuu opened 3 months ago

mokuzuu commented 3 months ago

Describe the bug Dismissing RPSystemBroadcastPickerView without selecting Broadcast Extension leaves isScreenShareEnabled() true

SDK Version 2.0.12

iOS/macOS Version iOS 17.5.1

Xcode Version 15.4 Swift 5

Steps to Reproduce

  1. Setup broadcast extention
  2. Call room.localParticipant.setScreenShare(true), now room.localParticipant.isScreenShareEnabled() returns true
  3. It shows RPSystemBroadcastPickerView, and press anywhere except Picker to dismiss it
  4. I expect room.localParticipant.isScreenShareEnabled() returns false but it returns true

Expected behavior Dismissing RPSystemBroadcastPickerView should update isScreenShareEnabled() returns false.

Screenshots If applicable, add screenshots to help explain your problem.

Logs Please provide logs if you can.

mokuzuu commented 3 months ago

@hiroshihorie

As RPSystemBroadcastPickerView doesn't seem accepting delegate, we cannot use RPBroadcastActivityControllerDelegate. What would be the best solution for this? I'm happy to take this but would need some guidance.

jestha166 commented 2 months ago

@hiroshihorie , been facing the same issue. isScreenShareEnabled() is returned true even if we click on start broadcast of the screenshare prompt. Tried all workarounds but none seem to work.

jestha166 commented 2 months ago

@mokuzuu , were you able to fix this issue using Darwin notification center?. Because if I make the useBroadcastExtension to be false, it shows me a prompt asking Do you want to record the screen when I set the room.localParticipant.setScreenShare(enabled: isEnabled). Please guide me to fix this issue.

mokuzuu commented 2 months ago

@jestha166 Unfortunately I couldn't workaround this one as it doesn't emit darwin notification when dismissing picker.

I think this needs library change. Especially when calling setScreenShare, it shouldn't create local video track.

hiroshihorie commented 2 months ago

Hi, i'm looking into re-designing the internals. This is on my list since it looks like it's frequently requested.