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

swift - UIPasteboard 在后台返回 nil

我正在尝试applicatioDidEnterBackground在 AppDelegate 部分阅读粘贴板 5 次。要打印我使用的字符串,print(UIPasteboard.general.string!)但它只适用于函数,而不适用于其他嵌套函数。让我解释:

我读过与我的类似的其他问题,但没有一个对我有帮助。我不知道这是否是安全限制,但如果你能帮助我,我将不胜感激

0 投票
1 回答
2259 浏览

swift - 在锁定屏幕上使用 PushKit 和 CallKit 在后台启动应用程序时连接到 WebRTC 后没有声音

如果我们在前台启动应用程序,一切正常。但是,当应用程序先前被杀死并通过在锁定屏幕上接收 PushKit 通知重新启动时,就会出现问题。

当应用收到 PushKit 通知时,我们会显示 CallKit UI。这可以正常工作。用户可以通过 WebRTC 接听电话并建立连接。但是根本没有音频。

奇怪的是,如果用户通过点击应用程序图标从 CallKit 屏幕打开应用程序,音频会按预期启动并正常工作。所以看起来问题出在音频会话配置上。也许出于某种原因,iOS 不允许激活我们的音频会话。

我们正在使用 Google 的 WebRTC 库:

我们尝试了不同的方法:

  1. 启用/禁用音频背景模式。

  2. didActivate在从 CallKit 委托接收回调之前和之后配置音频会话。

  3. 手动配置音频会话并使用RTCAudioSession.sharedInstanceWebRTC 库。

  4. 启用和禁用RTCAudioSession.useManualAudio.

这是我们遇到问题的场景:

  1. 杀死应用程序。锁定手机。

  2. 从另一部电话呼叫该用户。

  3. PushKit 启动应用程序,应用程序显示 CallKit 屏幕,用户接听电话。

  4. 连接正确建立。通话处于活动状态,但两端没有声音。

  5. 点击 CallKit 屏幕上的应用程序图标(最右下角)并解锁手机。音频开始。

任何帮助表示赞赏。

0 投票
1 回答
1033 浏览

ios - 如果在手机锁定(屏幕关闭)时启动 iOS 后台任务不会保持活动状态

我有一个与 BLE 设备交互的 iOS 应用程序。蓝牙 LE 附件后台模式处于活动状态,因此即使将应用程序置于后台,应用程序也能够连接并与 BLE 设备交互。连接 BLE 设备时,应用程序在后台执行代码以响应与 BLE 相关的回调,但在 BLE 设备断开连接后,应用程序无法再在后台运行代码(应用程序仅在 BLE 设备断开连接后几秒钟内保持活动状态)。

我需要的是一种在 BLE 设备断开连接后执行有限长度任务(大约 1-2 分钟持续时间)的方法。

阅读Apple 文档我尝试使用beginBackgroundTaskWithExpirationHandler:方法。调用此方法,应用程序应请求一些额外的执行时间(大约 3 分钟)。

调用这些方法中的任何一个都会暂时延迟您的应用程序的暂停,给它一点额外的时间来完成它的工作。

我尝试通过调用 beginBackgroundTaskWithExpirationHandler 响应 BLE 断开回调来注册后台任务,我发现了一个奇怪的行为,这取决于调用 beginBackgroundTaskWithExpirationHandler 时手机是否被锁定:

  • 如果调用 beginBackgroundTaskWithExpirationHandler 时手机锁定(即屏幕打开,应用程序既可以显示也可以在后台运行),则后台任务按预期工作并保持活动状态大约 3 分钟,然后将应用程序置于后台并且屏幕关闭。
  • 如果在调用 beginBackgroundTaskWithExpirationHandler 时手机锁定(屏幕关闭),则后台任务在屏幕关闭时不会在后台保持活动状态,并且在再次打开屏幕时会以某种方式恢复

(我在 iPhone 6、iPhone 8 Plus、iPhone 5s 上都试过 iOS 12.1.4)

我使用的方法与这里描述的非常相似,我在这里也发现另一个类似的问题。

这是后台任务的预期行为吗?如果在手机处于锁定状态时启动,操作系统是否会暂停后台任务?

是否有另一种方法可以从应用程序处于后台并且手机被锁定时触发的回调开始持续时间为 1-2 分钟的有限长度任务?

先感谢您,

0 投票
0 回答
42 浏览

ios - 被终止应用程序的后台模式选项

我知道改变位置(例如:进入 iBeacon 区域)可以在瞬间唤醒“被杀死”的应用程序。远程通知也可以。

