2016-05-13 11 views
2

私はthisと他の多くの質問を読んでいます。私は、特定の時間にバックグラウンドから実行するタスクをスケジュールする方法がないことを知りました。特定の期間にCLLocationManagerを実行する方法

私のアプリケーションでは、CLVisit apiを使用してサーバーに位置情報を送信します。しかし、私はユーザがチェックインを送信する時間範囲を選択できるようにしたい。バックグラウンドから特定の時間にstopMonitoringVisits()startMonitoringVisits()に異なる方法がありますか? didVisitコールを受信した後、私のアプリが常に監視し、その場所を送信することにしますか?

同じ質問は限りdidVisitコールバックを処理するときに訪問監視が(サーバーに場所を報告すべきかどうか)を正確にどのようなアプリのニーズ、常に上の監視を維持し、適切な取り扱いを決定しないようstartMonitoringSignificantLocationChanges()

答えて

3

を求めすることができます。

あなたは訪問の追跡はフレンドリー非常にバッテリーであるとiOSがでたり、アプリなしで、デフォルトでは、監視のようなものを実行して、バッテリーの上にこのように顕著なストレスを置くつもりはありません。

さらに、ベンダーが推奨し、API設計によって実施された優れた方法を迂回するように設計された「スマート」なトリックを使用しようとすると、必然的に「悪い習慣」が発生します。余分なバッテリー消費。

常に上の監視を維持する唯一の悪影響は、多くの「教育を受けた」iPhoneユーザーによる高バッテリの使用の兆候として考えられているステータスバー、中に実線の矢印です。これは主要な関心事である、とあなたのユースケースは、かなりの数のタイムスパンを扱っている場合(例えば、オフィスや自宅の場所を残して)場合は、適切なタイミング付近で監視を有効にするにはサイレントプッシュ通知を使用しようとするかもしれません。

+0

あなたは(一時停止/バックグラウンド状態で)サイレントプッシュコールバックを取得し、あなたはstartLocationUpdates' 'に許可されている意味?OK。その瞬間、あなたは180秒間追跡することが許可されているか、PLISTに設定された位置情報サービスを持っていると 'allowsBackgroundLocationUpdates'は' true'に設定されている場合には、無期限のでしょうか? – Honey

関連する問題