我想将一些数据更新到我的应用程序。考虑应用程序处于后台状态,它既不是Voip,也不是音乐或GPS。是否可以更新/发送数据到后台的应用程序?
注意:我不想通知用户,以便应用程序变为活动状态。
任何人都可以帮助我吗?
答案 0 :(得分:4)
答案是肯定的,不是。
Apple确实允许您在后台完成漫长的过程。但是如果你不属于Voip,音乐或GPS类别,那么你就无法在后台运行。
例如,如果您想将某些数据发送到服务器(这可能需要一些时间),那么您可以将该流程标记为已执行,直到完成(或已经过去10分钟)。
您会找到一些关于Executing a Finite-Length Task in the Background
无法在背景中运行计时器或任何类似的东西,您只能完成在应用程序背景化之前启动的任务。
答案 1 :(得分:0)
显示的警报是内置功能。你不能为此做任何事情。如果从服务器触发通知并且应用程序在后台,则将显示警报。 我过去为这些东西做了很多搜索。
答案 2 :(得分:0)
我在我的一项工作中完成了这项工作。这就是我所做的。
当应用程序输入:- (void)applicationDidEnterBackground:(UIApplication *)application
我使用带有属性的ASIHTTPRequest
将数据发送到服务器:
[request setShouldContinueWhenAppEntersBackground:YES];
但完成后,我没有再进行连接或数据操作。因此,只有连接在后台运行而不是您的应用程序。连接完成后你做不了多少。
提到@rckoenes时,你可能不会执行任务太长时间。
答案 3 :(得分:-1)
如果您希望在应用程序以后台模式运行时更新服务器数据,则应用程序应在此时处于活动状态。它只能在使用“音乐,音乐或位置跟踪”时才能激活,否则应用程序将在后台模式中暂停。
避免这种情况的一种方法是开发您的应用程序,并将其设置为使用,例如“位置跟踪”。这将使其满足活动后台进程的要求,您将能够更新服务器数据。
不幸的是,我不知道该应用是否可以通过此设置通过应用商店批准。 但是,如果您对此解决方案感兴趣,可以找到示例here。