2011-10-19 7 views
2

私はAndroidアプリを持っており、24時間年中無休の電話が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-アプリは、サービスや活動(アンドロイドのように)との間で差がないに応じて、あなたのアプリに通知をプッシュします。それはすべて1つのアプリに結合されています。

+0

私のウェブサイトのようなアプリは、基本的にはiOではできません。 – katit

+0

です。トラッキングは可能ですが、アプリが「オープン」(バックグラウンドではない)の場合、ライブトラフィックの送信は信頼できる方法でのみ可能です。 – thomas

+0

私はそれが可能ではないことを理解しています。私の場合、ドライバはアプリを使って1日に1回、メッセージを送信したり、負荷情報を取得したりします。しかし、事務所は常に彼がどこにいるかを知る必要があります。だから、アプリはほとんどの時間(時間の90%)を閉じた。前回のアプリの使用から約30分後にアップデートをサーバーに送信できないことを正しく理解していますか? – katit

0

あり、「いくつかの制限」(ロット)がここにもありますが、多分マイクロソフトのプッシュサービスはあなたのために働く:

Push Notifications Overview for Windows Phone

ポーリングは、このための良い習慣ではありませんので、プッシュはこの中で、より良い作品ケース。

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を作成することはできますが、これはテストしていません。おそらく、それは、精度要件を満たす最新の利用可能なキャッシュされた場所を返すでしょう。

関連する問題