client-sdk-swift icon indicating copy to clipboard operation
client-sdk-swift copied to clipboard

Can't mixWithOthers and duckOthers

Open buttjer opened this issue 1 year ago • 1 comments

Describe the bug I need a solution that

  1. Allows me to hear music in high quality through bluetooth (a2dp) and comms whenever I am muted in a call
  2. Switches to hfp and continue music if I unmute and back to a2dp if I mute again
  3. Allows me to trigger un/mute with a BLE Device and by a timer, even in the background

Configuration

    private func setMute(_ value: Bool) {
        guard let localParticipant = room.localParticipant else {
            log.error("LocalParticipant doesn't exist")
            return
        }

        guard !microphoneTrackState.isBusy else {
            log.warning("microphoneTrack is .busy")
            return
        }

        DispatchQueue.main.async {
            self.microphoneTrackState = .busy(isPublishing: !self.microphoneTrackState.isPublished)
        }

        localParticipant.setMicrophone(enabled: value).then { publication in
            guard let publication = publication else { return }

            DispatchQueue.main.async {
                self.microphoneTrackState = .published(publication)
                if publication.muted {
                    _ = localParticipant.unpublish(publication: publication)
                }

                self.log.verbose("Microphone is now \(publication.muted ? "Muted" : "NOT Muted")")
            }
        }.catch { error in
            DispatchQueue.main.async {
                self.microphoneTrackState = .notPublished(error: error)
            }
            self.log.verbose("Failed to publish microphone, error: \(error)")
        }
    }

and this is my customConfigureAudioSessionFunc.

        do {
            try audioSession.setCategory(.playback, mode: .default, options: [
                .allowBluetoothA2DP,
                .mixWithOthers,
                .duckOthers
            ])
        } catch {
        }

        AudioManager.shared.customConfigureAudioSessionFunc = { newState, oldState in
            // Gets called when a new track gets published
            // Happens when a Local or Remote Participant first joines the call and unmutes
            DispatchQueue.main.async {
                let configuration = RTCAudioSessionConfiguration.webRTC()

                if [.localOnly, .localAndRemote].contains(newState.trackState) && ![.localOnly, .localAndRemote].contains(oldState.trackState) {
                    configuration.categoryOptions = [
                        .allowBluetooth,
                        .mixWithOthers,
                        .duckOthers
                    ]
                    configuration.category = AVAudioSession.Category.playAndRecord.rawValue
                    configuration.mode = AVAudioSession.Mode.videoChat.rawValue
                } else {
                    configuration.category = AVAudioSession.Category.playback.rawValue
                    configuration.mode = AVAudioSession.Mode.default.rawValue
                }
            }
        }

SDK Version LiveKit 1.0.13 WebRTC 104.5112.17

iOS/macOS Version 16.5.1

Steps to Reproduce

  1. Install the package AleckCommunication.zip
  2. optional: connect bluetooth audio device
  3. start music with apple music or spotify
  4. join an room with one other attendee
  5. While muted execute room.toggleMute() after the App switches to background phase.
@main
struct MyApp: App {
    @Injected(\.roomManager) private var room
    @Environment(\.scenePhase) private var scenePhase

    var body: some Scene {
        WindowGroup {
            ContentView()
                .onChange(of: scenePhase) { newScenePhase in
                   if (newScenePhase == .background) {
                        room.toggleMute()
                    }
                }
        }
    }
}

Expected behavior

if Mute

  • unpublish track
  • unduck music (if no one else is publishing)
  • If Bluetooth: A2DP

if Unmute

  • publish track
  • duck music
  • If Bluetooth: HFP

if Someone else published a track

  • duck music
  • If Bluetooth: A2DP

if Someone else unpublished a track

  • unduck music
  • If Bluetooth: A2DP

Logs

Always

If someone else published a track (foreground or background)

2023-08-03 12:41:50.823120+0200 🐛 Aleck[1285:140689] [as] ATAudioSessionPropertyManager.mm:363   FAILED to set property 1684431725 on AVAudioSession with error Error Domain=NSOSStatusErrorDomain Code=-50 "(null)"

without bluetooth device connected

If I switch to foreground while in a call without anyone publishing a track

