在后台运行时安排iOS应用任务的计划

6
我正在为客户编写一款应用程序,用户将在白天输入数据,然后在晚上的特定时间(比如午夜),该用户当天的数据应上传到服务器。
因此,我需要在我的应用程序中安排一个方法在午夜运行,即使应用程序在后台运行。然后,该方法将与服务器同步收集的数据并下载任何更改。
为了实现这一点,我想象需要将应用程序设置为始终在后台运行(即超过10分钟),然后安排在特定时间后运行函数。我是否可以通过使用performSelector: withDelay:来实现?或者我需要更强大的东西,因为应用程序将在后台运行?
感谢大家!
2个回答

2
您可以查看UILocalNotifications。您可以安排事件发生,然后设置一个标记图标,让用户知道它是否处理了某些内容。

这里是关于它们的信息HERE


我不希望用户了解任何关于数据同步的信息,因此理想情况下我会(a)在午夜安排本地通知,然后(b)在午夜时运行通知代码,然后执行数据同步,但不会在屏幕上弹出任何通知。这听起来可行吗?或者说,如果要使用本地通知,我是否必须在屏幕上弹出警报? - theDuncs
我认为你可以在不向用户显示视觉指示器的情况下完成你想要做的事情。 - LJ Wilson
从我所看到的,UILocalNotification将被安排在午夜,但如果应用程序在午夜处于后台状态,则会显示警报。用户必须触摸警报以处理代码。您知道有没有办法让应用程序在LocalNotification应该显示给用户的时间点在后台运行同步?或者一旦它进入后台,它就不受应用程序控制了吗? - theDuncs
据我所知,一旦应用程序进入后台,处理事件的唯一方法是使用本地或推送通知。 - LJ Wilson

0

我认为你的应用程序或者你想要做的事情不符合苹果对于长时间运行后台任务的要求。请查看Apple文档中的“实现长时间运行的后台任务”部分。


这是一个很好的观点 - 但实际上该应用程序可能符合持续位置跟踪的条件。午夜数据同步的原因是因为在白天,用户很可能处于无网络连接状态。因此,最好的选择可能是跟踪主要位置变化,并在每次变化时检查网络连接情况。如果用户信号足够强,同步可以从那里开始,然后关闭数据同步直到第二天。感谢您的帮助! - theDuncs

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