问题标签 [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 投票
4 回答
4120 浏览

ios - 如何在 didFinishLaunchingWithOptions 方法中检测到我的应用程序是否已启动以进行后台提取?

我想检查我的应用程序是否已在我的应用程序委托的 didFinishLaunchingWithOptions 中启动以进行后台提取。launchOptions 字典中没有任何内容。那么有什么方法可以检查吗?

我知道我可以检查applicationState,但由于某种原因,有时它会返回 UIApplicationStateBackground,即使我正常启动应用程序也是如此。

我在 Analytics 初始化代码处创建了断点,即使我正常启动应用程序,有时它也会进入此块!

我知道我可以在稍后applicationDidBecomeActiveapplicationDidEnterBackground将被调用时检测到状态。如果我将使用这些方法来检测状态,我需要将我的 Analytics 初始化代码移动到其他地方。如果它保留在application:didFinishLaunchingWithOptions:其中,则每次我的应用程序启动后台获取时都会调用它。所以也许我应该将 Analytics 初始化代码移到其他方法而不签applicationStateapplication:didFinishLaunchingWithOptions:?如果是这样,我可以使用哪种方法?

0 投票
3 回答
12508 浏览

ios - iOS后台获取自定义间隔

我阅读了有关后台获取的所有 Apple 文档,目前我正在使用它:

我让操作系统决定何时执行后台获取,但如果我这样设置:

这是否意味着 fetch 每 6 小时发生一次?

0 投票
2 回答
172 浏览

ios - 实现每10分钟运行一次以从IOS中的url获取数据的后台服务的最佳方法是什么?

我希望每 10 分钟运行一次的后台服务从 url 获取数据并在数据库中更新它。

我已经搜索了很多。它给了我连续运行 3 分钟然后停止的例子。或拉取和刷新数据的示例。

但我想要在没有用户交互的情况下在后台运行的服务,它应该每 10 分钟运行一次。

有没有这方面的教程或例子?实现这一目标的有效方法是什么?

0 投票
1 回答
1331 浏览

ios - UIApplication 的 applicationState 返回错误值

我的应用程序执行后台获取以更新一些数据。在我的初始视图控制器的viewDidLoad方法中,我想检测我的应用程序是否运行以进行后台获取?

我知道使用以下命令检查应用程序的状态非常容易:

但由于某种原因,即使我正常启动应用程序,有时程序也会到达这个断点。这意味着applicationState返回UIApplicationStateBackground。也许应用程序启动发生在后台获取运行或类似的那一刻?

当应用程序在后台模式下运行时,我不想在我的viewDidLoad方法中执行代码,所以我需要ifviewDidLoad.

0 投票
2 回答
155 浏览

ios - 后台提取 EXEC_BAD_ACCESS 内的延迟

我正在创建一个在后台模式下工作的应用程序(最小化),它每 90 秒执行一次检查服务器上某些信息的特定方法。代码是这样的:

AppDelegate.m

MyFristViewController.m

我的代码运行良好,但正如我之前所说,一个命令必须每 90 秒运行几次,为此,该方法的结尾使用了这个更有效的命令:

这段代码的问题是它第一次运行完美,现在当他期望 90 秒并第二次运行相同的代码时,我收到错误消息EXEC_BAD_ACCESS这行代码:

现在,如果我删除这行代码,我会收到消息并且我的应用程序运行良好(没有任何崩溃):

应用程序委托收到了对 -application:performFetchWithCompletionHandler: 的调用,但从未调用过完成处理程序。

我认为收到此消息并不好,简而言之,我想要做的是在应用程序最小化时永远每 90 秒运行一次此命令。我做得对吗?

0 投票
1 回答
88 浏览

ios - 在 iOS 中安排 ersatz 后台获取

我试图让我的应用程序在特定的预定时间执行后台提取。我有让 iOS 自己解决这个问题的想法,所以(在 ​​AppDelegate 中):

然后(也在 AppDelegate 中)

如果我在 Xcode 中手动触发背景检查,则效果很好。可悲的是,如果我把它留给自己的设备,它就不能完美地工作。

如何安排执行 getStatusUpdate 函数的时间或导致在特定时间发生后台获取(实际用例是应用程序将在用户定义的时间附近进行检查,例如闹钟 -这不是一直运行并消耗电池的东西)

我在互联网上找到了很多关于安排警报的信息(包括这里 - 我在这里找到了一个示例,它建议使用 CoreLocation 来触发后台获取 - 我不知道这是否可行,但出于节能的原因,我不喜欢这个主意。) - 但这只会导致屏幕上显示警报,我不想显示警报 - 至少在我检查状态更新之前不会。

与往常一样,我们将非常感激地接受任何帮助(但我担心答案是我不能做我想做的事!)。

0 投票
4 回答
2691 浏览

objective-c - 后台提取似乎没有触发

在我的应用程序中,我执行了下面列出的以下操作,并在应用程序获取例程中添加了计数器,以突出显示 iOS 8.1 调用 fetch 的次数。

  1. 打开后台模式并启用后台获取。
  2. 为“performFetchWithCompletionHandler”编写代码。NSLog 消息指示获取过程的开始和结束。计数器位于这些消息之间。
  3. 在“didFinishLaunchingWithOptions”中添加了代码。但是,我没有使用“setMinimumBackgroundFetchInterval”,而是使用 60 的两倍(假设秒数)。

当我通过设置“模拟后台获取”在调试中测试代码时,一切都按预期完美运行,绝对没有问题。计数器工作并显示预期值。

但是,当我在 iPhone 上直播时,启动应用程序,然后点击主页按钮进入后台,等待一两个小时或过夜。什么都没有发生,没有获取,没有下载,所有计数器都保持为零。

如果我不能让它工作,我将需要创建自己的后台线程并直接管理它,我不希望这样做。

任何意见或想法都深表感谢。

0 投票
1 回答
3745 浏览

ios - 在 iOS 中,后台提取多久执行一次?

在 iOS 7 中,当应用程序不在最前端时,应用程序支持后台获取模式来获取数据:

方便时,系统会在后台启动或恢复应用程序,并给它一点时间来下载任何新内容。

我的问题是:后台获取代码多久执行一次?

如果我设置最小间隔:

它是每 10 秒执行一次,还是每天执行一次?一般来说,我应该期待什么样的间隔?

0 投票
2 回答
2932 浏览

swift - 后台获取中多个异步请求的最佳实践是什么?

我有一个可以拥有多个用户帐户的应用程序。我需要在后台更新所有这些。问题是:

  • 时间有限(约 30 秒,但请求可能需要更长的时间)
  • 所有请求都是异步的

我应该什么时候调用完成处理程序?

0 投票
1 回答
2074 浏览

ios - 每次应用重新启动时我应该调用 setMinimumBackgroundFetchInterval 吗?

我开发了一个使用后台获取的应用程序。我将更新之间的最小间隔设置为最小值:

我认为这个值是由系统保存的,所以当/如果应用程序重新启动时,我不必再次设置它。但是,我刚刚注意到我的一台设备上的最后一次后台获取是在两周前。我知道,更新之间的间隔可能会有所不同,但我不认为两周是正常的。特别是考虑到它工作了几个月的事实,每 20-30 分钟调用一次后台更新。

不幸的是,我找不到一种方法来MinimumBackgroundFetchInterval检查我的理论(有谁知道顺便说一下如何得到它?)。我只检查了application.backgroundRefreshStatus,它等于UIBackgroundRefreshStatusAvailable,但我认为(我不确定)这仅意味着用户允许应用程序使用后台更新。