2023-08-03 12:30:49.322463+0200 🐛 Aleck[1233:126297] [connection] nw_read_request_report [C7] Receive failed with error "Software caused connection abort"
2023-08-03 12:30:49.326463+0200 🐛 Aleck[1233:126339] [websocket] Read completed with an error Software caused connection abort
2023-08-03 12:30:49.326502+0200 🐛 Aleck[1233:126297] Connection 7: received failure notification
2023-08-03 12:30:49.328272+0200 🐛 Aleck[1233:126339] Task <C9C7F623-BB27-481C-B566-193BCC9701B1>.<1> finished with error [53] Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalWebSocketTask <C9C7F623-BB27-481C-B566-193BCC9701B1>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <C9C7F623-BB27-481C-B566-193BCC9701B1>.<1>}
2023-08-03T12:30:49+0200 error LiveKitSDK : [] WebSocket.receive(task:result:) Failed to receive Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
2023-08-03 12:30:49.331958+0200 🐛 Aleck[1233:126297] [connection] nw_flow_add_write_request [C7 104.248.102.96:443 failed parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, ipv6, dns)] cannot accept write requests
2023-08-03 12:30:49.332047+0200 🐛 Aleck[1233:126297] [connection] nw_write_request_report [C7] Send failed with error "Socket is not connected"
🕸 #1 🔬 [RoomManager room]: didUpdate: reconnecting

If I unmute in the background

2023-08-03T12:35:48+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] LocalAudioTrack(sid: nil, name: microphone, source: Source(rawValue: 2)) options: nil...
2023-08-03T12:35:48+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] success LocalTrackPublication(sid: TR_AMabb2NDwJLCbV, kind: Kind(rawValue: 0), source: Source(rawValue: 2))
🕸 #1 🔬 [RoomManager setMute]: Microphone is now NOT Muted

Music does not duck and others can't hear me. After switching to foreground

2023-08-03 12:36:23.733491+0200 🐛 Aleck[1243:133773] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:36:23.742023+0200 🐛 Aleck[1243:133773] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:36:23.742459+0200 🐛 Aleck[1243:133773] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
🕸 #1 🔬 [RoomManager room]: didUpdate: reconnecting
App is inactive
2023-08-03 12:36:23.748292+0200 🐛 Aleck[1243:133773] [connection] nw_read_request_report [C3] Receive failed with error "Software caused connection abort"
2023-08-03 12:36:23.753138+0200 🐛 Aleck[1243:133773] [quic] quic_conn_send_frames_for_key_state_block_invoke [C1.1.1.1:2] [-0104995dab46f25913054e5d8e46f8a0c61d9110] unable to request outbound data
2023-08-03 12:36:23.757072+0200 🐛 Aleck[1243:133773] Connection 3: received failure notification
2023-08-03 12:36:23.757143+0200 🐛 Aleck[1243:133773] [connection] nw_flow_add_write_request [C3 104.248.102.96:443 failed parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, ipv6, dns)] cannot accept write requests
2023-08-03 12:36:23.757180+0200 🐛 Aleck[1243:133773] [connection] nw_write_request_report [C3] Send failed with error "Socket is not connected"
2023-08-03 12:36:23.758074+0200 🐛 Aleck[1243:134387] [websocket] Read completed with an error Software caused connection abort
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected

2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:23+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03 12:36:24.000917+0200 🐛 Aleck[1243:134382] Task <98679DC3-C4DF-4B95-8254-F4790A1E3326>.<1> finished with error [57] Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalWebSocketTask <98679DC3-C4DF-4B95-8254-F4790A1E3326>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <98679DC3-C4DF-4B95-8254-F4790A1E3326>.<1>}
2023-08-03T12:36:24+0200 error LiveKitSDK : [] WebSocket.receive(task:result:) Failed to receive Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1}
2023-08-03 12:36:24.031387+0200 🐛 Aleck[1243:133774] [tcp] tcp_input [C4.1.1:3] flags=[R] seq=3599832312, ack=0, win=0 state=LAST_ACK rcv_nxt=3599832312, snd_una=4079622026
2023-08-03 12:36:24.031650+0200 🐛 Aleck[1243:133774] [tcp] tcp_input [C4.1.1:3] flags=[R] seq=3599832312, ack=0, win=0 state=CLOSED rcv_nxt=3599832312, snd_una=4079622026
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:36:24+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
App is active
2023-08-03T12:36:37+0200 info LiveKitSDK : [] Room.signalClient(_:didReceive:) server version: 1.4.4, region: Germany
🕸 #1 🔬 [RoomManager room]: didUpdate: connected

with bluetooth device connected

If I unmute in the background

