问题标签 [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.
swift - iOS 13 - WkWebView:在后台时音频停止
我有一个使用WkWebView从 Soundcloud 播放音频的应用程序,在 iOS 13 Beta 6 上,当应用程序不在前台时音频停止,即使Audio在Background Modes中打开也是如此。
开始播放时会抛出此断言:
进入后台状态后,抛出以下断言并暂停音频:
这在 iOS 12 中不会发生,在该版本中,音频在后台正常播放。
ios - 后台获取无法在真实设备上运行
请帮忙提供建议。出于某种原因,真实 iOS 设备上的后台获取不起作用。通过 Xcode ( Debug -> Sumulate Background Fetch
) 运行时,一切正常。但是当我在真机上安装应用时,这个功能就不起作用了。
我将澄清以下内容:
- 我不会杀死应用程序,而只是将其最小化。
- 该
Background App Refresh
设置在应用程序的设置和整个手机的设置中都启用。 - 我等了一天多——什么也没发生。
在我看来是什么原因:
- 我通过
TestFlight
. - iPhone 上没有安装 SIM 卡。
- 在我的应用程序中,文件的标准名称
AppDelegate
更改为BaseDelegate
,其位置从更改MyApp/MyApp/AppDelegate.swift
为MyApp/MyApp/base/BaseDelegate.swift
(应用程序已正确配置为该文件的新名称和位置)。它会以某种方式影响吗?
我做了什么:
- 我在项目设置中打开了
Background fetch
模式。 - 我将以下代码添加到
info.plist
- 以下代码已添加到
AppDelegate.swift
:
为了测试应用程序,我发送了一个本地通知,并将时间保存在 UserDefaults 中。
ios - 在后台保持 iOS 中的 BLE Flutter 应用程序处于活动状态
我有 Flutter 应用程序,它从 BLE 设备接收和处理(上传到服务器)数据。根据 iOS 后台模式,应用程序应在收到 BLE 消息后保持活动或唤醒。因此,如果我每隔一秒收到此消息,应用程序应该在后台保持活动状态。
问题是它有时只能工作(比如 10 小时不间断的会话),但在大多数情况下,应用程序只是安静地停止,即使连接了 BLE 并传输数据。可能在 5 分钟或一个小时后发生,总是不同的。
而且我无法捕获有关问题所在的任何日志。我在用:
- 全局处理程序:setUncaughtExceptionHandler、setSignalHandler
- 委托方法:applicationWillTerminate、applicationDidReceiveMemoryWarning、applicationProtectedDataWillBecomeUnavailable、
所有这些我都通过方法通道发送到 Flutter 以将日志写入文件。而且我在日志中什么也看不到,只是中断了 BLE 事务和数据上传的正常流程。
有什么想法可以找出我的应用程序停止的原因吗?
swift - BGProcessingTask 是如何工作的?
我试图了解 iOS 13 中后台工作的细节。
如果用户一周没有进入应用程序,BGProcessingTask 是否会完成,或者如果一周过去了,它永远不会完成?
Apple 表示 BGProcessingTask 将能够运行几分钟 - 我们在谈论多少分钟?
Apple 文档尚未回答这些问题。答案可以通过实验获得,但我没有尝试过一周不使用该应用程序进行背景调查。
ios - 直接运行代码以响应接收到 APNS 消息
我们有一个 iOS 应用程序,我们通过 FCM 向其发送通知。
理想情况下,我们希望能够让应用程序直接从通知中运行一些代码。
如果我们发送数据类型通知并且应用程序在前台,这似乎是可行的。
但是 - 如果 a) 应用程序在后台 b) 应用程序已终止,我们该怎么做。是否有某种方法可以自动运行应用程序,或者在应用程序终止时让应用程序自行备份。
谢谢
ios - iOS 13 - 使用 BGTaskScheduler 并不总是有效
问题: 我想在应用程序进入后台 5 秒后运行一个简单的函数。
我必须实现BGTaskScheduler以支持 iOS 13。BackgroundTask 的旧实现适用于旧 iOS 版本。
我按要求添加了背景模式(BLE 附件被勾选,因为我们在这个函数中执行了一个小的 BLE 操作):
然后,我根据文档准备了 Info.plist (Identifier is fake just for StackOverflow question):
在didFinishLaunchingWithOptions结束之前,我注册了我的 BackgroundTask:
现在,当应用程序运行didEnterBackground方法时,我提交了一个 BackgroundTaskRequest:
这里的问题是它非常不一致。苹果保证任务不会在给定日期之前执行,但不保证它会在准确的时间执行(我没问题,有一点延迟)。但是,当我运行应用程序时,它没有 100% 工作,无论我是否为任务请求提供了延迟(使用 earlyBeginDate)所以它曾经先尝试 7 秒(而不是 5 秒),下次我提交任务耗时26秒,第三次未到关门。
我以错误的方式实施 BackgroundTask 吗?我已经在互联网上搜索了一些答案,但没有遇到任何遇到此问题的人。
ios - 在 iOS 13.0 及更高版本中,后台计时器在 30 秒后不工作。有什么解决办法吗?
我有一个包含计时器功能的 iOS 应用程序。应用程序在前台运行时完全正常,计时器运行良好。但是当我进入后台模式时,计时器仅工作 30 秒,并且出现“不存在标识符错误的后台任务”。我的应用程序中启用了后台模式和后台处理功能有解决方案吗?
ios - 当应用程序在后台运行一段时间后,使用 ServiceUUID 对 BLE 外围设备进行后台扫描会停止
我正在开发一个以蓝牙为中心的应用程序,必须在前台和后台模式下扫描外围设备。我在 Xcode 功能中启用了“使用蓝牙 LE 附件”背景模式。经过大量研究,我决定检查是否可以在后台模式下基于 ServiceUUID 扫描外围设备。经过一些测试,我能够在后台模式下进行扫描。但我的问题是,几分钟后(大约 10 分钟,有时是 25 分钟)我的应用程序自动停止调用 didDiscover 外围方法并自动终止。但是我还需要在后台模式下扫描外围设备,并在特定 BLE 外围设备的某些值将得到更新时触发一些本地通知。所以为了实现这个功能,即使应用程序处于后台模式或用户锁定屏幕,我也需要连续扫描和观察某些 BLE 设备。请建议。
ios - 当应用程序处于后台或设备锁定时,Airplay 停止播放视频流
我正在使用 AVPlayerViewController 在流中播放视频。
当我在 Apple TV 上的 AVPlayerViewController 上启动 Airplay 并将应用程序置于后台时,或者如果我锁定设备,则视频在 Apple TV 上暂停。
我在这篇文章中验证了这一点 [ https://developer.apple.com/library/archive/qa/qa1668/_index.html#//apple_ref/doc/uid/DTS40010209][1]
我检查了背景音频、播放模式 我的音频会话已启动并在 AVAudioSessionCategoryPlayback 中处于活动状态 当我进入后台或锁定设备时,我的 AVPlayer 处于播放模式
我阅读了这篇文章的“视频媒体的特殊注意事项”段落 [ https://developer.apple.com/library/archive/qa/qa1668/_index.html#//apple_ref/doc/uid/DTS40010209][1],但他们没有谈到 AVPlayerViewController。
我知道视频不是可能的背景模式功能之一,但 Airplay 是。
那么你有什么办法让视频流音频/图像在后台播放应用程序或使用 AVPlayerViewController 锁定设备?
提前感谢您的建议或我会错过的任何技术链接。