呼叫计时器在被叫方接受呼叫后立即开始计数(call timer ios app)

在 CallKit 文档https://developer.apple.com/documentation/callkit有一个文本:

在 CallKit 文档https://developer.apple.com/documentation/callkit有一个文本:

连接调用后,系统将调用提供程序委托的 provider (_:perform:) 方法。在您的实现中,委托负责配置 AudioSession 并在完成时对操作调用 fulfill ()。

和代码片段:

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
    // configure audio session
    action.fulfill()
}

关于fulfill ()方法:

只能从 CXProviderDelegate 方法的实现调用此方法。

所以,正如我所理解的,我们应该调用 action.fulfill()立即,在被调用者接受一个电话。

问题:当设备被锁定时,在本地 CallKit 屏幕的呼叫计时器开始计数,但是连接尚未建立。

问:当连接建立时,如何调用 action.fulfill()或在锁定的 CallKit 屏幕上启动计时器?

1

预计您在此委托回调中调用应答逻辑

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
    // configure audio session
    // Performing call answering logic
    // Call action to fulfill after answering logic is finished
    action.fulfill()
}

我使用 PJSIP 的 VoIP 通话,这是我的回答逻辑是这样的

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
    guard let call = CallList.sharedInstance().call(withUUID: action.callUUID.uuidString) else {
        action.fail()
        return
    }
    CallAudio.configureAudioSession()
    // Answer call (signal Pjsua)
    Pjsua2Wrapper.sharedInstance()?.answerCall(withCallUUID: call.callUUID, completion: { error in
        if error != nil {
            // we have error on answer call
            action.fail()
        } else {
            action.fulfill()
        }
    })
}

应答完成时调用应答调用的完成处理程序,因此计时器将在连接呼叫时启动。

EDIT

PJSIP 的声音问题

如果使用 PJSIP,则需要在初始化 PJSIP 时停止音频 I / O,就像这样(它是 C ++):

enableSoundDevice( false );

And when call is answered,CallKitwill respond with funcprovider(_:didActivate:).That is where you need to activate the PJSIP sound device in order to have the sound.

这是我的代码中的示例:

func provider(_ provider: CXProvider, didActivate audioSession: AudioSession) {
    // Start call audio I/O once CallKit activates AudioSession
    Pjsua2Wrapper.sharedInstance()?.enableSoundDevice(true)
}

而且,当然,当呼叫结束或设置为保持时,当CallKitprovider(_:didDeactivate:)响应时,您将再次禁用 PJSIP 声音设备,仅此而已

func provider(_ provider: CXProvider, didDeactivate audioSession: AudioSession) {
    // Stop call audio IO
    Pjsua2Wrapper.sharedInstance()?.enableSoundDevice(false)
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(225)
从Excel中的列A中删除所有重复项
上一篇
在 LateX中更改引文样式
下一篇

相关推荐

  • ios手机玩pc游戏的模拟器让你的手机玩起来!

    iOS手机玩PC游戏的模拟器是一种可以在iOS设备上运行PC游戏的软件。它使用模拟器技术,将PC游戏文件转换为iOS可识别的格式,然后在iOS设备上运行。…

    2023-01-05 01:44:37
    0 24 94
  • curiosity的读音探索无限可能性的力量

    示例示例的读音是/kjʊəˈrɪəsəti/,代码示例如下:…

    2023-01-16 10:40:55
    0 68 11
  • 节奏大师ios:AKFrequencyTracker与节奏

    关于节奏大师ios的问题,在tempo tracker中经常遇到,使用 AKFrequencyTracker 时,我喜欢添加“节奏”功能,以根据音符的节奏和惊奇来识别音符…

    2022-12-21 14:10:40
    0 86 13
  • 清除域代码:如何在iOS中清除特定域的Cookie

    关于清除域代码的问题,在ios clear cookies中经常遇到,我已经在 StackOverflow 上搜索了几乎所有问题以获取我的问题的答案。我还没有找到任何有用的链接或教程说哪种方式最好清除特定域的 cookie。所以请如果有人可以帮助我。…

    2022-12-11 15:54:40
    0 26 31
  • 解除程序占用:iOSVoiceOver崩溃(消息发送到已解除分配的实例 )

    关于解除程序占用的问题,在voiceover 解除中经常遇到,在启用 VoiceOver 的情况下运行我的应用程序时,我遇到了一个奇怪的崩溃。该应用程序有一个侧边栏界面(如 Facebook)。当点击侧边栏UITableView中的UITableViewCell之一时,我换掉了视图控制器(根据点击的单元格创建一个新的,并释放旧的)。…

    2022-12-26 13:37:57
    0 14 18
  • E pac:Fretecorreioserronopacenosedex

    关于E pac的问题,在calcular frete correios中经常遇到,Gostaria da ajuda de vocus nos seguintes erros,o primeiro é no pac,ele retornar o valor,at é ai tudo certo,por é mele tamb é mtraz:…

    2022-12-14 07:06:30
    0 39 27
  • Ios分发:iOS分发认证转移(apple application integration certification auth

    关于Ios分发的问题,在apple application integration certification authority中经常遇到,我的公司有一个苹果开发者 ID,我已经获得了一个分发认证来发布 Ad Hoc 版本的应用程序进行测试。但是,现在由于我的离开,他们需要我将公司开发者 ID 和认证转移到其他计算机上。我导出了分发认证的 p12 文件,并在其他 Mac 上破坏了它。在一台计算机上,一切都很顺利,而在另一台计算机上却无法正常工作。我尝试下载了 WRDCA…

    2022-12-29 01:13:11
    0 71 96
  • 最新ios:Xcode不显示最新版本的 iOS

    关于最新ios的问题,在ios update not showing中经常遇到,我目前正在尝试在我的物理 iOS 设备上运行我的原型应用程序。出现错误,说“找不到 Developer Disk”。我得出的结论是(通过查看堆栈溢出上的其他问题),部署目标与当前在我的设备上运行的软件不匹配。部署目标允许我选择 9.2 和更旧的软件,而我的设备当前正在运行 9.3 更新。我已经检查了 App Store 和 Xcode 不确定是什么。…

    2022-12-05 11:09:24
    0 80 38

发表评论

登录 后才能评论

评论列表(50条)