2012-02-16 31 views
2

我想更新一些数据到我的应用程序。考虑应用程序处于后台状态,它既不是VoIP或音乐,也不是GPS。是否可以更新/发送数据到后台的应用程序?更新我的应用程序,当它在后台

注意:我不想通知用户,以便应用程序变为活动状态。

任何人都可以帮助我?

+0

参见[链接] [1] [1]:http://stackoverflow.com/questions/4594348/iphone-connecting-to-server-in-background/ – Apurv 2012-02-16 11:21:19

+0

我看了苹果文件,关于运行有限和长期运行的任务。但在这里,我想从服务器发送数据到应用程序,无论状态 – Cyril 2012-02-16 11:42:32

回答

4

答案是肯定的,不是。

Apple确实允许您的应用程序在后台完成漫长的过程。但是,如果您不属于Voip,音乐或GPS类别,则无法在后台运行。

例如,如果您想要将某些数据发送到服务器,这可能需要一些时间,那么您可以将该进程标记为返回执行直到完成(或已过10分钟)。

你会发现一些有关Executing a Finite-Length Task in the Background

没有办法运行定时器或研究背景一样,任何东西,你只能完成你开始应用在背景执行前的任务。

+0

@ rckoenes.Thanks您的答复。我已经通过了多任务和后台执行苹果文档。我想用其他方式来做。我想从服务器发送通知/数据到应用程序(在后台运行)。我知道,通过发送推送通知,我们可以使该应用程序处于活动状态,我不想让应用程序进入前台。该应用应该保持在后台并更新数据。那可能吗 ?? – Cyril 2012-02-16 11:39:07

+0

不,这是不可能的。发送推送通知也不会将应用程序推到前台,只有在用户打开推送通知后,您才会到达前台。 – rckoenes 2012-02-16 12:13:20

+0

对不起,你误解了我。我知道发送只有推送通知不会使应用程序成为前景,除非用户响应通知。我试图从服务器更新数据,当应用程序在后台。 – Cyril 2012-02-16 12:37:18

0

显示的警报是内置功能。你无法为此做任何事情。如果从服务器触发通知并且应用程序在后台,则会显示警报。 我在过去为这个东西做了很多搜索。

+0

是的。我知道用户将会收到任何费用,至少有声音。但我不想将应用程序带到前台并更新我的数据。在提醒用户之后,我想更新数据到应用程序(而不是让应用程序前台) – Cyril 2012-02-16 12:07:18

+0

首先,您无法捕获“查看”按钮的事件,因此如何处理应用程序来到前景。还有一件事你也会违反HIG指导方针。 – iamsult 2012-02-16 12:12:18

+0

我不想让应用程序自己移动到前台或发送任何推送通知。让应用程序处于后台状态,我想更新它的背景。 – Cyril 2012-02-16 12:43:15

0

我在我的一项工作中完成了这项工作。这就是我所做的。

当应用程序中输入:- (void)applicationDidEnterBackground:(UIApplication *)application

我将数据发送到使用ASIHTTPRequest财产服务器: [request setShouldContinueWhenAppEntersBackground:YES];

但之后结束了,我没有做了连接或数据操作。所以,只有连接在后台运行,而不是你的应用。连接完成后,您无法完成很多工作。

正如@rckoenes被提到的那样,你可能不会执行太长的任务。

-1

如果您希望在应用程序在后台运行模式下运行时更新服务器数据,那么该应用程序应该在当时处于活动状态。只有在使用“音乐,voip或位置跟踪”时才能激活,否则应用程序将在后台模式下暂停。

避免这种情况的一种方法是开发您的应用程序并将其设置为使用,例如“位置跟踪”。这将使其能够满足活动后台进程的要求,并且您将能够更新服务器数据。

不幸的是,我不知道应用程序是否可以通过应用程序商店的批准与此设置。 但是,如果您对此解决方案感兴趣,可以查找示例here

相关问题