2023-08-03T12:45:40+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] LocalAudioTrack(sid: nil, name: microphone, source: Source(rawValue: 2)) options: nil...
2023-08-03T12:45:41+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] success LocalTrackPublication(sid: TR_AMfdRmoriNXvPQ, kind: Kind(rawValue: 0), source: Source(rawValue: 2))
🕸 #1 🔬 [RoomManager setMute]: Microphone is now NOT Muted
2023-08-03 12:45:43.164413+0200 🐛 Aleck[1292:143833] [aurioc]            AURemoteIO.cpp:1691  AUIOClient_StartIO failed (561145187)

After switching to foreground

2023-08-03 12:46:06.889251+0200 🐛 Aleck[1292:143935] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:46:06.889675+0200 🐛 Aleck[1292:143935] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:46:06.890169+0200 🐛 Aleck[1292:143935] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:46:06.891194+0200 🐛 Aleck[1292:143935] [connection] nw_read_request_report [C3] Receive failed with error "Software caused connection abort"
2023-08-03 12:46:06.893228+0200 🐛 Aleck[1292:143935] [quic] quic_conn_send_frames_for_key_state_block_invoke [C1.1.1.1:2] [-01195d7a513578eee41b3c7a5f3569df735e040f] unable to request outbound data
2023-08-03 12:46:06.893947+0200 🐛 Aleck[1292:144281] [websocket] Read completed with an error Software caused connection abort
2023-08-03 12:46:06.894369+0200 🐛 Aleck[1292:144281] Task <0BDBA4F3-F546-458F-8F22-CD738CEC619F>.<1> finished with error [53] Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalWebSocketTask <0BDBA4F3-F546-458F-8F22-CD738CEC619F>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <0BDBA4F3-F546-458F-8F22-CD738CEC619F>.<1>}
2023-08-03 12:46:06.896690+0200 🐛 Aleck[1292:143935] [connection] nw_flow_add_write_request [C3 104.248.102.96:443 failed parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, ipv6, dns)] cannot accept write requests
2023-08-03 12:46:06.896726+0200 🐛 Aleck[1292:143935] [connection] nw_write_request_report [C3] Send failed with error "Socket is not connected"
App is inactive
2023-08-03T12:46:06+0200 error LiveKitSDK : [] WebSocket.receive(task:result:) Failed to receive Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
🕸 #1 🔬 [RoomManager room]: didUpdate: reconnecting
App is active
2023-08-03 12:46:07.765242+0200 🐛 Aleck[1292:144291] Task <FE50B781-6229-4B4E-8AFC-66B8C579F944>.<1> finished with error [57] Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalWebSocketTask <FE50B781-6229-4B4E-8AFC-66B8C579F944>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <FE50B781-6229-4B4E-8AFC-66B8C579F944>.<1>}
2023-08-03T12:46:07+0200 error LiveKitSDK : [] WebSocket.receive(task:result:) Failed to receive Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://aleck-staging-667ifvpv.livekit.cloud/rtc?access_token=***&protocol=9&sdk=swift&version=1.0.13&os=iOS&os_version=16.5.1&device_model=iPhone15,2&network=wifi&reconnect=1&auto_subscribe=1&adaptive_stream=1}
2023-08-03T12:46:08+0200 warning LiveKitSDK : [] SignalClient.onSignalResponse(_:) Not connected
2023-08-03T12:46:08+0200 warning LiveKitSDK : [] SignalClient.onSignalResponse(_:) Not connected
2023-08-03T12:46:08+0200 warning LiveKitSDK : [] SignalClient.onSignalResponse(_:) Not connected
2023-08-03T12:46:08+0200 warning LiveKitSDK : [] SignalClient.onSignalResponse(_:) Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.signalClient(_:didReceiveOffer:) failed to send answer, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03 12:46:08.538392+0200 🐛 Aleck[1292:143935] dnssd_clientstub write_all(44) DEFUNCT
2023-08-03 12:46:08.538411+0200 🐛 Aleck[1292:143935] dnssd_clientstub deliver_request ERROR: write_all(44, 90 bytes) failed
2023-08-03 12:46:08.538432+0200 🐛 Aleck[1292:143935] dnssd_clientstub write_all(44) DEFUNCT
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] SignalClient.sendRequest(_:enqueueIfReconnecting:) not connected
2023-08-03T12:46:08+0200 error LiveKitSDK : [] Engine.transport(_:didGenerate:) Failed to send candidate, error: SignalClientError.state Not connected

if I than unmute myself in the foreground

