我有Android應用程序,其中服務運行24/7電話每5分鐘獲取一次GPS位置併發送到服務器。這是要求。是否可以爲Windows Phone 7.5或iOS創建後臺服務?
我可以爲iPhone編寫相同的服務嗎?我不確定是否有可能。
我可以爲WP7編寫相同的服務嗎?我認爲之前無法運行服務。 7.5有什麼變化嗎?
編輯: 我不知道爲什麼有人downvoted。這是具體的是/沒問題。
我有Android應用程序,其中服務運行24/7電話每5分鐘獲取一次GPS位置併發送到服務器。這是要求。是否可以爲Windows Phone 7.5或iOS創建後臺服務?
我可以爲iPhone編寫相同的服務嗎?我不確定是否有可能。
我可以爲WP7編寫相同的服務嗎?我認爲之前無法運行服務。 7.5有什麼變化嗎?
編輯: 我不知道爲什麼有人downvoted。這是具體的是/沒問題。
在WP7中引入芒果背景任務是可能的。事實上,有一個內置的機制來輪詢由API提供的更加省電的GPS。
不知道它是否下降到5分鐘,認爲它是更大的像30分鐘。它也不能與Windows服務相媲美 - 所以不要隨心所欲。背景任務受到嚴格限制,以保持手機對用戶的響應 - 要利用它們,您需要滿足要求。
後臺任務介紹,它也談到了我提到的GPS事情。整個系列是非常值得您的帶寬和時間下載和觀看:
不能回答的iPhone。
它也可能在ios4 +上,但它不會被時間觸發。無論是註冊精確(gps)還是模糊的位置(wifi和wan位置),都可以在後臺獲取,但並不總是可以將該數據發送到服務器,因爲在後臺10分鐘後,您的應用不允許保留一個網絡連接活着。所以你必須緩衝這些數據,並且必須等到用戶啓動你的應用程序。
iOS的推通知,這取決於所需的準確性您的應用程序,並取決於distance-filter
IOS的應用服務和活動(如在機器人)之間沒有什麼不同。它全部結合在一個應用程序中。
還有「一些限制」(很多)這裏,但也許微軟推送服務,爲你的作品:
Push Notifications Overview for Windows Phone
因爲投票是不是一個很好的做法,推動工作更好地在這案例。
在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,但我沒有測試過。也許它會返回滿足精度要求的最新可用緩存位置。
你能詳細一點嗎?當GPS輪詢時,我可以運行我的代碼,或者直到應用程序可見時才轉到某個存儲空間?我需要立即將這些GPS位置發送到服務器。可能? – katit
是的可能,瞭解後臺任務。但是,你會發現你被迫在嚴格的條件下運行(處理能力很差,時間很短),以便手機保持用戶體驗。 –
亞當謝謝。我希望這是可能的8個月前,當我寫的Android應用程序。我的特殊需要30分鐘仍然太多。有什麼方法可以模擬較小的跨度?也許有不同的時間運行多個任務? – katit