问题标签 [backgrounding]

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 投票
0 回答
125 浏览

ios - 检测到在后台拍摄了一张新照片

在这个问题上我已经挣扎了很长一段时间。我有一个在 iPhone (>= iOS7) 上运行的应用程序,我需要选择用户拍摄的所有照片(当然是在请求相机访问权限之后),并在满足特定条件时上传它们。显然,由于用户是从相机应用程序而不是从我的应用程序内部拍照,所以当拍照时,我的应用程序是后台的,并且用户在拍照后并不总是重新打开应用程序。由于我没有在我的应用程序中使用 GPS/VoIP/Accessory,因此我没有在我的应用程序的 plist 中启用这些权限(我只启用了获取和通知,因为我使用了这些权限)。要知道用户拍摄了一张新照片,我尝试了两种不同的方法:(1)使用观察者和(2)从 ALAssetLibrary 检索最后一张照片,将最后一张照片的创建日期保存在内存中,并将其与检索到的最新照片进行比较。当应用程序在前台运行时,这两种方法都可以很好地工作(这意味着如果我唤醒我的应用程序并执行它们,我可以使用这两种方法中的任何一种正确获取图片),但我还没有找到一种方法来使这两种方法都能正常工作背景。在第一种情况下,观察者仅在应用程序处于前台时或前三分钟收到通知,如果我有任何长时间运行的任务正在运行(有 3 分钟的限制)。在第二种情况下,问题类似(我在长时间运行的后台任务上运行扫描,扫描 2 分钟后让它休眠,然后启动另一个后台任务,执行相同的操作);似乎即使我在另一个中生成多个后台任务,3 分钟的时间限制仍然在任务之间强制执行...... 我确信有一种方法可以实现这一点,因为我在 App Store 上看到至少有一个其他应用程序完全做到了这一点,没有任何特殊权限(VoIP/GPS/附件等)。任何人都有提示让我以正确的方式实现这一目标?提前致谢!

0 投票
2 回答
8613 浏览

c# - 使用 Xamarin.Forms 作为背景

我目前正在计划一个 Xamarin.Forms 应用程序,这样做时我遇到了一个似乎没有答案的问题。
该应用程序必须使用 WCF 服务来获取其数据并告诉服务执行某些任务。当应用程序处于活动状态时,这样做很容易。但是应用程序必须做一些事情。在某些情况下,每 x 分钟调用一次服务以刷新数据并为用户创建通知。我已经阅读了有关 iOS 中的后台或 Android 中的服务的一些内容,但 Xamarin.Forms 应用程序似乎没有办法拥有一种通用的后台工作方式。那么,当应用在 Xamarin.Forms 中处于非活动状态时,如何访问 WCF 服务并处理数据?

0 投票
1 回答
278 浏览

ios - 在 AVCaptureSession 中捕获音频时取消背景音乐

当我在我的 iOS 应用程序中时,我希望背景音乐继续播放。但是,每当我进入我的应用程序时,背景音乐就会被取消。我将问题隔离到 AVCaptureSession 的音频部分:

我尝试通过两种方式立即设置 AudioSession:

或像这样:

但都没有奏效。

0 投票
1 回答
1228 浏览

android - 每次使用标签创建新的 android 唤醒锁都会返回相同的唤醒锁吗?

标题可能很神秘。我的问题很简单,我创建了唤醒锁:

然后我在另一个地方再次执行此操作,使用相同的标签,我是否获得具有获取引用的相同唤醒锁?

0 投票
0 回答
224 浏览

c# - 创建检查远程服务器的推送或后台服务

我需要什么的总体思路:

