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

ios - 即使应用程序不在后台运行,如何让 iOS 应用程序执行一些代码?

在 Android 上,服务让我们可以灵活地继续运行代码,即使应用程序没有在后台运行,因为即使启动服务的应用程序终止,服务也会继续执行。

我希望在 iOS 上做同样的事情。我知道backgroundFetch,但它仅在应用程序在后台运行时才有效。

0 投票
0 回答
236 浏览

ios - iOS 10 中 viewDidLoad 后后台获取和刷新完成

我正在尝试在 iOS 10 中实现后台获取和刷新。我正在使用 XML 解析来解析数据,然后将其存储在文档目录中的文件中。为了解析 XML,我使用了一个自定义类 (XMLParser),它确认了NSXMLParserDelegate协议。

后台获取工作正常。但是,当我单击刷新按钮以及在 viewDidLoad 中显示刷新的数据时,我遇到了问题。

我在 viewDidLoad 中调用refreshData方法。这是我已经走了多远。

AppDelegate.m

ArtsViewController.h

ArtsViewcontroller.m

我调试了应用程序,发现viewDidLoad执行完成后,数据文件被写入,但视图没有更新。我也尝试在主线程中调用refreshData方法,但没有任何变化。viewDidLoad 完成后,调用showNoNewNews方法。

我怀疑我的逻辑没有错,但实施错了。这里的线程..任何帮助将不胜感激。

更新: 希望这可以帮助那些有类似问题的人......我将逻辑移到了viewDidLoad一个不同的方法viewDidLoadrefreshData,在 [self performNewFetchedDataActionsWithDataArray:dataArray];

0 投票
2 回答
403 浏览

ios - 企业应用程序的 iOS 后台同步替代方案?

我一直在为我们的企业应用程序调查 iOS 后台获取。根据类似这样的文章,有限制,例如在应用程序终止之前有 30 秒的下载时间,并且可能(未经确认)在 3 次超时后,应用程序被禁止进行后台同步的惩罚。此外,如果用户终止应用程序,则提取停止发生 -此处注明

目标是能够在应用程序暂停/未运行时定期从我们的服务器检索数据,但有时由于长时间运行 SQL,传输可能需要几分钟。我不想实现向所有用户发送定期通知。

在我走上开发 iOS 后台同步的道路之前,我需要做一些尽职调查和研究 iOS 后台同步的替代方案,但没有找到任何东西。

有没有人看到或开发了 iOS 后台同步的替代方案,或者为他们的企业应用程序处理过这个问题?

0 投票
0 回答
216 浏览

swift - Swift Darwin 通知和后台获取

我有一个应用程序,它设置为使用后台获取、远程通知和推送通知(和应用程序组)。

我让应用程序正常工作,以便在收到推送通知时,它会从后台唤醒并执行一些代码。

我想知道如果我是否将达尔文通知从一个应用程序发送到另一个应用程序(它们都包含在一个应用程序组中),那么如果它像远程通知一样被操作系统暂停,那么该应用程序是否会恢复活力。我找不到这方面的任何信息。

0 投票
2 回答
1975 浏览

ios - startMonitoringSignificantLocationChanges 不起作用

我正在制作一个使用设备定位服务的应用程序。每次位置发生变化时,该服务都需要捕获位置,并且它应该在所有情况下(后台/前台/已终止)保持运行,所以我使用startMonitoringSignificantLocationChanges()方法,但是当我将它发送到后台时,它工作了一段时间,然后停止,之后它不会捕获任何位置。我移动了文档建议的距离以获取位置更新(500m),但没有任何反应。我可能做错了什么?注意:在模拟器上它可以完美运行,但是在物理设备上它不起作用。

Info.plist文件启用了背景设置

AppDelegate.swift

ViewController.swift

0 投票
1 回答
978 浏览

ios - PubNub 防止存在超时

我正在考虑在我们的 iOS 应用程序中启用后台获取,以便为 PubNub 留出时间以防止出现超时。

