Amazon Location SDKとライブラリ - Amazon Location Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Location SDKとライブラリ

Amazon Location SDKは、Amazon Location アプリケーションの開発に役立つ機能を提供する一連のオープンソースライブラリです。以下の機能が含まれています。

Amazon Location の使用を開始する方法 SDK

Amazon Location SDKは、アプリケーションで Amazon Location Service をより簡単に使用できる一連の関数です。これらの関数をインストールして JavaScript アプリケーションにインポートできます。以下のセクションでは、Amazon Location クライアント、認証および GeoJSON ヘルパーライブラリについて説明します。

Amazon Location クライアント

で AWS SDK v3、 SDKはサービスごとに分離されます。必要なパーツだけをインストールできます。例えば、Amazon Location クライアントと Amazon Cognito の認証情報プロバイダーをインストールするには、次のコマンドを使用します。

npm install @aws-sdk/client-location npm install @aws-sdk/credential-providers

JavaScript ウェブフロントエンドアプリケーションで Amazon Location Service の使用を容易にするために、 AWS は、Amazon Location ライブラリと認証情報プロバイダーのホストバンドルを提供します。バンドルされたクライアントを使用するには、次のようにスクリプトタグHTMLで に追加します。

<script src="https://unpkg.com/@aws/amazon-location-client@1.x/dist/amazonLocationClient.js"></script>
注記

パッケージは最新の状態に保たれ、使いやすさのために下位互換性が保たれています。このスクリプトタグまたはNPMインストールを使用すると、常に最新バージョンを取得します。

JavaScript 認証ヘルパー

Amazon Location JavaScript 認証ヘルパーを使用すると、 JavaScript アプリケーションから Amazon Location をAPI呼び出す際の認証が簡単になります。この認証ヘルパーは、Amazon Cognito または APIキーを認証方法として使用する場合に特に役立ちます。これは、 で利用可能なオープンソースライブラリです。 GitHub-https://github.com/aws-geospatial/amazon-location-utilities-authhelper-js です。

注記

認証ヘルパーの Amazon Cognito サポートは、Amazon Cognito のフェデレーテッドアイデンティティ機能をサポートしていません。

インストール

Webpack などのビルドシステムを使用する場合、または HTML に<script>タグ付きのビルド済み JavaScript バンドルを含めることで、ローカルインストールでライブラリを使用できます。

  • 次のコマンドを使用して、 を使用してライブラリをインストールしますNPM。

    npm install @aws/amazon-location-utilities-auth-helper
  • ファイルで次のコマンドHTMLを使用してスクリプトをロードします。

    <script src="https://unpkg.com/@aws/amazon-location-utilities-auth-helper@1.x/dist/amazonLocationAuthHelper.js"></script>

[Import](インポート)

JavaScript アプリケーションで特定の関数を使用するには、その関数をインポートする必要があります。次のコードを使用して、withIdentityPoolId の関数をアプリケーションにインポートします。

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper';

認証関数

Amazon Location 認証ヘルパーには、AuthHelper オブジェクトを返す以下の関数が含まれています。

  • async withIdentityPoolId( identityPoolId: string): AuthHelper – この関数は AuthHelper 、Amazon Cognito で動作するように初期化された オブジェクトを返します。

  • async withAPIKey( API_KEY: string): AuthHelper – この関数は AuthHelper 、 API キーで動作するように初期化された オブジェクトを返します。

AuthHelper オブジェクトは、以下の関数を備えています。

  • AuthHelper.getMapAuthenticationOptions() – AuthHelper オブジェクトのこの関数は、 MapLibre JS のマップオプションtransformRequestで使用できる を持つ JavaScript オブジェクトを返します。アイデンティティプールで初期化された場合にのみ提供されます

  • AuthHelper.getLocationClientConfig() - AuthHelper オブジェクトのこの関数credentialsは、 の初期化に使用できる を持つ JavaScript オブジェクトを返します LocationClient。

  • AuthHelper.getCredentials() – AuthHelper オブジェクトのこの関数は、Amazon Cognito から内部認証情報を返します。アイデンティティプールで初期化された場合にのみ提供されます

