0

我一直在为我们的企业应用程序调查 iOS 后台获取。根据类似这样的文章,有限制,例如在应用程序终止之前有 30 秒的下载时间,并且可能(未经确认)在 3 次超时后,应用程序被禁止进行后台同步的惩罚。此外,如果用户终止应用程序,则提取停止发生 -此处注明

目标是能够在应用程序暂停/未运行时定期从我们的服务器检索数据,但有时由于长时间运行 SQL,传输可能需要几分钟。我不想实现向所有用户发送定期通知。

在我走上开发 iOS 后台同步的道路之前,我需要做一些尽职调查和研究 iOS 后台同步的替代方案,但没有找到任何东西。

有没有人看到或开发了 iOS 后台同步的替代方案,或者为他们的企业应用程序处理过这个问题?

4

2 回答 2

0

目标是能够在应用程序暂停/未运行时定期从我们的服务器检索数据

  • 实现这种行为的唯一可靠方法是在后端和应用程序上实现面向用户的远程(推送)通知框架。
    您可以在推送 JSON 有效负载中附加4kB(或 5 个对于 VOIP)价值数据,如果在握手机制中实现,则无需网络获取请求。
  • 您可以评估静默远程通知的使用情况,以增加内容更新和机会性地获取少量内容,尽管它与后台应用程序刷新相同。
  • 你绝对可以改进 APIcan take minutes due to long running SQL
  • 请记住,只有在用户实际启动应用程序时,您才需要更新应用程序。评估实现一个引人入胜且流畅的获取内容屏幕,一旦获取所有数据,该屏幕就会转换为实际屏幕。
于 2017-03-02T22:47:02.490 回答
0

作为一个企业应用程序,除了可以使用任何你想要的背景模式(音频、位置、voip 等)之外,你无能为力,而无需有正当理由这样做。

这可能有帮助的地方是:

  • 您可以利用重大位置更改(与常规位置更改相反)通知在后台运行您的应用程序。问题在于,它当然取决于您的应用程序的用户四处走动。但是,假设您的员工中的每个人都使用他们的 iPhone 上下班,那么您每天将有两次机会让应用程序在后台运行。由于位置更改而运行的应用程序可以在后台执行超过 30 秒。

  • voip pushes:与常规推送通知不同,voip push 将启动应用程序,即使用户强行终止它也是如此。要使用此功能仅比使用常规推送多一点努力,您无需对拨打或接收实际 voip 呼叫做任何事情,您只需要 voip 功能和 voip 证书而不是普通推送证书。

该链接中关于强制退出和后台获取的评论不正确 - 用户强制退出应用程序不会使其没有资格运行后台获取,我已强制退出我自己的使用后台获取的应用程序,但它仍会启动由操作系统,但是会发生的是应用程序运行时的频率会减少很多,如果用户不再运行该应用程序,那么操作系统将停止启动它。用户强制退出应用程序将阻止其他事情发生,例如它在后台运行以响应静默推送通知(除非它是 voip 推送)。

此外,与下载时间无关的 30 秒,NSURLConnection 将在 30 秒后停止,NSURLSession 旨在代表您的应用程序继续下载。但是,如果您正在下载然后应用冗长的 SQL 处理,这将是一个问题。但是几分钟的处理时间似乎太长了,你确定它都优化了吗?

于 2017-03-02T22:54:32.037 回答