- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 iOS 后台运行时遇到了一些问题。首先,让我做一个简短的解释:
我在一家工作管理公司工作,该公司可以接收和分发用于定位公用事业的票证。用户可以从我们的服务器下载票证,对其进行处理,然后将他们的响应发送回我们的服务器。下载的票证进入本地 SQLite 数据库,用户做出的响应存储在另一个本地 SQLite 数据库中。我的同事用C#在Xamarin中编写了Android应用程序,他的智能下载票和上传响应的过程如下:
这允许用户最初下载一批票并开始处理它们。如果这个过程在用户没有互联网的情况下运行,什么也不会发生,计时器会重置。此过程将允许用户在没有互联网的情况下对工单做出响应,并在有互联网时上传响应/下载新工单。
我的问题是,在 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/
我是一名优秀的程序员,十分优秀!