问题标签 [background-mode]

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 投票
2 回答
492 浏览

ios - 我怎么知道我的应用程序在后台运行?

我已经写了这个程序,当应用程序显示在屏幕上时它就可以工作

如果应用程序在后台,它会停止打印纬度,当我恢复应用程序时,它会再次开始打印。

我在 xcode 中启用了后台模式,还检查Location updates了为什么我的应用程序仍然没有在后台运行?

如果应用程序正在运行,只是该print功能在后台不起作用,我怎么知道应用程序正在运行?

0 投票
0 回答
74 浏览

background - 间隔iOS在后台播放音频

所以我正在开发一个应用程序,该应用程序需要每隔 X 时间使用 NSTimer 播放不同的音频文件。是的,它也需要在后台播放音频,但我尝试这样做的结果不一致。我已经彻底搜索了网络以找到解决此问题的方法,但我没有运气。

我启用了后台模式并检查了项目 0(音频)并确保它在我的 info.plist 中。我已在 info.plist 中将“应用程序不在后台运行”键设置为 NO。在 VC 的 viewDidLoad 方法中,我将 AVAudioCategory 设置为 categoryPlayback 并将 AVAudioSession 设置为 active。我还在应用程序的不同位置移动了这些代码行以寻找不同的结果,我得到的最好结果是应用程序有时会继续在后台运行,有时会暂停。

通过我所有的搜索,我看到论坛解释如何在后台播放音频。但是,我还没有找到任何解决方案来在不同的预定时间间隔间歇性地在后台播放短音频文件。

我知道 App Store 中至少有一个应用程序能够做到这一点,并且他们使用 AVFoundation 的闪避功能来闪避在后台播放的音频(我不确定其他框架是否能够闪避背景音频,例如 AudioToolbox ,但我想为我的应用程序启用闪避)。

如果有人知道我的问题的任何法律解决方案,我们将不胜感激。

0 投票
1 回答
2105 浏览

ios - 如何在swift UI Test下检查应用程序状态

一些背景

我目前正在为设置窗格编写 UI 测试,然后单击按钮以启用某些权限,例如推送通知和位置服务。

但是,如果之前已显示权限警报(无论用户允许或拒绝访问权限),则警报将不会再次显示,只会将用户带到设置应用程序。不幸的是,这些设置不会重置,这意味着我第一次运行 UI 测试时,会显示警报;在所有后续的 UI 测试运行中,除非我在测试开始前重置设备,否则这些按钮会将我带到设置应用程序。

我的问题

因此,我的测试需要知道应用程序是否进入后台,并尝试将其置于前台以继续测试:

有什么方法可以确定应用程序是否在后台?

我试过的

我研究了从 UI 测试中确定应用程序状态(运行/后台/等)的方法,但找不到太多。我试图检查某些元素是否存在:

但这会给我运行时错误[1]如果用户被带到设置页面,因为被测应用程序在后台,并且测试无法查找导航栏(或其他元素)。

我尝试使用 Facebook 的私有标头中的一些方法XCUIApplication()XCUIElement().

XCUIApplication().state3无论应用程序当前处于什么状态,总是返回,并且任何调用XCUIApplication().resolve()前台应用程序的尝试都会给我带来与以前相同的错误[1]

我试图在恢复测试之前重写逻辑以将应用程序置于前台,但是XCUIApplication().launch()在重新启动之前杀死应用程序等方法,我无法做到。只有 siri 服务似乎对我有用,但我无法通过公司代理访问 siri 服务,并且无法修改代理权限。

有没有其他方法可以检查应用程序状态?

错误

[1] 每次我尝试执行涉及状态的操作时都会打印此错误。我不在任何地方打电话snapshotView,因此使用的建议afterScreenUpdates是无用的。

tl;博士

我需要检查我正在 UI 测试的应用程序是否已进入后台(即用户按下主页按钮)。检查特定元素(例如导航栏)是否存在不起作用,Facebook 的 XCUIApplication/XCUIElement 私有标头中的大多数方法也不起作用。将应用程序置于前台也会导致问题,并且重新启动应用程序不是一种选择;Siri服务也不是。

0 投票
1 回答
181 浏览

cordova - 最小化应用程序 Cordova Ionic1 后显示音乐控制

