7vi*_*am7 9 iphone voip plist ios swift
我需要我的VoIP应用程序在重启设备后自动启动.
Apple文档明确提到: -
(=========编辑:这是来自官方Apple文档请在评论或回答之前看看这个,没有用户交互或静默推送通知无法启动应用程序.另外看看下面的Github项目,人们已经验证了这种行为)
UIBackgroundModes数组的值
价值:voip说明:该应用程序提供IP语音服务. 具有此密钥的应用程序会在系统启动后自动启动,以便应用程序可以重新建立VoIP服务.使用此密钥的应用也可以播放背景音频.
我确保: -
plist和Capabilities部分中.main方法和application:didFinishLaunchingWithOptions:方法中将日志添加到文件,确保设备重启后肯定没有启动应用程序.我甚至尝试用36颗星执行这个GitHub示例App来测试Boot Launch.https://github.com/lithium3141/BootLaunch
但是,当我尝试使用设备时,即使这个应用程序也不会在重新启动时重新启动.
因此,这让我想到最近在iOS10中是否有某些变化,或者我在这里仍然遗漏了什么?
好吧,我对此进行了进一步调查,但首先我应该指出我没有通过实际尝试为此构建项目来验证这一点,因为现在对我来说太耗费时间了.
我发现这个(在评论中已经提到),这个,最重要的这一高科技Q&A.
我收集的内容尤其是Apple技术人员在这些主题中的各种评论,似乎iOS 10的行为确实发生了变化.这意味着,如果您将构建与最新的SDK(即iOS 10库)链接,那么在过去的iOS版本中连接到VoiP服务器的相同代码将不再这样做.
现在,在您的情况下,您实际上并不需要真正的VoiP连接,对吗?您只对"重启后启动"功能感兴趣,对吗?至少您链接的演示项目实际上并没有进行任何VoiP连接,setKeepAliveTimeout:handler:例如,该方法甚至没有实现.我知道这个具体问题没有在链接线程中讨论或在问答中解决,但是:
有意义的是,与整个传统的VoiP行为一起,重启功能也会消失.如果您切换到Push-Kit VoiP,您的应用程序将不需要在重新启动后启动,它会在下一个远程通知到达时重新启动(并且VoiP通知具有高优先级,因此可能没有延迟).
显然我在这里推断出这一切背后的基本原理,并不能保证Apple真的按照这些思路,但这是有道理的:重启后(重新)启动的(传统)VoiP应用程序的全部原因是它需要建立连接,即需要运行一些代码.使用不再需要的推送通知(操作系统基本上会在幕后为您提供这些通知),因此有意义的是他们完全删除了此功能以及整个传统的VoiP方法.
您可以通过针对较旧的SDK进行编译来测试这一点(即使用Xcode 7作为Q&A建议)并查看它是否重新启动.那个苹果工作人员实际上解释说操作系统确实在应用程序的构建SDK上有所区别,这对我来说完全违反直觉.显然在这种情况下,它会决定"嘿,这是一个较旧的应用程序,所以它希望重新启动,因为它的SDK被记录的方式"对于在Xcode 7上构建的应用程序和"哦,这个应用程序是一个新的,所以我不否则,我们需要坚持旧的方式.Wowsies.
TL; DR:对我来说,它看起来很好,iOS SDK改变了这种行为,同时放弃了整个旧的,无通知的VoiP方法.针对新SDK进行编译将导致应用程序在重新启动后无法重新启动.
为了记录:我能理解那些线索中愤怒的人.虽然可能存在技术原因导致这种变化,但这一具体后果并不明显.如果某个方法已弃用,但项目仍然编译并运行,我不希望这样的进程以这种方式失败.这些应用程序不会崩溃,它们只是"被操作系统区别对待",这不完全相同.至少我希望新文档中的文档更清楚.
| 归档时间: |
|
| 查看次数: |
1759 次 |
| 最近记录: |