在屏幕被锁定时接听来电时音频不工作 - 快速

问题描述 投票:0回答:1

我正在使用VOIP服务构建应用程序。现在我将我的应用程序与qazxsw poi集成以处理来电请求。

当应用程序保持在前台或后台时,它们在接听电话时工作正常。但问题是,当屏幕被锁定并且我试图接听电话但不幸的是,即使我解锁屏幕,我也听不到双方的声音。

如何解决这个问题?

这是来电报告的方式:

CallKit

这就是我设置音频的方式

func reportIncomingCall(uuid: UUID, handle: String, hasVideo: Bool = false, completion: ((NSError?) -> Void)?) {
    // 1.
    print("This is UUID === ", uuid)
    configureAudioSession()
    let update = CXCallUpdate()
    update.remoteHandle = CXHandle(type: .phoneNumber, value: handle)
    update.hasVideo = hasVideo


    provider.reportNewIncomingCall(with: uuid, update: update) { error in


        if error == nil {
            // 3.
            self.configureAudioSession()
            let call = CallKitCallInit(uuid: uuid, handle: handle)
            self.callKitManager.add(call: call)
            lastCallUUID = uuid
            print("UUID === ", uuid)
        } else {

        }

        // 4.
        completion?(error as NSError?)
    }


}

当我在屏幕锁定时接听电话时,我可以看到它在func configureAudioSession() { let session = AVAudioSession.sharedInstance() do{ try session.setCategory(AVAudioSessionCategoryPlayAndRecord) } catch { print("========== Error in setting category \(error.localizedDescription)") } do { try session.setMode(AVAudioSessionModeVoiceChat) } catch { print("========= Error in setting mode \(error.localizedDescription)") } do { try session.setPreferredSampleRate(44100.0) } catch { print("======== Error setting rate \(error.localizedDescription)") } do { try session.setPreferredIOBufferDuration(0.005) } catch { print("======== Error IOBufferDuration \(error.localizedDescription)") } do { try session.setActive(true) } catch { print("========== Error starting session \(error.localizedDescription)") } } 功能中丢失的错误。

为什么屏幕锁定时无法设置音频?

ios swift avaudiosession linphone callkit
1个回答
0
投票

我做了添加这些代码行

configureAudioSession()

这是func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { // 1. guard let call = callKitManager.callWithUUID(uuid: action.callUUID) else { action.fail() return } // 2. configureAudioSession() // 3. call.answer() // 4. action.fulfill() }

configureAudioSession

-1
投票

在配置音频会话时,您可以尝试使用AVAudioSessionModeVoiceChat而不是AVAudioSessionModeMoviePlayback模式。

© www.soinside.com 2019 - 2024. All rights reserved.