我正在寻找另一个选项来唤醒当前不在后台运行的应用程序。

我知道在最新的 iPhone 中,可以通过系统读取 NFC 标签并使用通用链接打开应用程序。

系统是否有其他可能性(可以是硬件)响应事件唤醒被杀死的应用程序,或者唯一的选择是 NFC 并更改位置区域?

0 投票
3 回答
4326 浏览

ios - iOS - 应用程序终止时的后台服务

如果应用程序终止,后台获取和位置更新等后台模式功能是否有效?还是只有在应用程序进入后台时才有效?

谢谢

0 投票
0 回答
288 浏览

bluetooth-lowenergy - 在 iOS 12 上后台运行时,BLE 应用程序被暂停

背景

我有一个 iOS 应用程序,它在后台扫描 BLE 设备。在我更新到 iOS12 之前它运行良好。这就是我所拥有的:

  1. 应用程序配置为在后台运行(例如 .plist 中的位置和蓝牙中心键)
  2. 应用程序应该在后台连续运行,扫描外围设备。不要将这与背景提取相混淆,后者是一个不同的用例。
  3. 应用程序连接到外围设备。它只读取广告数据包。
  4. 应用程序在后台运行几个小时后被暂停。
  5. 应用程序在被带到前台时恢复正常运行
  6. 应用程序在 iOS 11 中正常运行。更新到 iOS 12.x 后开始出现问题

我将日志消息放在 App Delegate 方法中。我看到的最后一件事是应用程序进入后台状态。我从来没有看到对 的调用applicationWillTerminate(),因为它仅在应用程序位于前台时才调用。

我已经看到其他帖子(例如iOS 12 无缘无故地在后台终止应用程序)与位置堆栈的类似行为。使用帖子作者编写的测试应用程序,我验证了该问题已在 iOS 12 中针对定位服务进行了修复。但是BLE问题仍然存在。

有没有人找到解决这个问题的方法?

提前致谢。

0 投票
0 回答
86 浏览

ios - UIImagePickerController 在视频仍在压缩时按时进入后台时完成拾取

我们遇到了一个问题UIImagePickerController:在我们的应用程序中,用户可以选择大尺寸的媒体(例如 4k 视频)。对于媒体选择,我们使用 UIImagePickerController 并且一切正常。

但是,如果用户将设备移动到睡眠状态,则在处理过程中选择媒体时,然后再次进入应用程序 - 然后启动委派方法。

在信息字典中它只包含两个值:UIImagePickerControllerReferenceURLUIImagePickerControllerMediaType

因此,它缺少获取所选资产 URL 所需的值。委托方法恰好在应用程序从后台返回时触发,并且显然应该更早地处理媒体。

由于文件可能非常大,我们不能让用户在每次应用程序进入后台时重新选择资产。也许有人遇到这个问题并且知道解决方案?

0 投票
1 回答
235 浏览

ios - iOS后台模式下本地主机没有响应

该应用程序在 localhost:25989 上的 iOS 移动设备 (iPhone\iPad) 本地服务器上运行,当转到浏览器时,我们发送一些请求http://localhost:25989但服务器(应用程序)直到我们发送响应返回应用程序。

这种情况如下图所示

  • 活动 - 我的 iOS 应用程序前台(服务器)
  • 背景 -在任何浏览器(Safari、Chrome 等)中向我的 iOS 应用程序背景发送请求

在此处输入图像描述

UPD:应用程序已配置为在后台工作 在此处输入图像描述

问题:如何组织在后台模式下工作的应用程序代码,服务器可以从 localhost:25989 返回答案?

0 投票
1 回答
308 浏览

ios - “idleTimerDisabled”如何在 didFinishLaunchingWithOptions 中工作?

我不确定以下代码在 appdelegate 的 didFinishLaunchingWithOptions 中如何工作?

它与“idleTimerDisabled”到底有什么关系?

谢谢

0 投票
0 回答
127 浏览

ios - 中断后恢复 AVAudio 会话

问题:

我的应用程序的音频在中断(例如电话或使用其他应用程序时)后没有恢复。当我的应用程序在中断发生之前已经处于后台状态时,会发生此问题。

处理中断的代码:

在 Xcode 控制台中,我看到以下序列的日志,但没有播放音频:

  1. 中断类型开始
  2. 中断类型结束
  3. 播放音频

我将不胜感激有关此主题的任何建议和想法。谢谢你。

编辑:

我注意到许多在线音乐流媒体应用程序(例如 Saavn 和 Spotify)存在同样的问题。