iOS背景音频录制

13
我知道如果我在前台启动一个音频录制会话,并在“后台模式”中激活Audio、Airplay和Picture in Picture,我可以在后台继续录制,但只有在我在前台开始录制会话然后进入后台时才能这样做。
我的问题是我想从后台开始语音录制会话,这可能看起来有些不可靠,不符合Apple的要求,但用例是这样的:
我有一个带有按钮和iOS应用程序的蓝牙LE设备。这两个设备配对(蓝牙LE设备和运行iOS应用程序的iPhone),iOS应用程序正在监听蓝牙LE设备上的事件,例如按下按钮等事件。
现在,当用户按下蓝牙LE设备上的按钮时,iOS应用程序捕获该事件,即使应用程序在后台也能运行代码,但我无法开始语音录制。
我的问题是:这是否可能?从后台开始语音录制?即使我们在这里有用户交互,而不是在iOS应用程序上,而是在蓝牙LE上,因此不像语音录制在后台开始,用户没有意识到它,他按下了蓝牙LE设备上的按钮,他知道自己在做什么。
任何帮助,文档,苹果工程师的推文,都将不胜感激。谢谢。
更新:MFI不是必需的。https://mfi.apple.com/MFiWeb/getFAQ.action#1-2 如果您查看以下部分:
“哪些配件和技术不属于MFi计划?”
您会发现:
“仅使用蓝牙低功耗(BTLE)的配件(注:支持HomeKit的BTLE配件和支持BTLE的MFi助听器属于MFi计划)”
被提及,这意味着在这种情况下不需要 MFI。

你可以做到这一点(我曾为一个已经倒闭的初创公司做过,希望你的想法更好!)关键要素是:背景音频和蓝牙模式以及使用软件编解码器(非硬件)进行录制。 - Rhythmic Fistman
你知道AppStore上目前有没有这样的应用程序吗? - Mihai Erős
不,但我确定有一些。我想到的是语音识别软件。 - Rhythmic Fistman
@RhythmicFistman,你在一家初创公司的工作中是否涉及到当应用程序由于BLE配件操作或重大位置变化而在后台唤醒时开始记录的工作? - George
@MihaiErős,你有找到在应用程序后台运行时启动音频录制的方法吗?先谢谢了。 - Jay Bhalani
显示剩余4条评论
2个回答

6

来自苹果文档

一个在后台持续播放或录制音频的应用程序可以注册以执行这些任务。您可以从Xcode项目中的“Capabilities”选项卡中的“Background modes”部分启用音频支持。(您也可以通过在应用程序的Info.plist文件中包含UIBackgroundModes密钥和audio值来启用此支持。)在后台播放音频内容的应用程序必须播放可听的内容而不是静音。

背景音频应用程序的典型示例包括:

音乐播放器应用程序 音频录制应用程序 支持通过AirPlay进行音频或视频播放的应用程序 VoIP应用程序

对于需要更多执行时间来实现的任务,您必须请求特定权限以在后台运行它们而不被挂起。在iOS中,只允许特定类型的应用程序在后台运行:

  • 在后台录制音频内容的应用程序

编辑:

关于您的“蓝牙设备”:

请查看ExternalAccessory文档。

请注意,您需要申请并获得特殊开发者计划的批准,才能创建外部配件。


谢谢,这可能会有帮助。我想如果我的蓝牙设备通过了苹果的认证,或者类似的认证,我也许就能做我想做的事情了。你知道我该如何申请那个特殊的开发者计划吗? - Mihai Erős
@MihaiErős 我认为你没有正确理解我的意思。我是指运行一个自定义控制蓝牙设备,可以在后台触发录音。我不知道苹果会有什么反应。但是,你应该查看以下链接:https://dev59.com/wWIj5IYBdhLWcg3wv3i2 和 https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html 以使用蓝牙连接唤醒应用程序。 - user5890979
@MihaiErős 顺便说一下,你需要考虑到从后台自动唤醒应用并通过蓝牙通知事件运行任务与在后台录制音频是不同的。虽然你可以让应用程序启动并开始录制,然后将其推到后台,但这与iOS为您启动应用程序并使用系统资源在后台执行音频录制而无需用户“输入”,仅通过蓝牙通知来完成是不同的。我还没有尝试过这方面的限制或进一步的细节。祝好运。 - user5890979
这正是问题所在,当应用程序在后台时,我可以捕获BLE事件,并尝试启动语音录制,但什么也没有发生。我可以清楚地看到这是某种限制,但我正在寻找具体的原因或可能的解决方案。现在,我完全同意您的观点,即在没有用户输入/用户交互且仅从BLE通知/事件/响应中使用系统资源似乎违反了苹果的隐私政策,至少如此。 - Mihai Erős
1
文档链接现在重定向到其他地方了,你知道在哪里可以找到当前版本吗?(我特别找不到“在后台录制音频内容的应用程序”是否仍然是获取音频后台权限的有效原因) - Alexis R
显示剩余8条评论

1

有用的提示:

事实证明,如果您只是在信息中添加音频多任务标志,那么带有一些修改的Apple SpeakHere示例代码将在后台开始录制音频。您可以查看https://github.com/benvium/SpeakHere以获取SpeakHere的更新版本,因为Apple已经有一段时间没有更新它了。


2
不想做“那个人”,但是那段示例代码似乎已经超过6年了?:P 你测试过吗? - user5890979
2
我实际上尝试了SpeakHere,在进行了一些修改后,我能够在iOS 10上运行该项目。但是我无法在后台启动语音录制,如果我在前台开始录制,然后切换到后台,它可以工作,但这并没有什么帮助。 - Mihai Erős

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接