Xamarin iOS - SignalR停止以后台模式接收消息

时间:2017-09-08 07:26:29

标签: c# ios xamarin signalr background-task

目前我正在开发一个应用程序,它需要能够根据来自所有平台的实时事件通知进行接收和交互。我们正在使用SignalR来实现这一目标。我正在使用Xamarin.Forms,因为这是一个共享项目。

现在一切都很好,特别是android是完美的。无论应用程序是在后台还是前台,它都会从SignalR接收消息并播放声音并按预期振动。在iOS 10.3模拟器中它也按预期工作。直到昨天,当我在真实设备中实现应用程序进入后台模式时,它会暂停所有内容,当它回到前台时,它会恢复正常状态,就像刚刚发送通知一样。所以我做了一些研究,并认为我会在后台线程中执行一个长时间运行的任务(在我的情况下是一个永久循环,间隔为10秒),这样我就能够接收信号器消息(我可以在调试器上看到)在背景中振动正在播放。但经过一段时间后我猜测在10分钟内iOS正在清理其内存,当我打开应用程序时,它似乎重新加载,因为它显示登录屏幕而不是我离开应用程序的位置。

现在的问题是: 1.如何在后台接收SignalR事件? 2.如何停止iOS重新加载我的应用程序,因为它在后台很长一段时间? 3.该应用程序必须是Appstore可发布的,因为在appstore中不得拒绝它,因为在后台完成一些狡猾的工作,如永久播放静音音频或使用VoIP作为后台,因为这不是VoIP应用程序。 4.我很快就会在后台模式下实现位置更新,这样会让整个应用程序在后台运行吗?表现得像我期待的那样?

由于我目前正在旅行,我无法提供任何代码段,但有任何问题请随时询问。

感谢您的帮助并阅读这篇无聊的文章。

1 个答案:

答案 0 :(得分:0)

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

如何实施位置更新? Location DependencyService example for Xamarin.Forms 希望这会有所帮助。