Using the Visits Location Service

7297 ワード

https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/using_the_visits_location_service
"Get location updates in the most power-efficient way, but less frequently than with other services."
ロケーション更新は最も効率的にインポートされますが、他のサービスに比べてインポートの頻度は低くなります.

Overview


オンサイト・レコード・サービスは、ロケーション・データを収集する最も効果的な方法です.このサービスを使用すると、位置更新は、ユーザーのアクティビティの価値が記録されている場合にのみ送信されます.各更新には、1つの場所とその場所にある時間が含まれます.このサービスは、ナビゲーションやその他のリアルタイムアクティビティには使用されませんが、ユーザーのモーションモードを識別し、アプリケーションの他の部分に適用できます.例えば、音楽アプリケーションは、ユーザが体育館に到着したときに体育館のプレイリストを準備することを可能にする.
Note
アクセス履歴の場所サービスには、権限が必要です.権限リクエストの処理方法については、ロケーション・サービスの「権限のリクエスト」を参照してください.
Requesting Authorization for Location Services
<>
履歴ロケーションサービスを開始するには、ロケーションマネージャのstartMonitoringVisits()を呼び出す必要があります.このサービスを使用すると、ロケーションマネージャは、自身のdistanceFilterおよびdesiredAccuracyのプロパティを無視します.したがって、2つのプロパティを設定する必要はありません.位置マネージャは、更新を遅延ゲートウェイ方法locationManager(_:didVisit:)に転送する.
もう1つの省エネ方法は、位置マネージャオブジェクトのpausesLocationUpdatesAutomatically属性をtrueに設定することである.このアトリビュートをオンにすると、ユーザが動かない可能性がある場合に位置ハードウェアを無効にすることで、消費電力を削減できます.更新を一時停止しても、更新の品質は低下しませんが、バッテリ持続時間は大幅に延長されます.位置マネージャのactivityTypeプロパティに適切な値を指定して、システムがいつ更新を一時停止できるかを指定する必要があります.
Note
ロケーションデータが不要になった場合は、ロケーションマネージャオブジェクトのstopMonitoringVisits()メソッドを常に呼び出す必要があります.位置更新を停止しない場合、システムはアプリケーションに位置データを転送し続け、ユーザーのバッテリーを消費します.

Receiving Visit Updates


アクセス履歴ロケーションサービスが開始されると、最近キャッシュされた値が遅延ゲートウェイに通知されます.新しいアクセス履歴データをインポートすると、位置マネージャは、更新された値を遅延ゲートウェイのlocationManager(_:didVisit:)メソッドとして呼び出します.
Listing 1 Receiving visit updates
func locationManager(_ manager: CLLocationManager, didVisit visit: CLVisit) {
    // Do something with the visit. 
}

Handling Location-Related Errors


位置マネージャが位置更新を伝達できない場合、位置マネージャは遅延ゲートオブジェクトのlocationManager(_:didFailWithError:)メソッドを呼び出す.発生する可能性のあるすべてのエラーを処理するには、この遅延ゲートウェイメソッドを常に実装する必要があります.たとえば、アプリケーションがロケーション・サービスの使用を拒否した場合、このメソッドが呼び出されます.この場合、位置に関連する機能を無効にし、使用できない機能をユーザーに知らせたい場合があります.以前に起動したサービスも停止しなければなりません.Listing 2で説明したように.
Listing 2 Stopping location services when authorization is denied
func locationManager(_ manager: CLLocationManager,  didFailWithError error: Error) {
   if error.code == .denied {
      // Location updates are not authorized.
      locationManager.stopMonitoringVisits()
      return
   }
   // Notify the user of any errors.
}

See Also


Related Topics


Using the Significant-Change Location Service


電力を節約することで位置更新を取得するが、標準位置サービスに比べて取得頻度は低い.
https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/using_the_significant-change_location_service
https://velog.io/@panther222128/Using-the-Significant-Change-Location-Service

Using the Standard Location Service


特定のパラメータに基づいて定期的に位置更新を取得します.
https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/using_the_standard_location_service
https://velog.io/@panther222128/Using-the-Standard-Location-Service

Handling Location Events in the Background


バックグラウンド実行モードを使用して、アプリケーションに関連するイベントに応答します.
https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/handling_location_events_in_the_background
https://velog.io/@panther222128/Handling-Location-Events-in-the-Background

Converting Between Coordinates and User-Friendly Place Names


緯度/経度対とその位置のよりユーザーフレンドリーな説明の間で変換します.
https://developer.apple.com/documentation/corelocation/converting_between_coordinates_and_user-friendly_place_names
https://velog.io/@panther222128/Converting-Between-Coordinates-and-User-Friendly-Place-Names

Converting a User's Location to a Descriptive Placemark


地図に表示されるユーザ位置を逆符号化情報付きテキスト説明に変換します.
https://developer.apple.com/documentation/mapkit/mkmapview/converting_a_user_s_location_to_a_descriptive_placemark
https://velog.io/@panther222128/Converting-a-Users-Location-to-a-Descriptive-Placemark