2012-02-16 60 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

相關問題