例: を使用して Amazon Cognito で MapLibre マップオブジェクトを初期化する AuthHelper

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withIdentityPoolId("identity-pool-id"); // use Cognito pool id for credentials const map = new maplibregl.Map({ container: "map", // HTML element ID of map element center: [-123.1187, 49.2819], // initial map center point zoom: 16, // initial map zoom style: https://maps.geo.region.amazonaws.com/maps/v0/maps/mapName/style-descriptor', // Defines the appearance of the map ...authHelper.getMapAuthenticationOptions(), // Provides credential options required for requests to Amazon Location });

例: APIキーを使用した MapLibre マップオブジェクトの初期化 (AuthHelperこの場合は必須ではありません)

const map = new maplibregl.Map({ container: "map", // HTML element ID of map element center: [-123.1187, 49.2819], // initial map center point zoom: 16, // initial map zoom style: https://maps.geo.region.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor?key=api-key-id', });

例: から Location クライアントを初期化する AWS SDK Amazon Cognito と を使用した JS 用の AuthHelper

この例では、 を使用します。 AWS SDK JavaScript v3 用。

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withIdentityPoolId("identity-pool-id"); // use Cognito pool id for credentials //initialize the Location client: const client = new LocationClient({ region: "region", ...authHelper.getLocationClientConfig() // sets up the Location client to use the Cognito pool defined above }); //call a search function with the location client: const result = await client.send(new SearchPlaceIndexForPositionCommand({ IndexName: "place-index", // Place index resource to use Position: [-123.1187, 49.2819], // position to search near MaxResults: 10 // number of results to return });

例: から Location クライアントを初期化する AWS SDK APIキーと を使用した JS 用 AuthHelper

この例では、 を使用します。 AWS SDK JavaScript v3 用。

import { withAPIKey } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withAPIKey("api-key-id"); // use API Key id for credentials //initialize the Location client: const client = new LocationClient({ region: "region", ...authHelper.getLocationClientConfig() // sets up the Location client to use the API Key defined above }); //call a search function with the location client: const result = await client.send(new SearchPlaceIndexForPositionCommand({ IndexName: "place-index", // Place index resource to use Position: [-123.1187, 49.2819], // position to search near MaxResults: 10 // number of results to return });

地理JSON変換ヘルパー

Amazon Location GeoJSON 変換ヘルパーには、Amazon Location Service のデータ型を業界標準の GeoJSON 形式との間で変換するためのツールが用意されています。Geo JSONは、例えば、マップ上の地理的データをレンダリング MapLibre するために とともに使用されます。これは、 で利用可能なオープンソースライブラリです。 GitHub-https://github.com/aws-geospatial/amazon-location-utilities-datatypesjs

インストール

ライブラリは、webpack などのローカルインストールで使用するか、HTML に<script>タグ付きのビルド済み JavaScript バンドルを含めることで使用できます。

  • 次のコマンドを使用して、 を使用してライブラリをインストールしますNPM。

    npm install @aws/amazon-location-utilities-datatypes
  • ファイルで次のコマンドHTMLを使用してスクリプトをロードします。

    <script src="https://unpkg.com/@aws/amazon-location-utilities-datatypes@1.x/dist/amazonLocationDataConverter.js"></script>

[Import](インポート)

JavaScript アプリケーションで特定の関数を使用するには、その関数をインポートする必要があります。次のコードを使用して、placeToFeatureCollection の関数をアプリケーションにインポートします。

import { placeToFeatureCollection } from '@aws/amazon-location-utilities-datatypes';

地理JSON変換関数

Amazon Location GeoJSON 変換ヘルパーには、次の関数が含まれています。

  • placeToFeatureCollection(place: GetPlaceResponse | searchPlaceIndexForPositionResponse | searchPlaceIndexForTextResponse, keepNull: boolean): Feature – この関数は、場所検索関数からのレスポンスを、1 つ以上のポイント特徴JSON FeatureCollection を持つ Geo に変換します。

  • devicePositionToFeatureCollection(devicePositions: GetDevicePositionResponse | BatchGetDevicePositionResponse | GetDevicePositionHistoryResponse | ListDevicePositionsResponse, keepNull: boolean) – この関数は、トラッカーデバイス位置関数からのレスポンスを、1 つ以上のポイント特徴JSON FeatureCollection を持つ Geo に変換します。

  • routeToFeatureCollection(legs: CalculateRouteResponse): FeatureCollection — この関数は、ルート計算関数からのレスポンスを、単一の MultiStringLine 特徴JSON FeatureCollection を持つ Geo に変換します。ルートの各レッグは、 の LineString エントリで表されます MultiStringLine。

  • geofenceToFeatureCollection(geofences: GetGeofenceResponse | PutGeofenceRequest | BatchPutGeofenceRequest | ListGeofencesResponse): FeatureCollection – この関数は、ジオフェンス関数のリクエストまたはレスポンスをポリゴン特徴JSON FeatureCollection を持つ Geo に変換します。レスポンスとリクエストの両方でジオフェンスを変換できるため、 PutGeofence または でアップロードする前にジオフェンスをマップに表示できます BatchPutGeofence。

    この関数は、円形ジオフェンスを近似ポリゴンフィーチャに変換しますが、必要に応じて、円形ジオフェンスを再作成するための「中心」プロパティと「半径」プロパティも備えています (次の関数を参照)。

  • featureCollectionToGeofences(featureCollection: FeatureCollection): BatchPutGeofenceRequestEntry[] — この関数は、ポリゴンJSON FeatureCollection で Geo 特徴を BatchPutGeofenceRequestEntry オブジェクトの配列に変換するため、結果を使用して へのリクエストを作成できます BatchPutGeofence。

    の特徴量に「中心」プロパティと「半径」プロパティ FeatureCollection がある場合、ポリゴンのジオメトリを無視して、円形ジオフェンスリクエストエントリに変換されます。

例: 検索結果を のポイントレイヤーに変換する MapLibre

この例では、 を使用します。 AWS SDK JavaScript v3 用。

import { placeToFeatureCollection } from '@aws/amazon-location-utility-datatypes'; ... let map; // map here is an initialized MapLibre instance const client = new LocationClient(config); const input = { your_input }; const command = new searchPlaceIndexForTextCommand(input); const response = await client.send(command); // calling utility function to convert the response to GeoJSON const featureCollection = placeToFeatureCollection(response); map.addSource("search-result", featureCollection); map.addLayer({ id: "search-result", type: "circle", source: "search-result", paint: { "circle-radius": 6, "circle-color": "#B42222", }, });

Android モバイル認証 SDK

これらのユーティリティは、Android アプリケーションから Amazon Location Service をAPI呼び出すときに認証するのに役立ちます。これは、Amazon Cognito または APIキーを認証方法として使用する場合に特に役立ちます。

Android モバイル認証SDKは、github: Amazon Location Service Mobile Authentication SDK for Android で利用できます。さらに、モバイル認証SDKと AWS SDK は、 で利用できます。 AWS Maven リポジトリ

インストール

モバイル認証 を使用するにはSDK、Android Studio の build.gradle ファイルに次のインポートステートメントを追加します。

implementation("software.amazon.location:auth:0.0.1") implementation("com.amazonaws:aws-android-sdk-location:2.72.0")

認証関数

認証ヘルパーSDKには次の機能があります。

  • authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key"): LocationCredentialsProvider: この関数は、 API キーを操作するためにLocationCredentialsProvider初期化された を返します。

  • authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider: この関数は、Amazon Cognito ID プールと連携するようにLocationCredentialsProvider初期化された を返します。

使用方法

コードSDKで を使用するには、次のクラスをインポートします。

import com.amazonaws.services.geo.AmazonLocationClient import software.amazon.location.auth.AuthHelper import software.amazon.location.auth.LocationCredentialsProvider

認証ヘルパーとロケーションクライアントプロバイダーインスタンスを作成するときは、2 つのオプションがあります。Amazon Location APIキーまたは Amazon Cognitoを使用してインスタンスを作成できます。

  • Amazon Location API Key を使用して認証ヘルパーインスタンスを作成するには、次のようにヘルパークラスを宣言します。

    var authHelper = AuthHelper(applicationContext) var locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key")
  • Amazon Cognito を使用して認証ヘルパーインスタンスを作成するには、次のようにヘルパークラスを宣言します。

    var authHelper = AuthHelper(applicationContext) var locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")

ロケーション認証情報プロバイダーを使用して Amazon Location クライアントインスタンスを作成し、Amazon Location サービスを呼び出すことができます。次の例では、指定された緯度と経度に近い場所を検索します。

var locationClient = authHelper.getLocationClient(locationCredentialsProvider.getCredentialsProvider()) var searchPlaceIndexForPositionRequest = SearchPlaceIndexForPositionRequest().withIndexName("My-Place-Index-Name").withPosition(arrayListOf(30.405423, -97.718833)) var nearbyPlaces = locationClient.searchPlaceIndexForPosition(searchPlaceIndexForPositionRequest)

iOS モバイル認証 SDK

これらのユーティリティは、iOS アプリケーションから Amazon Location Service をAPI呼び出すときに認証するのに役立ちます。これは、Amazon Cognito または APIキーを認証方法として使用する場合に特に役立ちます。

iOS モバイル認証SDKは、github: Amazon Location Service Mobile Authentication SDK for iOS で利用できます。

インストール

Xcode プロジェクトSDKに をインストールします。

  1. ファイル に移動し、XCodeプロジェクトのパッケージ依存関係の追加を選択します。

  2. 検索バーにパッケージ URL: https://github.com/aws-geospatial/amazon-location-mobile-auth-sdk-ios/ を入力し、Enter キーを押します。

  3. amazon-location-mobile-auth-sdk-ios パッケージを選択し、パッケージの追加 を押します。

  4. AmazonLocationiOSAuthSDK パッケージ製品を選択し、パッケージの追加 を押します。

認証関数

認証ヘルパーSDKには次の機能があります。

  • authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key"): LocationCredentialsProvider: この関数は、 API キーを操作するためにLocationCredentialsProvider初期化された を返します。

  • authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider: この関数は、Amazon Cognito ID プールと連携するようにLocationCredentialsProvider初期化された を返します。

使用方法

モバイル認証 を使用するにはSDK、以下のステートメントをアクティビティに追加します。

import AmazonLocationiOSAuthSDK import AWSLocationXCF

認証ヘルパーとロケーションクライアントプロバイダーインスタンスを作成するときは、2 つのオプションがあります。Amazon Location APIキーまたは Amazon Cognitoを使用してインスタンスを作成できます。

  • Amazon Location API Key を使用して認証ヘルパーインスタンスを作成するには、次のようにヘルパークラスを宣言します。

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithAPIKey(apiKey: "My-Amazon-Location-API-Key", region: "account-region")
  • Amazon Cognito を使用して認証ヘルパーインスタンスを作成するには、次のようにヘルパークラスを宣言します。

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: "My-Amazon-Location-API-Key", region: "account-region")

ロケーション認証情報プロバイダーを使用して Amazon Location クライアントインスタンスを作成し、Amazon Location サービスを呼び出すことができます。次の例では、指定された緯度と経度に近い場所を検索します。

let locationClient = AWSLocation.default() let searchPlaceIndexForPositionRequest = AWSLocationSearchPlaceIndexForPositionRequest()! searchPlaceIndexForPositionRequest.indexName = "My-Place-Index-Name" searchPlaceIndexForPositionRequest.position = [30.405423, -97.718833] let nearbyPlaces = locationClient.searchPlaceIndex(forPosition: searchPlaceIndexForPositionRequest)

Android モバイル追跡 SDK

Amazon Location モバイル追跡SDKは、Amazon Location Trackers の認証、デバイス位置のキャプチャ、位置の更新の送信を容易にするユーティリティを提供します。は、設定可能な更新間隔によるロケーション更新のローカルフィルタリングSDKをサポートしています。これにより、データコストを削減し、Android アプリケーションの断続的な接続を最適化できます。

Android 追跡SDKは、 GitHub: Amazon Location Mobile Tracking SDK for Android で利用できます。さらに、モバイル認証SDKと AWS SDK は で利用できます。 AWS Maven リポジトリ 。Android 追跡SDKは、一般的な で動作するように設計されています。 AWS SDK.

このセクションでは、Amazon Location モバイル追跡 Android に関する以下のトピックについて説明しますSDK。

インストール

をインストールするにはSDK、Android Studio の build.gradle ファイルの依存関係セクションに次の行を追加します。

implementation("software.amazon.location:tracking:0.0.1") implementation("software.amazon.location:auth:0.0.1") implementation("com.amazonaws:aws-android-sdk-location:2.72.0")

使用方法

この手順では、 を使用してLocationTrackerオブジェクトをSDK認証および作成する方法について説明します。

注記

この手順では、 インストールセクションで説明されているライブラリをインポートしていることを前提としています。

  1. コードに次のクラスをインポートします。

    import software.amazon.location.tracking.LocationTracker import software.amazon.location.tracking.config.LocationTrackerConfig import software.amazon.location.tracking.util.TrackingSdkLogLevel import com.amazonaws.services.geo.AmazonLocationClient import software.amazon.location.auth.AuthHelper import software.amazon.location.auth.LocationCredentialsProvider
  2. 次にAuthHelper、 を作成します。LocationTrackerオブジェクトの作成には LocationCredentialsProviderパラメータが必要なためです。

    // Create an authentication helper using credentials from Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
  3. 次に、 LocationCredentialsProviderと を使用してLocationTrackerオブジェクトLocationTrackerConfigを作成します。

    val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

フィルター

Amazon Location モバイル追跡 Android SDKには、3 つの組み込みロケーションフィルターがあります。

  • TimeLocationFilter: 定義された時間間隔に基づいて、アップロードする現在の場所をフィルタリングします。

  • DistanceLocationFilter: 指定された距離しきい値に基づいてロケーションの更新をフィルタリングします。

  • AccuracyLocationFilter: 前回の更新以降に移動した距離と現在の場所の精度を比較して、場所の更新をフィルタリングします。

この例では、作成LocationTracker時に にフィルターを追加します。

val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, locationFilters = mutableListOf(TimeLocationFilter(), DistanceLocationFilter(), AccuracyLocationFilter()) ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

この例では、 で実行時にフィルターを有効または無効にしますLocationTracker

// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())

Android Mobile SDK追跡関数

Android SDK用 Amazon Location モバイル追跡には、次の機能が含まれています。

  • クラス : LocationTracker

    constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,trackerName: String), または constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)

    これはオブジェクトを作成するためのイニシャライザー関数ですLocationTracker。これにはLocationCredentialsProvider、 のインスタンスtrackerNameと、オプションで のインスタンスが必要ですLocationTrackingConfig。設定が指定されていない場合、デフォルト値で初期化されます。

  • クラス : LocationTracker

    start(locationTrackingCallback: LocationTrackingCallback)

    ユーザーの場所にアクセスして Amazon Location トラッカーに送信するプロセスを開始します。

  • クラス : LocationTracker

    isTrackingInForeground()

    ロケーション追跡が現在進行中かどうかを確認します。

  • クラス : LocationTracker

    stop()

    ユーザーの位置を追跡するプロセスを停止します。

  • クラス : LocationTracker

    startTracking()

    ユーザーの場所にアクセスして に送信するプロセスを開始します。 AWS トラッカー。

  • クラス : LocationTracker

    startBackground(mode: BackgroundTrackingMode, serviceCallback: ServiceCallback)

    ユーザーの場所にアクセスして に送信するプロセスを開始します。 AWS アプリケーションがバックグラウンドにあるときの トラッカー。 BackgroundTrackingMode には次のオプションがあります。

    • ACTIVE_TRACKING: このオプションは、ユーザーの場所の更新をアクティブに追跡します。

    • BATTERY_SAVER_TRACKING: このオプションは、15 分ごとにユーザーの位置の更新を追跡します。

  • クラス : LocationTracker

    stopBackgroundService()

    ユーザーの場所にアクセスして に送信するプロセスを停止します AWS アプリケーションがバックグラウンドにあるときの トラッカー。

  • クラス : LocationTracker

    getTrackerDeviceLocation()

    Amazon Location サービスからデバイスロケーションを取得します。

  • クラス : LocationTracker

    getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)

    フュージョンロケーションプロバイダークライアントから現在のデバイスロケーションを取得し、Amazon Location トラッカーにアップロードします。

  • クラス : LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

    設定されたロケーションフィルターに基づいてフィルタリングした後、Amazon Location サービスにデバイスロケーションをアップロードします。

  • クラス : LocationTracker

    enableFilter(filter: LocationFilter)

    特定のロケーションフィルターを有効にします。

  • クラス : LocationTracker

    checkFilterIsExistsAndUpdateValue(filter: LocationFilter)

    特定の場所フィルターを無効にします。

  • クラス : LocationTrackerConfig

    LocationTrackerConfig( // Required var trackerName: String, // Optional var locationFilters: MutableList = mutableListOf( TimeLocationFilter(), DistanceLocationFilter(), ), var logLevel: TrackingSdkLogLevel = TrackingSdkLogLevel.DEBUG, var accuracy: Int = Priority.PRIORITY_HIGH_ACCURACY, var latency: Long = 1000, var frequency: Long = 1500, var waitForAccurateLocation: Boolean = false, var minUpdateIntervalMillis: Long = 1000, var persistentNotificationConfig: NotificationConfig = NotificationConfig())

    これにより、ユーザー定義のパラメータ値LocationTrackerConfigで が初期化されます。パラメータ値を指定しない場合、デフォルト値に設定されます。

  • クラス : LocationFilter

    shouldUpload(currentLocation: LocationEntry, previousLocation: LocationEntry?): Boolean

    LocationFilter は、ユーザーがカスタムフィルター実装のために実装できるプロトコルです。以前の場所と現在の場所を比較しshouldUpload、現在の場所をアップロードする必要がある場合は 関数を実装する必要があります。

次のコードサンプルは、モバイル追跡SDK機能を示しています。

この例では、 を使用してバックグラウンドで追跡LocationTrackerを開始および停止します。

// For starting the location tracking locationTracker?.startBackground( BackgroundTrackingMode.ACTIVE_TRACKING, object : ServiceCallback { override fun serviceStopped() { if (selectedTrackingMode == BackgroundTrackingMode.ACTIVE_TRACKING) { isLocationTrackingBackgroundActive = false } else { isLocationTrackingBatteryOptimizeActive = false } } }, ) // For stopping the location tracking locationTracker?.stopBackgroundService()

iOS モバイル追跡 SDK

Amazon Location モバイル追跡SDKは、Amazon Location Trackers の認証、デバイス位置のキャプチャ、位置の更新の送信を容易にするユーティリティを提供します。は、設定可能な更新間隔によるロケーション更新のローカルフィルタリングSDKをサポートしています。これにより、データコストを削減し、iOS アプリケーションの断続的な接続を最適化できます。

iOS 追跡SDKは、 GitHub: Amazon Location Mobile Tracking SDK for iOS で利用できます。

このセクションでは、Amazon Location モバイル追跡 iOS に関する以下のトピックについて説明しますSDK。

インストール

iOS SDK用のモバイル追跡をインストールするには、次の手順に従います。

  1. Xcode プロジェクトで、ファイル に移動し、パッケージ依存関係の追加 を選択します。

  2. 検索バーに URL-https://github.com/aws-geospatial/amazon-location-mobile-trackingsdk-ios/ と入力し、Enter キーを押します。

  3. amazon-location-mobile-tracking-sdk-ios パッケージを選択し、パッケージの追加 をクリックします。

  4. AmazonLocationiOSTrackingSDK パッケージ製品を選択し、パッケージの追加 をクリックします。

使用方法

次の手順では、Cognito の認証情報を使用して認証ヘルパーを作成する方法を示します。

  1. ライブラリをインストールしたら、説明の一方または両方を info.plist ファイルに追加する必要があります。

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. 次に、 クラス AuthHelper に をインポートします。

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. 次に、 AuthHelper オブジェクトを作成し、 で使用します。 AWS SDK。Amazon Cognito の認証情報を使用して認証ヘルパーを作成します。

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: "My-Cognito-Identity-Pool-Id", region: "My-region") //example: us-east-1 let locationTracker = LocationTracker(provider: locationCredentialsProvider, trackerName: "My-tracker-name") // Optionally you can set ClientConfig with your own values in either initialize or in a separate function // let trackerConfig = LocationTrackerConfig(locationFilters: [TimeLocationFilter(), DistanceLocationFilter()], trackingDistanceInterval: 30, trackingTimeInterval: 30, logLevel: .debug) // locationTracker = LocationTracker(provider: credentialsProvider, trackerName: "My-tracker-name",config: trackerConfig) // locationTracker.setConfig(config: trackerConfig)