即使在最小化应用程序后播放音乐时,我们如何强制在通知托盘中显示音乐控制。我正在使用 Cordova-plugin-background-mode 在应用程序处于后台时显示通知,但它不符合我的要求。

0 投票
0 回答
244 浏览

ios - 定时器在 iOS 10.3 中停止在后台计数

在 iOS 10.3 的后台使用计时器时遇到问题。

当设备处于后台模式或睡眠模式时,它似乎停止计数。它在 iOS 10.1 上运行良好。

我的应用程序具有在后台获取位置功能并以 5 秒/次的速度发送到服务器,但现在计时器在后台不起作用。

0 投票
1 回答
940 浏览

ios - 即使在 iOS 11 中调用停止更新,bluebar 也会永远存在

我“始终”访问位置服务,我知道苹果在 iOS 11 中所做的所有更改。我根据需要更新了我的 plist(添加了新密钥)。stopUpdatingLocation一旦应用程序进入后台,我就会打电话,但这个蓝色仍然停留在那里,表示您的应用程序正在后台使用位置。状态栏中填充的位置图标顶部也更改为概述的位置图标。我也在使用 Mapbox SDK。这是 iOS 11 的错误还是我遗漏了什么?只是为了提供背景信息,我完全了解位置服务的工作原理。我尝试了几乎所有解决方案来删除那个蓝条,但似乎没有发生。

我试过了self.locationManager.allowsBackgroundLocationUpdates = falseself.locationManager = nilself.locationManager.delegate = nil没有任何帮助。

如果有人可以帮助我,那就太好了。

0 投票
2 回答
99 浏览

ios - 定期后台获取

我想每 30 秒到 1 分钟在后台上传一次位置。可能吗?我发现我可以设置UIApplicationBackgroundFetchIntervalMinimum. 但是我环顾了这个常数,告诉设备大约每 30 分钟获取一次。有什么办法吗?谢谢。

0 投票
0 回答
481 浏览

ios - UIBackgroundTaskInvalid 和 endBackgroundTask 有什么区别?

我有时会看到使用结束任务的代码

在我看到的其他地方

在其他一些地方我看到:

这三个有什么区别?从这里阅读似乎只是一个干净的代码问题,但我觉得没有必要,你已经结束了任务!

对我来说,它们都是一样的。只有使用您UIBackgroundTaskInvalid才能验证任务是否已结束。不知道为什么你需要验证。

上述评估是否正确?

0 投票
1 回答
1180 浏览

ios - 当应用程序在后台并接收推送通知点击应用程序崩溃时

我正在使用 Azure 通知中心处理推送通知。

我想从通知为 Tap 的 AppDelegate 启动我的应用程序。

这是场景,我如何打开我的应用程序。

AppDelegate.cs文件

UserNotificationCenterDelegate.cs文件

我已经尝试了我在 google 和 So 和其他网站上找到的所有可能的场景,但没有什么对我有用。

我花了4天时间,但没有成功。

任何帮助将不胜感激。

0 投票
0 回答
1083 浏览

ios - 来自后台的 Swift iOS 地理围栏

在后台刷新地理围栏区域的最佳方法是什么?

目前我总是使用后台模式的定位服务。我尝试抓取userlocation并比较与初始保存位置的距离。当用户移动的距离大于我的一半mapSpan时,应用程序将清除所有monitoredRegions内容,firebase fetch为搜索词生成 a 并使用搜索词执行 a MKlocalSearchRequest

所有找到MKMapItems的表单MKlocalSearchRequest都应该设置为 new GeofenceRegion

似乎其中的background refresh无法monitoredRegions正常工作。

当我启动应用程序时,附近的所有初始都monitoredRegions被触发。但是当我开车更远的距离时,background refreshfornew regions似乎没有更新。

我是否需要使用不同的后台操作来使其按我的意愿工作?

以下是一些代码细节: 在MKMapViewDelegate didUpdate userLocation我寻找我需要更新的新地理围栏区域。

在这里我检查到保存的初始位置的距离

RemoveOldGeofenceOverlays 和 StopMonitoringForOldRegions

我的 PerformLocalShopSearch

从 Firebase 收到商店时我的代表

至少我开始监控圆形区域的功能

当我移出地图跨度时,我仍然没有在后台获得更新。我还观察到的是,在我的 MKLocalSearchRequest 中,我得到了两次循环的四次响应,每个请求似乎都提供了两个响应。那是对的吗?