2011-10-19 108 views
2

我有Android應用程序,其中服務運行24/7電話每5分鐘獲取一次GPS位置併發送到服務器。這是要求。是否可以爲Windows Phone 7.5或iOS創建後臺服務?

我可以爲iPhone編寫相同的服務嗎?我不確定是否有可能。

我可以爲WP7編寫相同的服務嗎?我認爲之前無法運行服務。 7.5有什麼變化嗎?

編輯: 我不知道爲什麼有人downvoted。這是具體的是/沒問題。

回答

6

在WP7中引入芒果背景任務是可能的。事實上,有一個內置的機制來輪詢由API提供的更加省電的GPS。

不知道它是否下降到5分鐘,認爲它是更大的像30分鐘。它也不能與Windows服務相媲美 - 所以不要隨心所欲。背景任務受到嚴格限制,以保持手機對用戶的響應 - 要利用它們,您需要滿足要求。

後臺任務介紹,它也談到了我提到的GPS事情。整個系列是非常值得您的帶寬和時間下載和觀看:

http://channel9.msdn.com/Series/Mango-Jump-Start/Mango-Jump-Start-06-Windows-Phone-Multi-tasking--Background-Tasks

不能回答的iPhone。

+0

你能詳細一點嗎?當GPS輪詢時,我可以運行我的代碼,或者直到應用程序可見時才轉到某個存儲空間?我需要立即將這些GPS位置發送到服務器。可能? – katit

+0

是的可能,瞭解後臺任務。但是,你會發現你被迫在嚴格的條件下運行(處理能力很差,時間很短),以便手機保持用戶體驗。 –

+0

亞當謝謝。我希望這是可能的8個月前,當我寫的Android應用程序。我的特殊需要30分鐘仍然太多。有什麼方法可以模擬較小的跨度?也許有不同的時間運行多個任務? – katit

1

它也可能在ios4 +上,但它不會被時間觸發。無論是註冊精確(gps)還是模糊的位置(wifi和wan位置),都可以在後臺獲取,但並不總是可以將該數據發送到服務器,因爲在後臺10分鐘後,您的應用不允許保留一個網絡連接活着。所以你必須緩衝這些數據,並且必須等到用戶啓動你的應用程序。

iOS的推通知,這取決於所需的準確性您的應用程序,並取決於distance-filter

IOS的​​應用服務和活動(如在機器人)之間沒有什麼不同。它全部結合在一個應用程序中。

+0

那麼,像我的網站上的應用程序基本上不可能與iOs? – katit

+0

是。跟蹤是可能的,但只有當應用程序「打開」(不在後臺)時才能以可靠的方式發送實時流量 – thomas

+0

我知道這是不可能的。在我的情況下 - 驅動程序可能每天使用一次應用程序發送消息或獲取負載信息。但辦公室需要知道他在哪裏。所以,大部分時間都關閉了應用程序(90%的時間)。我是否正確理解在上次應用程序使用大約30分鐘後無法將更新發送到服務器? – katit

0

在WP7芒果,你不能從後臺代理獲取新的位置。以下代碼將返回最新可用位置(最長15分鐘):

private GeoPosition<GeoCoordinate> GetCachedLocation() 
{ 
    GeoCoordinateWatcher geoWatcher; 
    geoWatcher = new GeoCoordinateWatcher(); //Start a new watcher with default level of accuracy 
    geoWatcher.Start(); 
    //Get latest cached position 
    GeoPosition<GeoCoordinate> position = geoWatcher.Position; 
    geoWatcher.Stop(); 
    return position; 
} 

如您所見,它使用GeoCoordinateWatcher。根據MSDN(http://msdn.microsoft.com/en-us/library/hh202962(v=vs.92).aspx):

此API用於獲取設備的地理座標, 支持在後臺代理中使用,但它使用緩存的 位置值而不是實時數據。設備每隔15分鐘更新緩存的位置值 。

除此之外,我還沒有找到很多信息。你可以創建一個自定義精度的GeoCoordinateWatcher,但我沒有測試過。也許它會返回滿足精度要求的最新可用緩存位置。

相關問題