我正在将一个 Android 应用程序移植到 iOS(使用 Xamarin,但我可以很容易地从目标 C 转换为 C#),它严重依赖 AlarmManager 对我不拥有的网站上的 HTML 页面进行背景检查。AlarmManager 本质上是一个 Android 的任务调度器。用户可以将频率设置为他们想要的任何值。

我试过的:

后台抓取:

Perform Fetch 只是直接从不调用。我需要一些一致性(休息一分钟没什么大不了的……但几个小时就不行了)。我让它运行,它只是直接从来没有工作过。我已经阅读了很多关于 PerformFetch 工作原理的文章,但我认为它不会给我用户所需的关键响应时间。

UserNotifications:iOS 10 的新增功能是可以重复通知。但是,这会重复相同的通知。

推送警报:

我自己的服务器

我可以设置一个服务器来进行检查,然后向 Firebase Cloud Messaging 发送一条消息,向用户发送一条关于新项目的消息。我在 Android 版本上大约有 500 个活跃用户,如果他们每 5 分钟检查 5 个不同的页面,以 90 kbs 的速度检查,那大约是每小时半个 gig 的带宽。

所以缺点是:

  • 过多的带宽使用将使我的家庭互联网速度变慢
  • 我需要自己保护它
  • 停电有时会持续数天,使最终用户置身事外
  • 他们的服务器可以在任何给定时刻从我的机器上启动,如果发生这种情况,我可以从我的 ISP 获得一个新的 IP 地址......假设他们允许

使用我的共享主机,每 15 分钟设置一次 cronjob

我可以设置一个 cronjob 每 15 分钟发出一次警报。这不是最快的,但比依赖第一个选项要好得多(因为它永远不会被调用)

  • 再一次,我只能任由他们的服务器不让我离开。如果他们这样做,该应用程序将完全崩溃。
  • 共享主机可能会让我对他们的服务器施加太大压力(Hostgator 声称无限带宽,我不确定他们是否希望我这样做)
0 投票
0 回答
272 浏览

ios - 再次进入前台时 AVAssetReader 失败

在我的应用程序中,我正在使用AVAssetReaderAVAssetWriter组合处理视频。

当应用程序被发送到后台时,我会暂停视频写入(因此也不再阅读)。再次进入前台时,我想继续该过程。但是,当我尝试copyNextSampleBuffer从阅读器的输出中读取时,阅读器失败并出现以下错误:

在应用程序暂停一段时间后,我有什么办法可以继续阅读资产样本?

12131PS:我在任何框架头文件中也找不到错误代码...

0 投票
0 回答
106 浏览

c# - 带有 HTML 请求的 C# Xamarin IOS 后台循环

我正在寻找一种每 120 分钟在后台执行一次 html 请求的方法

该计划是:

  1. HTML 站点上的请求保存响应(手机上的本地 HTML 字符串)

  2. 120 分钟后再做一次(间隔可以不同)

  3. 如果有任何更改,则比较字符串发送本地通知

有人知道什么好方法吗?那可能吗?

片段会很棒。

感谢您的时间和帮助。问候

0 投票
0 回答
86 浏览

ios - Xamarin - IOS:即使手机处于锁定或睡眠状态,也每 N 分钟发送一次 Web 请求

我一直在尝试有效地安排需要每 N 分钟运行一次的 IOS 上的任务,但没有成功。通常在 Android 中,您可以使用 AlarmManager 和 setAlarmClock 方法来实现这一点,即使手机正在打瞌睡,它也会像魅力一样工作。在 IOS 中,我发现了一些接近的东西,但问题是你无法执行你想要的代码。基本上你可以播放警报声。即使 iPhone 正在休眠,我也需要每 N 分钟向中央服务器发送一次网络请求。

可能吗?

感谢您的时间

0 投票
2 回答
498 浏览

ios - Xamarin - IOS - CLLocationManager:在 iphone 锁定或睡眠时获取位置更新

我正在尝试查找此信息,但到目前为止我没有成功。我知道 CLLocationManager 具有后台功能。它有很好的记录。我想知道 CLLocationManager 是否正确配置为后台,即使手机被锁定和睡眠,它是否会触发标准位置更新?如果是,假设我的应用程序没有被杀死,它会唤醒它吗?我可以执行代码来处理位置修复吗?我可以做测试,但我害怕我缺乏知识会给我错​​误或不完整的结论。这就是我问社区的原因。

谢谢你的时间

0 投票
1 回答
164 浏览

bash - 无法在 .sh 脚本中使用“&”作为后台 HTTPie http 请求

这是如何从 BASH 提示中工作的:

...但从 a 执行时失败.sh

?

编辑:http是 HTTPie

编辑:type httphttp is hashed (/testproj/env/bin/http)

编辑:一个人可以重现错误http http://www.google.com </dev/null &(感谢@e36freak)

编辑:来自 IRC 上的 e36freak:

这似乎是一个问题,stdin
我得到了同样的错误,只是http http://www.google.com </dev/null
httpstdin附加到tty它看起来
无论出于何种原因
在手册页中找不到它,但我确定它就在那里