编辑- 一些背景:我们的应用程序正在通过 pubnub 频道将其地理位置传达给服务。我们要求用户在后台授权位置,当它被授予时,我们已经偶尔从操作系统获得时间。我们一直在尝试使用在线状态功能,以便服务可以知道我们的应用程序是否已退出/断开连接,还是刚刚停止移动。但是,当设备在后台停止移动时,我们不会从到达的位置获得执行时间,因此无论如何都会发生 pubnub 超时。

启用该背景状态后,看起来我需要

  • 当我们有一个我们不想超时的连接时调用setMinimumBackgroundFetchInterval一个间隔(当我们不想超时时也是Never如此)。
  • 实施一个application:performFetchWithCompletionHandler:

但是,有些事情并不明显:

  1. 对于我们的 pubnub 超时,我应该选择什么获取间隔?似乎操作系统不一定遵守指定的获取间隔。一般来说,我们希望保持我们的超时时间很短,所以当我们的应用程序离线或强制退出时,我们的另一端很快就会检测到。这似乎与心跳不一致,并确保我们不会无意超时。我正在考虑只使用Minimum间隔。

  2. 我认为我不需要在我的performFetchWithCompletionHandler方法中做任何事情来确保发送存在心跳,而只是通过唤醒应用程序的事实会让 PubNub 的计时器触发并处理所有事情。但是,我可以做任何事情吗仅在心跳事务之后调用完成块,或者知道何时返回newDatavs. noDatavs. failed。另外,我担心每次都立即调用完成noData将被操作系统作为回退获取间隔的线索。

或者,如果有人可以推荐这种方法的替代方法来防止超时,我将不胜感激。

0 投票
0 回答
187 浏览

ios - iOS Background Fetch 甚至在应用程序首次启动时调用

我已经成功地Background Fetch为我的 iOS 应用程序实现了。但是,当我运行该项目时,即使 App 第一次启动它也会被调用,这是我需要忽略的。

我没有在Application delegate方法中对服务器进行任何 API 调用,我只是通过以下方式调用了服务器:

可能是在我调试应用程序时发生这种情况,但我不确定。有什么想法吗?

0 投票
1 回答
4045 浏览

ios - 后台任务和后台获取正确有什么区别?

我正在网上查看有关后台任务和后台获取的一些文档。

后台任务是在应用程序仍在运行时在后台执行的任务。当应用程序处于后台时,任务完成任务的时间有限,一旦完全进入后台,任务也必须结束。

后台获取是应用程序完全处于后台或非活动状态的地方,如果资源可用,该操作将被安排在某个时间点执行。

这是我非常简短的理解。

0 投票
2 回答
13847 浏览

ios - iOS10后台获取

我试图实现后台获取,希望可以不时唤醒应用程序。

我做了这些:

我也已经启用了后台获取功能。这就是我所做的一切。然后我运行应用程序。即使一个小时后该功能也从未调用过(手机睡着了)。

我还需要做什么才能使函数被调用?

0 投票
0 回答
91 浏览

ios - 当包含应用程序根本没有运行时,如何从 iOS 扩展更新 Watch 应用程序

我有一个 iOS 应用程序和操作扩展程序,它们通过应用程序组通用的 UserDefaults 共享数据。

当用户使用操作扩展添加模型数据,并且 iOS 应用程序在后台时,我可以使用 KVO 观察有问题的 UserDefaults 键,并启动 Watch 应用程序的后台刷新 - 这很有效。

但是,如果应用程序不在后台,而是完全处于非活动状态怎么办?KVO 显然不会发生。iOS 应用程序将在下次启动时(手动或通过后台刷新)获取对 UserDefaults 的更改并将这些更改传播到手表,但与此同时,手表数据在下一次刷新之前是不同步的。

我能想到解决这个问题的唯一方法是让 Action Extension 启动一个远程、静默通知推送到 iOS 应用程序,然后对手表进行后台刷新。但这似乎有点……重手?通过网络访问位于同一设备上的应用程序及其扩展程序。

我缺少什么解决方案?