フィルター

Amazon Location モバイル追跡 iOS SDKには、3 つの組み込みロケーションフィルターがあります。

  • TimeLocationFilter: 定義された時間間隔に基づいて、アップロードする現在の場所をフィルタリングします。

  • DistanceLocationFilter: 指定された距離しきい値に基づいてロケーションの更新をフィルタリングします。

  • AccuracyLocationFilter: 前回の更新以降に移動した距離と現在の場所の精度を比較して、場所の更新をフィルタリングします。

この例では、作成LocationTracker時に にフィルターを追加します。

val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, locationFilters = mutableListOf(TimeLocationFilter(), DistanceLocationFilter(), AccuracyLocationFilter()) ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

この例では、 で実行時にフィルターを有効または無効にしますLocationTracker

// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())

iOS モバイルSDK追跡関数

iOS SDK用の Amazon Location モバイル追跡には、次の機能が含まれています。

  • クラス : LocationTracker

    init(provider: LocationCredentialsProvider, trackerName: String, config: LocationTrackerConfig? = nil)

    これはオブジェクトを作成するためのイニシャライザー関数ですLocationTracker。これにはLocationCredentialsProvider、 のインスタンスtrackerNameと、オプションで のインスタンスが必要ですLocationTrackingConfig。設定が指定されていない場合、デフォルト値で初期化されます。

  • クラス : LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    これにより、位置トラッカーの初期化後の任意の時点でトラッカーの設定が有効になります。

  • クラス : LocationTracker

    getTrackerConfig()

    これにより、アプリで使用または変更する位置追跡設定が取得されます。

    以下を返します。 LocationTrackerConfig

  • クラス : LocationTracker

    getDeviceId()

    ロケーショントラッカーが生成したデバイス ID を取得します。

    戻り値: String?

  • クラス : LocationTracker

    startTracking()

    ユーザーの場所にアクセスして に送信するプロセスを開始します。 AWS トラッカー。

  • クラス : LocationTracker

    resumeTracking()

    ユーザーの場所にアクセスして に送信するプロセスを再開します。 AWS トラッカー。

  • クラス : LocationTracker

    stopTracking()

    ユーザーの位置を追跡するプロセスを停止します。

  • クラス : LocationTracker

    startBackgroundTracking(mode: BackgroundTrackingMode)

    ユーザーの場所にアクセスして に送信するプロセスを開始します。 AWS アプリケーションがバックグラウンドにあるときの トラッカー。 BackgroundTrackingMode には次のオプションがあります。

    • Active: このオプションは、ロケーションの更新を自動的に一時停止しません。

    • BatterySaving: このオプションは、ロケーションの更新を自動的に一時停止します。

    • None: このオプションでは、全体的にバックグラウンドロケーションの更新が無効になります。

  • クラス : LocationTracker

    resumeBackgroundTracking(mode: BackgroundTrackingMode)

    ユーザーの場所にアクセスして に送信するプロセスを再開します。 AWS アプリケーションがバックグラウンドにあるときの トラッカー。

  • クラス : LocationTracker

    stopBackgroundTracking()

    ユーザーの場所にアクセスして に送信するプロセスを停止します AWS アプリケーションがバックグラウンドにあるときの トラッカー。

  • クラス : LocationTracker

    getTrackerDeviceLocation(nextToken: String?, startTime: Date? = nil, endTime: Date? = nil, completion: @escaping (Result<GetLocationResponse, Error>)

    開始日時と終了日時の間にアップロードされたユーザーのデバイスの追跡場所を取得します。

    以下を返します。 Void

  • クラス : LocationTrackerConfig

    init()

    これにより、デフォルト値 LocationTrackerConfig で が初期化されます。

  • クラス : LocationTrackerConfig

    init(locationFilters: [LocationFilter]? = nil, trackingDistanceInterval: Double? = nil, trackingTimeInterval: Double? = nil, trackingAccuracyLevel: Double? = nil, uploadFrequency: Double? = nil, desiredAccuracy: CLLocationAccuracy? = nil, activityType: CLActivityType? = nil, logLevel: LogLevel? = nil)

    これにより、ユーザー定義のパラメータ値LocationTrackerConfigで が初期化されます。パラメータ値を指定しない場合、デフォルト値に設定されます。

  • クラス : LocationFilter

    shouldUpload(currentLocation: LocationEntity, previousLocation: LocationEntity?, trackerConfig: LocationTrackerConfig)

    LocationFilter は、ユーザーがカスタムフィルター実装のために実装できるプロトコルです。ユーザーは、以前の場所と現在の場所を比較し、現在の場所をアップロードする必要があるかどうかを返す shouldUpload関数を実装する必要があります。

このセクションでは、iOS SDK用 Amazon Location Mobile Tracking の使用例について詳しく説明します。

注記

ファイルに必要なアクセス許可が設定されていることを確認しますinfo.plist。これらは、 使用方法セクションにリストされているのと同じアクセス許可です。

次の例は、デバイスの位置を追跡し、追跡された位置を取得する機能を示しています。

Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description

ロケーションの追跡を開始します。

do { try locationTracker.startTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

ロケーションの追跡を再開します。

do { try locationTracker.resumeTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

ロケーションの追跡を停止します。

locationTracker.stopTracking()

バックグラウンド追跡を開始する:

do { locationTracker.startBackgroundTracking(mode: .Active) // .Active, .BatterySaving, .None } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

バックグラウンド追跡を再開します。

do { locationTracker.resumeBackgroundTracking(mode: .Active) } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

バックグラウンド追跡を停止するには:

locationTracker.stopBackgroundTracking()

トラッカーからデバイスの追跡対象ロケーションを取得します。

func getTrackingPoints(nextToken: String? = nil) { let startTime: Date = Date().addingTimeInterval(-86400) // Yesterday's day date and time let endTime: Date = Date() locationTracker.getTrackerDeviceLocation(nextToken: nextToken, startTime: startTime, endTime: endTime, completion: { [weak self] result in switch result { case .success(let response): let positions = response.devicePositions // You can draw positions on map or use it further as per your requirement // If nextToken is available, recursively call to get more data if let nextToken = response.nextToken { self?.getTrackingPoints(nextToken: nextToken) } case .failure(let error): print(error) } }) }