簡體   English   中英

iOS中的定期后台任務

[英]Recurring background task in iOS

我想制作一個應用程序,該應用程序會定期,不定期地自動從用戶定義的站點列表中下載一些數據,以便它可以基於該數據分析並顯示歷史圖表和其他報告。

如果要在Windows中執行此操作,則應使用系統任務計划程序; 如果我在Unix下,我會使用cron; 如果我使用Android,我會使用服務。 我想知道如何在iOS中進行操作。

就我的研究而言,在iOS中這並非微不足道,因為沒有公共接口可以執行此操作。 但是,有一些解決方法可以做到這一點:

  • 在應用程序喚醒時提取歷史數據:不可能,因為我不是數據提供者,並且我將支持的大多數數據提供者都不存儲或提供對歷史數據的訪問。

  • 我自己下載數據,並讓客戶在喚醒時將其拉出:不理想。 這不僅需要我付出額外昂貴的基礎架構(這意味着向我的用戶收取我打算成為免費應用程序的費用),而且某些內容提供商還需要登錄憑據。 我不想讓我的用戶的登錄信息訪問他們可以獲取的信息。

  • 如果時間戳過期,則當用戶將應用置於前台時,保存最后一次更新的時間戳並下載數據:這不符合我的目的,因為數據可能(並且有望)隨時間快速變化。 該應用程序的全部目的是定期自動下載此數據,以便一旦用戶再次打開該應用程序,所有歷史數據都可用。

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

  • 使用推送通知:由於這些只是需要用戶交互才能喚醒應用的通知,因此,它們的使用原因與本地通知相同。 似乎一旦應用喚醒,您就可以處理所有待處理的推送通知,但是我讀到您無法為這些通知定義自定義字段。

  • 使用后台任務:從技術上講,這似乎是所有選項中最有前途的,但這僅適用於非常特定類型的應用程序。 我猜想“ Newsstand應用程序”是我可以獲得的最接近的應用程序,它實際上是要在后台下載數據。 但是,它的名稱就是為了下載“雜志或報紙特刊”。 我想做什么是否可以歸為此類,完全取決於應用程序審閱者,我寧願制作的應用程序在技術上也可能被拒絕。

因此,我的問題是:還有其他我不知道的方法嗎? 是否有已經執行類似操作的應用程序?

您的評估是正確的。 您僅有的兩個選擇是托管自己的服務,該服務會定期下載數據(第二個要點)或使用Newstand。 對於Newstand,您的應用可能符合定義。 它可能僅取決於您如何表征應用程序。

在iOS中,您唯一的選擇實際上是使用服務器端基礎結構。 不要害怕向用戶收費; 如果您所提供的服務確實有用,人們會付費。 我確實知道這是很多額外的工作,等等,但這確實是唯一的方法。

報亭應用每天只能下載一次數據,並且它們仍然需要服務器端推送通知才能開始下載,因此您必須放置一些基礎結構。 不過,更重要的是,蘋果公司實際上對進入報亭非常嚴格。 我已經經歷過幾次:您不必一定是雜志/期刊,但是您的應用應該主要用於內容分發。

我認為您還有另一種選擇,即基於位置的更新,但這取決於您的用戶是否定期移動。

參見例如http://blog.instapaper.com/post/24293729146http://blog.news.me/post/21643399885/introducing-paper-boy-automatically-download-your-news

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM