iOS中是否有类似于Android的服务(Services)?

17

我希望每12小时检查我的应用程序中的数据库,以查找具有相应日期的日期列行。这可以通过在Android中编写服务来完成。但是,在iOS中是否有与服务等效的内容,以便可以实现我的要求?


你想检查应用程序何时在后台运行吗? - Durgaprasad
我想检查应用程序是在后台还是打开的。 - viks
我认为当应用程序在后台运行时这是不可能的。 - Prasad Devadiga
在前台,你可以使用NSTimer来实现。在后台大多数情况下不可能。 - Durgaprasad
4个回答

11

不,SDK或iPhone/iPad系统里没有这样的东西。你只能编写会影响应用程序生态系统的代码,而不能影响操作系统。 当你的应用程序关闭后,除非用户重新打开它或者打开与您的应用程序相关的推送通知,否则不会有任何动作。

如果用户为您的应用程序批准了基于位置的服务,则有几种方法可以在完全关闭您的应用程序时运行短期后台进程。其中之一是使用监视基于形状的区域,这基本上意味着如果用户离开区域X/进入区域Y, 打开应用程序并在关闭之前运行几个命令。

在iOS中实现您想要的功能的聪明方法(也是我唯一能想到的方法)是在服务器上运行该服务,并在打开应用程序时从服务器提取数据。


在iOS13+中,您可以使用BackgroundTasks安排后台工作,以便检查和更新数据库。 https://developer.apple.com/documentation/backgroundtasks,https://www.andyibanez.com/posts/modern-background-tasks-ios13/ - Lorraine R.

2

“后台处理”模式(iOS13+)在这种情况下更加适用-https://developer.apple.com/documentation/backgroundtasks。苹果可能不会批准使用“后台获取”模式来执行问题描述中所述的工作,因为它被指定为在后台获取内容以更新应用程序界面。 - Lorraine R.

2

1

1
这与提问者所问的无关。在 Android 中,服务在应用程序完全关闭时运行。您提供的链接讨论前台或后台。 - Segev
2
@EXEC_BAD_ACCESS 其实,如果由一个应用程序启动,Android服务(services)在应用程序完全关闭后不会运行。它们可以在后台运行更长的时间,但仍与启动它们的应用程序相连。 “服务是表示应用程序希望执行长时间操作而不与用户交互或为其他应用程序提供功能的应用程序组件。”(Android文档)。因此,如果您强制关闭一个应用程序,它将终止所有正在运行的服务。 - danypata
链接已经失效。建议在StackOverflow上提供实际答案,仅将链接作为参考。 - Xitcod13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接