gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:46:30 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com