【问题标题】:How to run a Background Task on iOS application when Internet connection is detected?检测到 Internet 连接时如何在 iOS 应用程序上运行后台任务?
【发布时间】:2018-09-24 06:39:59
【问题描述】:

我正在使用第三方库“Reachability.swift”

https://github.com/ashleymills/Reachability.swift

按照这篇博文使用通知中心识别网络事件,因此可以在前台动态识别网络事件的变化

https://blog.pusher.com/handling-internet-connection-reachability-swift/

我的要求:-

我需要运行一个后台服务,该服务使用 Alamofire(alamofire 不需要信息)在 Internet 连接状态为 Active 时将本地保存的 SQLite 数据推送到服务器

重要提示:- iOS 应用程序不应该在前台运行,一切都应该在后台发生

请帮助我理解主题,提前致谢!

【问题讨论】:

  • 请给我投反对票的理由,我可以改进我的问题
  • 不要使用可达性,它是不可靠的。当快速切换连接或其他情况时,可达性状态几乎总是不正确的。
  • 该页面为您提供有关后台执行可能性的信息:developer.apple.com/documentation/uikit/core_app/…
  • 查看背景UrlSessionConfigurations。您可以让系统在连接可用时自动启动下载

标签: ios swift synchronization background-process


【解决方案1】:

您应该充分阅读并理解 Apple 关于后台执行的优秀文档:Background Execution

只有少数应用程序类型可以在后台模式下永久运行:

  • 在后台向用户播放有声内容的应用,例如音乐播放器应用
  • 在后台录制音频内容的应用程序
  • 让用户随时了解其位置的应用,例如导航应用
  • 支持互联网协议语音 (VoIP) 的应用
  • 需要定期下载和处理新内容的应用
  • 从外部附件接收定期更新的应用

这些类型的应用程序必须请求特定权限才能在后台运行。为您的应用声明错误的类型可能会导致应用被 Apple 拒绝。

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2014-07-12
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多