目前我正在开发一款应用程序,它需要能够根据来自所有平台的实时事件通知接收和交互。我们正在使用SignalR来实现。我使用Xamarin.Forms,因为这是一个共享项目。Xamarin iOS - SignalR停止在后台模式下接收消息
现在一切工作正常,特别是android是完美的。无论应用程序在后台还是前台,都可以从SignalR接收消息并播放声音并按预期振动。在iOS 10.3模拟器也按预期工作。直到昨天,当我在实际设备中意识到应用程序进入后台模式时,它会暂停所有事情,当它返回前台时,它会恢复原来的状态,好像通知刚刚发送一样。所以我做了一些研究,并且认为我会在后台线程中执行一个长时间运行的任务(在我的情况下是一个10秒间隔的永久循环),并且这样我就能够接收到signalr消息(我可以在调试器上看到)并在背景中播放振动。但经过一段时间后,我猜测在10分钟内iOS正在清理它的内存,当我打开应用程序时,它似乎重新加载,因为它显示登录屏幕而不是我离开应用程序的位置。
现在的问题是: 1.我在后台如何继续接收SignalR事件? 2.我如何停止iOS重新加载我的应用程序,因为长时间处于后台? 3.该应用程序必须是可发布的Appstore,因为在appstore中不能拒绝它,因为在背景中执行某些可怕的作品,如永远播放静音音频或使用VoIP作为背景,因为这不是VoIP应用程序。 4.我很快就要在后台模式下实现位置更新,所以这是否会让整个应用程序保持在后台?并像我期待的那样行事?
由于我目前旅行我不能提供任何代码片段,但任何问题,请随时问。
感谢您的帮助和阅读这个无聊的文章。
https://developer.apple.com/documentation/uikit/core_app/managing_your_app_s_life_cycle/preparing_your_app_to_run_in_the_background/updating_your_app_with_background_app_refresh –