私は2016年に位置履歴UWPアプリを作成した経験がありますが、私はそれについて私の考えを共有することができます。これがあなたに役立つことを願っています
1)バックグラウンドタスク
は、本質的に、私は、この方法は、位置追跡のために良好ではないことを信じ。理由は.. 1)はい、15分の間隔は場所の追跡に長いです.2)OSは、アプリの通知の有無にかかわらず、バックグラウンドタスクの実行を取り消して抑制することができます。この状況をアプリケーションから管理するのは難しいです。
2)この機能で拡張実行
、あなたのアプリがアプリがバックグラウンドまたは最小化されているとき、サスペンドに入ることを防ぐことができます。アプリケーションの実行を継続する - これは、1分、45秒などの好みの間隔で位置を取得するために順序ディスパッチタイマーソリューションを使用できることを意味します。また、Extended Executionには、 "ExtendedExecutionReason.LocationTracking"列挙型を使用するオプションがあります。
しかし、この機能にも1つの考慮点があります。 OSは、いつでもあなたのセッションを取り消すことができます - バッテリーの不足、CPU時間の不足、リソースの排除など。 セッションが取り消されたとき、何もすることはできません。セッションを取り消すことはできません解決されない - 直ちに取り消される。これは、位置データの損失を意味します。 私のケースでは、この場所データの損失は、私のAppシナリオでは受け入れられません。私は拡張された実行が私のアプリには適していないことに気付いた。
しかし、フィットネスアプリや趣味アプリなどのように受け入れられるのであれば、拡張実行が適しています。
ノート
- あなたはAC電源を使用している場合は、REVOKEはまれになります。拡張実行は良いオプションです。
- 制限機能を使用して、拡張実行の取り消しを防止できます。ただし、この機能を使用する場合は、ストアを使用してアプリをデプロイすることはできません。
3)GetGeopositionHistoryAsync
私は、これはUWPアプリスキームのために最善であると信じている - BackgroundTaskのも拡張実行に依存しません。 OS自体が位置履歴を保持しているので、このAPIを使って検索することができます。私たちは自分で定期的に位置情報を取得する必要はありません。
しかし、1つの障壁があります - このAPIを使用するには、マイクロソフトから許可を得る必要があります。この機能は制限された機能の一種です。 私は認可を取得しようとしていないので、これは難しいかどうかあなたに言うことはできません。
App capability declarations
pnp0a03恥知らずな要求...あなたは多分別の勝利のdevのMVPを助けるためにいくつかの時間を持っていますか? ;)私たちの趣味アプリでは、この拡張された実行を追加しようとしましたが、実際にはいくつかのユーザーエラーが発生して、時々失敗することがあります。多分、これを改善するために調整できるものを少し教えてください。コードはここにあります:https://github.com/AppCreativity/Kliva/blob/master/src/Kliva/ViewModels/RecordViewModel.cs#L176 – Depechie
@Depechieすみませんが、私はあなたのプロジェクトを助けることができません - 私は私のプロジェクトの時間。実際、私は2016年のプロジェクトでWin10M実装の拡張実行と奇妙な動作の難しさを克服することができず、プロジェクトを中止しました。その後、私は場所の歴史apiの存在が気づいたが、それは遅すぎた。 – pnp0a03
自分でジオ履歴機能を使って再生できません。しかし、理想的ではないサイクリング追跡アプリケーションの場合、私は次のように推測しています。/ – Depechie