2013-02-14 66 views
0

我想定期製作一個應用程序,它會自動從用戶定義的網站列表中下載一些數據,然後根據這些數據分析並顯示歷史圖表和其他報告。iOS中的經常性後臺任務

如果我在Windows中這樣做,我會使用系統任務計劃程序;如果我在Unix中,我會使用cron;如果我在Android中,我會使用服務。我想知道如何在iOS中執行此操作。

就我的研究而言,這在iOS中並不是微不足道的,因爲沒有公共接口來做這件事。然而,存在着一些變通方法來完成這件事:

  • 拉歷史數據,當應用程序被喚醒:不可能的,因爲我不是數據的提供者,而大部分的數據提供者的,我會支持唐不存儲或提供對歷史數據的訪問。

  • 自己下載數據並讓客戶在喚醒時將其拉出:不可取。不僅如此,我還需要額外的昂貴基礎設施(這意味着我的用戶將收取我打算成爲免費應用的費用),但也有一些內容提供商需要登錄憑據。我寧願不要求我的用戶的登錄信息來訪問他們可以得到的信息。

  • 如果時間戳已過期,當用戶將應用程序置於前臺時,保存上次更新的時間戳並下載數據:這不符合我的目的,因爲數據可能(並且預計會)在時間。這個應用程序的全部目的是定期自動下載這些數據,以便所有歷史數據在用戶再次打開應用程序時可用。

  • 使用本地通知:與以前幾乎相同。它需要用戶交互才能啓動應用程序,並且應用程序的整個要點是即使在用戶不使用該設備時也能獲取該數據。

  • 使用推送通知:因爲這些只是需要用戶交互才能喚醒應用程序的通知,所以它們不能用於與本地通知相同的原因。看起來你可以在應用程序喚醒後處理所有待處理的推送通知,但是我看過你不能爲這些通知定義自定義字段。

  • 使用後臺任務:這在技術上似乎是所有選項中最有希望的,但是這僅適用於特定類型的應用程序。我認爲「報亭應用程序」是最接近我可以得到的,它實際上是爲了在後臺下載數據。但是,正如它的名稱,它意味着下載「雜誌或報紙問題」。無論我想要做什麼都可以歸類爲這完全取決於應用程序審閱者,我寧願不製作可能會因技術性而被拒絕的應用程序。

所以,我的問題是:有沒有其他方法可以做到這一點,我不知道?是否有任何應用程序已經做了類似的事情?

+0

也許這[問題](http://stackoverflow.com/questions/6245763/ios-timed-background-processing)可能會有所幫助。 – esh 2013-02-14 07:37:30

+0

@ BlackFlam3不是真的。他的要求可以通過許多不同的機制輕鬆滿足。這個問題幾乎沒有我做的同樣的問題。 – 2013-02-14 07:52:56

回答

1

您的評估是正確的。您唯一的選擇是託管自己的服務,定期下載數據(您的第二個要點)或使用Newstand。對於Newstand,您的應用可能符合定義;它可能只是取決於你如何表徵應用程序。

+0

您是否有關於報攤應用程序特性的任何信息?你知道任何使用報亭功能的應用程序,它們並非嚴格意義上用於下載「雜誌或報紙問題」嗎? – 2013-02-14 07:54:46

1

你在iOS中唯一的選擇是服務器端基礎設施。不要害怕給用戶收費;如果你提供的服務真的很有用,人們會付錢。我確實知道這是很多額外的工作等,但它確實是唯一的方法。

報亭應用每天只能下載一次數據,而且他們仍然需要服務器端推送通知才能開始下載,因此您必須安裝一些基礎設施。但更重要的是,蘋果對於在報攤上實際上是相當嚴格的。我經歷過這幾次:你不一定非要成爲雜誌/期刊,但你的應用應該主要用於內容分發。

+0

我在蘋果論壇上問過,他們清楚地向報亭說不,所以就是這樣。放置我自己的服務器的問題是,一些內容提供商需要登錄憑據,並且我實在不想承擔存儲人員密碼的責任。另外,我完全受內容提供商的支配,如果他們希望阻止我的服務器,那麼我將不得不面對很多憤怒的客戶,因爲理論上甚至不需要使用我自己的服務器基礎結構。所以基本上我被搞砸了。 – 2013-02-14 16:44:08

+0

聽起來很喜歡它,的確..也許你可以做一個mac/win應用程序呢? – 2013-02-14 17:05:26

+0

那麼,我會去的Windows/Mac/Linux /安卓/ windowsphone。唯一缺少的平臺是iOS是一個恥辱。 – 2013-02-18 02:25:07