我无法在 iOS 的后台获取数据

Posted

技术标签:

【中文标题】我无法在 iOS 的后台获取数据【英文标题】:I can't fetch data in background in iOS 【发布时间】:2016-09-07 03:29:51 【问题描述】:

当我在 Xcode 的 Debug 选项卡中使用 Simulate Background Fetch 时,我的应用程序执行了预期的操作,但是,当应用程序在我的手机上运行时,没有任何效果。

以前有人遇到过这种情况吗?你是怎么解决的?

我目前使用的是 Swift 2.2 和 Xcode 7.3

【问题讨论】:

【参考方案1】:

您是否在运行模式下为 Launch due to a Background Fetch Event 编辑了架构

ios Background Fetch Not Working Even Though Correct Background Mode Configured

【讨论】:

感谢您的帮助,但是当我这样做时,代码会被执行,但只有一次。当我运行它安装在我的 iPhone 上的应用程序时,代码永远不会被执行。【参考方案2】:

iOS 不允许任何应用程序在后台运行,除非应用程序要求它,并且它只允许它运行 10 分钟以注册后台执行:

- (void)applicationDidEnterBackground:(UIApplication *)application 
    UIBackgroundTaskIdentifier identifier;
    identifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^
        [[UIApplication sharedApplication] endBackgroundTask:identifier];
    ];

【讨论】:

我不明白你的回答。我已经启用了必要的后台模式,并且我还实现了 func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 方法。我还需要什么? 你需要告诉iOS你想要后台执行,设置模式不是必须的,你必须明确要求它。

以上是关于我无法在 iOS 的后台获取数据的主要内容,如果未能解决你的问题,请参考以下文章

在后台模式和终止模式下获取位置更新 IOS

如何在 iOS 后台模式下获取信标广告数据

无法在 iOS 11 上获取后台位置更新

iOS 中的后台获取和后台传输以在后台下载数据 (JSON)

允许后台进程时无法在 iOS 中获取 Force Quit 事件,怎么办?

ios - 如何在 ios swift 中正确实现后台获取