2023-08-03T12:48:19+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] LocalAudioTrack(sid: nil, name: microphone, source: Source(rawValue: 2)) options: nil...
2023-08-03T12:48:19+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] success LocalTrackPublication(sid: TR_AM4c89Z4JyppTi, kind: Kind(rawValue: 0), source: Source(rawValue: 2))
🕸 #1 🔬 [RoomManager setMute]: Microphone is now NOT Muted
2023-08-03 12:48:19.553011+0200 🐛 Aleck[1292:143833] [as_client]     AVAudioSession_iOS.mm:2367  Failed to set category, error: -50
2023-08-03 12:48:19.555332+0200 🐛 Aleck[1292:143833] [as_client]     AVAudioSession_iOS.mm:2367  Failed to set category, error: -50
2023-08-03 12:48:19.562753+0200 🐛 Aleck[1292:143833] [as_client]     AVAudioSession_iOS.mm:2367  Failed to set category, error: -50
2023-08-03 12:48:19.564054+0200 🐛 Aleck[1292:143833] [as_client]     AVAudioSession_iOS.mm:2367  Failed to set category, error: -50

If I mute and than unmute in the background

App is in background
🕸 #1 🔬 [RoomManager setMute]: Microphone is now Muted
2023-08-03T12:49:44+0200 info LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] LocalAudioTrack(sid: nil, name: microphone, source: Source(rawValue: 2)) options: nil...
2023-08-03 12:49:44.606823+0200 🐛 Aleck[1298:148233] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:49:44.608776+0200 🐛 Aleck[1298:148233] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:49:44.609527+0200 🐛 Aleck[1298:148233] [connection] nw_read_request_report [C1] Receive failed with error "Socket is not connected"
2023-08-03 12:49:44.611785+0200 🐛 Aleck[1298:148233] [connection] nw_read_request_report [C3] Receive failed with error "Software caused connection abort"
2023-08-03 12:49:44.616545+0200 🐛 Aleck[1298:148233] [quic] quic_conn_send_frames_for_key_state_block_invoke [C1.1.1.1:2] [-0158170113356007035aaf014c355d5789bf9ccb] unable to request outbound data
2023-08-03 12:49:44.617768+0200 🐛 Aleck[1298:148239] [websocket] Read completed with an error Software caused connection abort
2023-08-03 12:49:44.619217+0200 🐛 Aleck[1298:148239] Task <9D881CEC-BB24-4706-BC64-B81D43055297>.<1> finished with error [53] Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalWebSocketTask <9D881CEC-BB24-4706-BC64-B81D43055297>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <9D881CEC-BB24-4706-BC64-B81D43055297>.<1>}
2023-08-03 12:49:44.620085+0200 🐛 Aleck[1298:148233] Connection 3: received failure notification
2023-08-03 12:49:44.620409+0200 🐛 Aleck[1298:148233] [connection] nw_flow_add_write_request [C3 104.248.102.96:443 failed parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, ipv6, dns)] cannot accept write requests
2023-08-03 12:49:44.620544+0200 🐛 Aleck[1298:148233] [connection] nw_write_request_report [C3] Send failed with error "Socket is not connected"
2023-08-03T12:49:44+0200 error LiveKitSDK : [] WebSocket.receive(task:result:) Failed to receive Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
2023-08-03T12:49:44+0200 error LiveKitSDK : [] LocalParticipant.publish(track:publishOptions:) [publish] failed LocalAudioTrack(sid: nil, name: microphone, source: Source(rawValue: 2)), error: InternalError.state resetting pending promise
🕸 #1 🔬 [RoomManager setMute]: Failed to publish microphone, error: InternalError.state resetting pending promise
🕸 #1 🔬 [RoomManager room]: didUpdate: reconnecting
🕸 #1 🔬 [RoomManager room]: didUpdate: connected
2023-08-03 12:49:45.505258+0200 🐛 Aleck[1298:148234] dnssd_clientstub write_all(44) DEFUNCT
2023-08-03 12:49:45.505394+0200 🐛 Aleck[1298:148234] dnssd_clientstub deliver_request ERROR: write_all(44, 90 bytes) failed
2023-08-03 12:49:45.505731+0200 🐛 Aleck[1298:148234] dnssd_clientstub write_all(44) DEFUNCT

buttjer avatar Aug 03 '23 10:08 buttjer

Hi, can you try v1.1.3 ? I've made some changes.

hiroshihorie avatar Oct 26 '23 08:10 hiroshihorie