2017-09-08 67 views
0

目前我正在开发一款应用程序,它需要能够根据来自所有平台的实时事件通知接收和交互。我们正在使用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.我很快就要在后台模式下实现位置更新,所以这是否会让整个应用程序保持在后台?并像我期待的那样行事?

由于我目前旅行我不能提供任何代码片段,但任何问题,请随时问。

感谢您的帮助和阅读这个无聊的文章。

+0

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 –

回答

0

以防万一某人遇到类似问题。 苹果不允许执行您的应用程序,除非它属于某个类别Look at table 3-1。幸运的是,我有一个合理的理由在前台和后台使用连续位置更新,因此,只要我实施位置更新事件,我的所有问题都立即得到解决。

如何实现位置更新? Location DependencyService example for Xamarin.Forms 希望能帮到你。

相关问题