【问题标题】:Send app data as soon as the mobile device gets an internet connection移动设备连接互联网后立即发送应用数据
【发布时间】:2014-09-18 02:58:10
【问题描述】:

我正在构建一个应用程序,用户可以在其中输入数据,同时在线和离线。 该数据必须与服务器同步。 如果用户在线,这不是一个真正的问题。 但是现在我需要发送用户在离线时输入的数据,在他连接到互联网的那一刻(例如当他离开飞机并且手机连接到网络时)。

我想到的当前解决方案是使用 iOS 和 Android 上可用的后台服务每 X 分钟轮询一次服务器以查看手机是否在线。 这对 Android 来说似乎不是太大的问题。 然而,iOs 似乎更难。 根据这篇文章iOS app upload data to server as soon as network is available,这是不可能的。但似乎 iOS 7 增加了新的后台功能,这可能使这个用例可行。我只是找不到任何好的例子或文档。

所以核心问题是,即使我的应用目前没有被使用(甚至可能自上次重启手机以来根本没有使用过),我如何才能检测到手机上线的事实?

【问题讨论】:

  • 我想我很困惑。这个问题是安卓还是iOS?
  • 这里是一个tutorial 用于 iOS7 中的后台获取,但这个后台获取调用仍然完全取决于 iOS,所以你不能有固定的时间间隔来触发 Web 服务。
  • 实际上与两者有关。该功能需要跨平台,因此我需要两个平台的最佳策略方法。 iOS 所需的策略具有更高的优先级,因为我找不到有关如何处理此问题的任何信息。
  • 谢谢@walle84 这似乎可以工作,唯一困扰我的是该功能显然是用于从服务器获取数据而不是用于将数据推送到服务器。它可能也可以用于推送,但是当这种情况发生时,您似乎没有太多控制权。
  • 您如何使用推送通知向您的应用发送数据?另外,您如何连续访问服务器以获取数据?如果每隔几分钟或几小时,您可能应该重新考虑一下,因为这会耗尽大量电池,而苹果已经对电池的有效利用提出了担忧。

标签: android ios networking mobile connectivity


【解决方案1】:

我最近找到了一段完美的代码来实现后台获取。

注意: 使用后台提取时,您应该注意一个限制。给予应用程序的后台执行时间不是无限的。 iOS 提供了 30 秒的时间范围,以便应用程序被唤醒、获取新数据、更新其界面,然后再次进入睡眠状态。您有责任确保任何已执行的任务都能在这 30 秒内完成,否则系统会突然停止它们。如果需要更多时间,则可以使用后台传输服务 API

代码: DemoProject

参考: ios7-background-fetch-programming

希望对你有帮助。

【讨论】:

    【解决方案2】:

    除非您的应用是音乐播放器应用、基于位置的应用等,否则 iOS 将不允许您的应用在最小化状态下无限工作。

    【讨论】:

    • 这在 iOS 7 之前肯定是正确的,但如果我理解正确的话,现在有一些方法可以让后台服务处于活动状态以执行任务。
    • 您可以使用后台应用刷新工具来更新您的应用。
    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多