问题标签 [background-fetch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
81 浏览

xcode - 在 Xcode 的后台模式下的应用程序中,核心数据请求在后台线程上不起作用

当调用我的应用程序进行后台获取(应用程序状态为后台)时,我不在主线程上执行核心数据请求,并且方法永远冻结。但是当我使用主线程时,它可以工作。

在后台模式下,我是否应该始终将主线程用于核心数据?是否有一些关于它的苹果文档?

0 投票
0 回答
326 浏览

ios - 应用程序在后台时会调用后台获取吗?

iOS 会调用performFetchWithCompletionHandler被带到后台的正在运行的应用程序(使用主页按钮)吗?

我认为它仅在 iOS 启动我的应用程序进行后台获取时才被调用。

performFetchWithCompletionHandler如果即使我的应用程序在后台运行,iOS 也会启动,那么我还有一个问题:

我需要定期从远程服务器获取数据。我现在使用NSTimer它,即使应用程序在后台也可以使用。我的想法是即使应用程序没有运行也使用后台获取来执行此操作,但是如果启用后台获取,我可能会遇到我自己的线程(使用NSTimer)进行一些获取和 iOS 调用的情况performFetchWithCompletionHandler

那么,当我的应用程序进入后台并等待后台获取时,我应该停止任何计时器吗?

0 投票
0 回答
297 浏览

ios - 当应用程序处于后台时,在 iOS 中定期从远程服务器获取数据的正确方法是什么?

我需要从服务器获取数据并(可能)为用户创建本地通知。在前台时,我使用单独的队列。当我在后台时(单击主页按钮后)我也可以这样做,但也有“后台获取”功能。

我应该使用哪一个?简单地使用队列或后台线程并在应用程序进入后台时离开它会更好,还是应该暂停我的线程并等待“后台获取”请求?

0 投票
1 回答
148 浏览

ios - 后台获取超过 30 秒

我正在开发一个 iOS 应用程序,我必须在其中下载多个 zip 包。为了处理下载,我使用了一个内部 C++ http-framework。

有没有可能做Background-Fetch超过30秒?

一种可能是使用NSURLSessionWith NSURLSessionDownloadTask,但 http 框架不使用 NSURLSession。

另一种解决方案是这个:

但这只会工作30秒。

但是我怎样才能下载Background-Fetch超过 30 秒的 Zip 文件呢?

0 投票
1 回答
121 浏览

ios - 如何处理触发定期本地通知但时间表不断变化的应用程序?

我正在创建一个需要每天为日出和日落触发本地通知的应用程序。

  • 日出和日落时间每天都在变化。
  • 即使用户没有打开应用程序(即后台任务),我也希望注册本地通知。因此,用户安装应用程序,设置他的位置(因为日出和 susnet 计算是基于位置的),然后他知道他会收到日出通知并每天设置,而无需打开应用程序或连接到互联网。
  • 理想情况下,我需要一个后台任务来在给定的时间段内注册本地通知,每个时间段至少运行一次。“例如注册下周的本地通知,在这种情况下,我需要它每周至少运行一次”。
  • 当前的后台模式都不适合我的情况,我尝试了后台获取,但由于没有下载数据,iOS 在几天后停止运行我的后台任务
  • 我知道我可以使用推送通知,但除非这是我最后的选择,否则我不想这样做,因为即使手机未连接到互联网,我也希望通知发生。

那你觉得我怎么能解决这个问题?有什么我想念的吗?

0 投票
1 回答
182 浏览

ios - 执行后台获取时不一直返回 UIBackgroundFetchResultNewData 的缺点是什么?

我刚刚在我的 iOS 应用中实现了后台获取。我在我的应用委托中实现了这个方法:

实现这一点的正确方法是completionHandler(UIBackgroundFetchResultNewData)在有新数据时调用,并且completionHandler(UIBackgroundFetchResultNoData)在没有新数据可下载时调用。

但是,并非所有 Web 服务都可以提供此信息。其中一些只是要求开发人员一直获取新数据,即使没有新数据。completionHandler(UIBackgroundFetchResultNewData)在这种情况下,在每次后台提取时调用的缺点是什么?

0 投票
1 回答
280 浏览

ios - iOS后台获取运行时间过长?

我有一个每 7 小时运行一次的后台作业,它进行 API 调用大约需要 1-3 秒。查看设置的电池部分,显示该作业在过去 20 小时内已在后台运行了 40 分钟。

模拟后台提取工作得很好,并在几秒钟内调用完成。

知道为什么它运行时间过长吗?

0 投票
1 回答
516 浏览

ios - 如何使我的应用程序“最新” - 后台获取?

我正在寻找一种如何使我的应用程序“upToDate”的好方法。这些是我的要求:

我有一个 RESTful Web 服务,为不同的用户提供任务。每个用户都有一个 iOS 应用程序,当服务器/服务向该用户分配任务时,它应该会自动更新。

因此,首先创建了一个手动“同步”按钮,用于检查新任务。使用 Alamofire 获取数据,并更新 UI。

但是,如果有新任务,我的目标是自动同步。

所以,我猜有两种不同的方法可以解决这个问题:

1. 每 xx 分钟进行一次后台获取(使用 NStimer?)并检查是否有新任务。

在此处检查该教程后: http ://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial我不确定后台获取是否是解决该问题的好方法。在这种情况下,应用程序使用调度程序检查一次是否有新更新,而不是每 xx 分钟检查一次。

所以在我的情况下,我会在 AppDelegate (可能在applicationDidEnterBackground)中创建一个 NStimer 并每 xx 分钟检查一次新数据(但是当有 3 天没有任何新任务时,这将是不必要的电池消耗,或者?)

2. 使用推送通知。

我的另一个想法是使用推送通知,所以当有新任务时,我会发送推送通知并手动启动同步。在我看来,这会使用更少的电池,因为他只会在有新任务可用时开始同步。

关于使用后台服务的一般问题

好吧,如果用户完成了任务,一些数据应该会自动上传到服务器。通常没有问题,手动同步会检查是否有要上传的内容。但是,如果没有互联网连接(在上传前检查是否),并且用户没有按下“手动同步”,该怎么办。

因此,如果有 Internet 连接,我更愿意检查我的“后台服务”,如果是 - 开始上传一些数据。

我知道这不是一个具体的问题,但我认为有很多用户有相同的要求,如果有人能帮助我找出以最佳和实用的方式解决这个问题的最佳方法,那就太好了。

提前致谢!

0 投票
1 回答
137 浏览

ios - 带有远程通知的 iOS 背景获取

是否可以同时使用后台获取和静默远程通知来最大化后台活动的数量?苹果表示他们对两者都设置了限制,但同时使用两者可以解决这些限制,对吧?如果我将后台获取间隔设置为最小,然后每 15 分钟发送一次静默通知,这将如何工作?

0 投票
1 回答
88 浏览

android - Android后台获取中的过多数据使用

我的 android 应用程序面临一个问题,它在后台获取模式下不断为用户下载大量数据。

我确实通过警报调用该应用程序以发送本地通知,但仅此而已,除了发送通知之外,它不做任何其他事情。我在应用程序中集成了几个广告网络 sdk,我怀疑它们可以这样做。

有什么方法可以让我弄清楚为什么会发生这种情况,因为谁在下载数据。Android 只提供应用程序级别的信息。当应用程序处于后台时,我可以通过什么来限制要在移动数据上下载的数据量?

任何帮助或建议都会非常有帮助。