当前位置: 首页 > 面试题库 >

后台的iOS计时器

轩辕成天
2023-03-14
问题内容

我希望我的iOS应用程序在后台运行并且关闭时启动计时器。计时器必须每30分钟检查一次新的通知。在计时器函数中,它们每30分钟调用另一个函数showNotification()。

当应用未在后台运行/在后台运行时,我该如何执行此计时器以及必须在哪个位置调用计时器。


问题答案:

如果应用程序不在前台且具有100%的确定性,则无法执行任何操作。您可以使用后台获取来定期唤醒,但是您无法控制它何时发生。

尽管存在一些技术上的变通办法,甚至可能还有一些棘手的解决方案(在后台播放静音音频),但在我看来,无需使用计时器和后台获取就可以解决您的问题。

只需实现远程通知。当您的iOS收到有关您的应用程序的通知时,它将唤醒该应用程序并等待一段时间。然后,您可以控制向用户显示哪些通知,甚至可以在后台加载一些数据。

广义而言,您需要:

  • 在应用启动时注册远程通知(通常在application:didFinishLaunching:中)
  • 当您收到通知令牌时,将其发送到将向您发送通知的Web服务器(此令牌可以更改,因此请确保在启动应用程序时始终将其发送到Web服务器)
  • 当有新内容可用时,您的Web服务器可以使用令牌将有效载荷发送到您的应用程序(您选择的语言可能已经具有用于此的库。例如,如果您使用Ruby,则有Houston)


 类似资料:
  • 我想实现一个长时间运行的后台计时器,它定期将用户的位置发送到服务器。 为此,我为设置模式,并在应用程序转到后台时调用。对于,我使用方法(不希望使用重大更改,因为我需要高精度的定位)。 但是大约在应用程序进入后台26分钟后,它会停止向服务器发送位置。但是应用程序没有崩溃,所以在我把应用程序带到前台后,它可以恢复计时器。 26分钟来自实验,iOS6.1,苹果5。 这里有一些问题,, > 我不明白为什么

  • 我正在开发一个示例应用程序,跟踪用户的位置在后台,但我不想离开位置服务始终启用,但我的计时器中的一些行为不正常。 我的想法是,每x分钟,服务就会继续,当它有一个正确的新位置时,它会再次发布,现在设置为10秒,只是为了测试。(明显的位置变化不起作用,不够准确) 我搜索了很多(iOS开发中心StackOverflow),发现了“新的”后台位置功能,它允许您在进入后台后10分钟内运行代码,使用的是启动后

  • 当开始播放时,会抛出以下断言: 进入后台状态后,抛出以下断言,音频挂起: 这在iOS 12中是不发生的,当它在后台时,音频会正常播放。

  • 问题内容: 我正在为Swift编写的iOS游戏。我试图找到一种方法来检测应用程序何时进入后台模式或由于其他原因而中断,例如电话,但找不到任何东西。我该怎么做? 问题答案: 您可以将观察者添加到视图控制器中: 编辑/更新: Xcode 11•Swift 5 iOS13或更高版本 iOS12或更早版本 并将选择器方法添加到视图控制器,该方法将在您的应用收到该通知时执行:

  • 我正在编写一个应用程序,需要高精度和低频率的背景位置更新。解决方案似乎是一个后台NSTimer任务,它启动location manager的更新,然后立即关闭。这个问题以前有人问过: 如何在iOS应用程序中每n分钟更新一次后台位置? 在应用程序进入后台后每n分钟获取一次用户位置 iOS不是典型的后台位置跟踪计时器问题 iOS长时间运行的后台计时器,具有“位置”后台模式 基于位置跟踪的iOS全职后台

  • 我们正在开发一个使用pjsip进行VoIP通话的iOS应用程序。当应用程序在前台时,或者如果我们在前台开始通话,然后将应用程序放在后台,一切都很好。 但当应用程序处于后台时,当从BLE设备建立特定连接时,我们需要启动VoIP呼叫。 因此,基本上BLE设备与应用程序对话,并要求它开始通话。这不管用。 血糖中的音频已启用。 这在iOS上可行吗?我在苹果的文档中找不到任何关于这种情况的参考。 我们正在使