3

OS が提供するバックグラウンド位置追跡機能を利用する WP8 アプリを開発中です。アイデアは、ユーザーの位置を監視し、特定の種類の場所の近くにいるときに通知することです。

これまでのところ、すべて正常に機能しているように見えます。位置追跡を実行すると、期待どおりに機能します。

問題は、約 4 時間後にバックグラウンド アプリがタイムアウトし、位置追跡が停止することです。

Microsoft がバッテリーの寿命を延ばすなどの目的で、なぜそうしたのかは理解できます。ユーザーがこのアプリを実行することを選択し、バッテリー ヒットの可能性を認識した場合、無期限に実行できるはずです。

誰もこれについて経験がありますか?ストアには、この問題に遭遇した他のアプリが何百もあるに違いありません。おそらく、位置追跡を実行し続ける何らかの方法があるに違いありません。

追跡の実行中に (DispatcherTimer を使用して) ライブ タイルを定期的に更新しようとしましたが、これではアプリを維持するのに十分ではないようです :(

誰にもアイデアはありますか?

ありがとう。

4

1 に答える 1

3

目的の動作を実現する方法はありません。アプリは、次のいずれかの条件で非アクティブ化されます。

  • アプリはアクティブな位置追跡を停止します。アプリは、Geolocator クラスの PositionChanged および StatusChanged イベントのイベント ハンドラーを削除するか、GeoCoordinateWatcher クラスの Stop() メソッドを呼び出すことによって、位置の追跡を停止します。
  • アプリは、ユーザーの操作なしで 4 時間バックグラウンドで実行されました。
  • バッテリー セーバーが有効です。
  • デバイスのメモリが不足しています。
  • ユーザーが電話で位置情報サービスを無効にします。
  • 別のアプリがバックグラウンドで実行を開始します。

出典: Windows Phone 8 のバックグラウンドでの位置追跡アプリの実行

あなたができることは、アプリが非アクティブ化される前にトースト通知を表示して、ユーザーにアドバイスし、アプリに戻るようにして、他の 4 時間の期間を延長することです。

ユーザーの介入なしに実行し続ける方法はありません。

于 2013-08-23T15:33:05.433 に答える