c# - 使用 Xamarin.iOS (C#) : Which method should I use? 在 iOS 中设置后台

标签 c# ios push-notification xamarin.ios background-process

我在 iOS 后台运行时遇到了一些问题。首先,让我做一个简短的解释:

我在一家工作管理公司工作,该公司可以接收和分发用于定位公用事业的票证。用户可以从我们的服务器下载票证,对其进行处理,然后将他们的响应发送回我们的服务器。下载的票证进入本地 SQLite 数据库,用户做出的响应存储在另一个本地 SQLite 数据库中。我的同事用C#在Xamarin中编写了Android应用程序,他的智能下载票和上传响应的过程如下:

  1. 从我们的服务器下载门票到本地 SQLite 数据库,“门票”
  2. 检查本地“responses”SQLite 数据库,看是否有响应
  3. 如果有响应,将它们发送到我们的服务器
  4. 等5分钟
  5. 重复

这允许用户最初下载一批票并开始处理它们。如果这个过程在用户没有互联网的情况下运行,什么也不会发生,计时器会重置。此过程将允许用户在没有互联网的情况下对工单做出响应,并在有互联网时上传响应/下载新工单。

我的问题是,在 iOS 上,后台设置比在 Android 上限制更多。有后台获取,然后有推送通知。使用后台提取,系统“计算最佳机会”运行 PerformFetch 方法,并且不会给我必要的严格的 5 分钟计时器。对于推送通知,如果用户没有互联网,那么他们将永远不会收到推送通知。

我真的很想能够像上面描述的那样简单地设置一个 5 分钟的计时器并运行该过程,检查是否有任何新的工单并发送任何新的响应(如果有)。但由于 iOS 中背景的限制性,我不能这样做。

有什么建议吗?他们将不胜感激。

谢谢。

最佳答案

iOS App 确实不能像 Android 那样创建后台服务。但是在阅读了您的要求之后,您似乎并不真正需要所有任务的后台服务 - 只有当用户离线更新数据并关闭应用程序时才需要它 - 当互联网连接再次可用时永远不会再打开。但这是对 iOS 的限制,你无论如何都无法在 iOS 中实现这一点。

对于其他任务,您可以在应用处于事件状态时从服务器异步获取数据。

您可以简单地创建 5 分钟的计时器 - 只有当您的应用处于事件状态时它才会运行。那时,您可以执行代码以获取新票证并以异步模式向服务器发送响应。 Check here for more detail about how to do this in Xamarin .

这个过程是异步的,不会干扰常规的 UI 事件。只要有互联网连接,用户就可以在计时器上检查数据库中的新工单、更新数据库中的响应等。

关于c# - 使用 Xamarin.iOS (C#) : Which method should I use? 在 iOS 中设置后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547736/

相关文章:

ios - CCSequence 内部的 CCAnimate 不会创建 CCFiniteTimeAction 错误

ios - 如何在SimCity 5中实现建筑物移动时摇摆的物理效果?

android - 组 fcm 通知像 whatsapp 但允许多个组通知

c# - 根据数据 View 值在 WPF 中启用按钮

c# - 一个属性的显示名称(标签)能否根据另一个属性的值而改变?

c# - 即使创建了新连接,连接也失去了联系

iphone - 在 Label 或 TextView 上开始一个新行(段落)

android - 使用 Parse.com 和 Android 两次自定义推送通知

ios - 如何在 ios 中重新注册推送通知

c# - 将多维集合转换为带分隔符的字符串