iOS 企业应用程序的后台同步替代方案?

iOS Backrground Sync Alternative for enterprise apps?

我一直在研究 iOS 企业应用程序的后台提取。根据 this, there are limitations like having 30 seconds to download before the app is terminated and the may be (unconfirmed) a penalty where after 3 timeouts, an app gets banned from background sync. Also if the user kills the app, fetches stop happening -.

等文章

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

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

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

The goal is to be able to retrieve data from our servers periodically when app is suspended/not running

  • 实现这种行为的唯一可靠方法是在后端和应用程序上实施面向用户的远程(推送)通知框架。
    您可以在推送 JSON 负载中附加 4kB(对于 VOIP 为 5)的数据,如果在握手机制中实现,则无需网络获取请求。
  • 您可以在 Silent Remote Notifications to augment content updation & fetch small amounts of content opportunistically, though it has the same as Background App Refresh 上评估使用情况。
  • 您绝对可以改进 API can take minutes due to long running SQL
  • 请记住,当用户实际启动应用程序时,您需要更新应用程序。评估实现一个引人入胜且流畅的获取内容屏幕,一旦获取所有数据,该屏幕就会转换为实际屏幕。

作为企业应用程序,除了您可以使用任何您想要的后台模式(音频、位置、voip 等)而无需有正当理由,您无能为力。

这可能有帮助的地方是:

  • 您可以在后台使用 重要 位置更改(而不是常规位置更改)通知 运行 您的应用.这个问题当然取决于你的应用程序的用户来回移动。但是,假设您的员工中的每个人都在通勤 to/from 工作并使用他们的 iPhone,那么您每天都有两次机会让该应用程序在后台 运行。应用程序 运行 由于位置更改可以在后台执行超过 30 秒。

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

关于强制退出和后台获取的 link 的评论是不正确的 - 用户强制退出应用程序不会使其不符合 运行 后台获取的条件,我强制退出我自己的应用程序使用后台获取,但它仍将由 OS 启动,但是会发生的情况是应用程序 运行 时的频率会降低很多,如果用户从不 运行 再次启动该应用程序,然后 OS 将停止启动它。 用户强制退出应用程序将防止其他事情发生,例如它 运行 在后台响应静默推送通知(除非是 voip 推送)。

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