【发布时间】:2023-04-08 10:49:01
【问题描述】:
我在 iOS 上进行后台处理时遇到了一些问题。首先,让我做一个简单的解释:
我在一家工作管理公司工作,该公司可以接收和分发用于定位公用设施的票证。用户可以从我们的服务器下载票证,对其进行处理,并将他们的回复发送回我们的服务器。下载的票据进入本地 SQLite 数据库,用户做出的响应存储在 另一个 本地 SQLite 数据库中。我的同事用 C# 在 Xamarin 中编写了 Android 应用程序,他下载票证和上传响应的智能过程如下:
- 从我们的服务器下载票证到本地 SQLite 数据库,“票证”
- 检查本地“响应”SQLite 数据库,看看是否有响应
- 如果有响应,请将其发送到我们的服务器
- 等待 5 分钟
- 重复
这允许用户最初下载一批票并开始处理它们。如果在用户没有互联网的情况下运行此过程,则不会发生任何事情,并且计时器将重置。这个过程将允许用户在没有互联网的情况下对工单做出响应,并且只要他们有互联网就可以上传响应/下载新的工单。
我的问题是,在 iOS 上,后台设置比在 Android 上要严格得多。有后台获取,然后有推送通知。使用后台获取,系统“计算最佳机会”运行PerformFetch 方法,并且没有给我必要的严格的 5 分钟计时器。使用推送通知,如果用户没有互联网,他们将永远不会收到推送通知。
我真的很想能够像上面描述的那样简单地设置一个 5 分钟的计时器并运行该过程,检查是否有任何新票证,如果有任何票证,则发送任何新响应。但由于 iOS 后台的限制性,我不能这样做。
有什么建议吗?他们将不胜感激。
谢谢。
【问题讨论】:
标签: c# ios push-notification xamarin.ios background-process