【问题标题】:Socket in background state iOS套接字在后台状态 iOS
【发布时间】:2018-11-29 08:59:10
【问题描述】:

也许有人在应用程序处于后台时解决了与服务器的稳定连接问题?我需要将音频数据从服务器传输到客户端应用程序。 我知道 iOS 的所有黑客如何让应用程序保持活动状态,但我需要合法的方法来解决这个问题。也许你有什么想法? 我发现我可以将 VoIP 推送发送到将唤醒我的应用程序然后建立 tcp 连接到我的服务器的设备,但是这个套接字将保持活动大约 30 秒(正如我在日志中看到的那样,每 3 秒在发送的 iOS 应用程序中触发计时器数据到服务器)这对我来说还不够。

【问题讨论】:

  • 你检查 UIBackgroundModes 了吗?
  • 当您的应用程序在后台时,您无法保持原始套接字处于活动状态。当发生特定事件时,您可以使用 PushKit 推送来唤醒您的应用程序。您可以使用后台 URL 会话在后台上传/下载文件developer.apple.com/documentation/foundation/url_loading_system/…

标签: ios sockets voip background-mode


【解决方案1】:

也许这个项目https://github.com/SmallSharpToolsOpenSource/Speakerbox 会对某人有所帮助。 还有这个视频https://www.youtube.com/watch?v=lXJ1LDjL4Os

以及来自 Apple 技术支持的官方回答:

PushKit 是 voip 应用程序的功能 可靠的接收无声通知,而 CallKit 基本上是一个 UI 框架 voip 应用程序可用于通知用户有关呼叫的信息。请注意,那里 不是 API 中的任何直接连接 - 例如,voip 应用程序可以 生成本地通知(而不是使用 CallKit)或什么都不做 并完全“忽略”通知。同样,一个 voip 应用程序可以“伪造”一个 只需告诉 CallKit 有来电(我们的 CallKit 的示例代码正是这样做的)。

您的应用以前可以做的任何事情 它收到了 voip 套接字流量,它也可以在收到 PushKit 时这样做 通知。

标准 voip 应用程序 实际上以两种完全不相关的“模式”运行:

1) 在等待来电时,应用程序会暂停,直到“某事” (PushKit 或 voip 套接字)唤醒应用程序以告知其通话情况。

2) 通话开始后,应用程序将有一个活动的音频会话,并且依赖 iOS 的标准“背景音频”行为,就像各种各样的 其他音频应用程序(例如,任何流媒体音乐应用程序)。

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多