追跡 SDKsの使用方法 - Amazon Location Service

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

追跡 SDKsの使用方法

このトピックでは、追跡 SDKsの使用方法について説明します。

Amazon Location Mobile Tracking SDK には、認証、デバイスの位置の取得、Amazon Location Tracker への位置情報の更新の送信に役立つユーティリティが用意されています。この SDK は、位置情報の更新に対して、ローカルでのフィルタリングをサポートしており、更新間隔を設定できます。これにより、データコストが削減され、iOS アプリケーションの断続的な接続が最適化されます。

iOS 用 Mobile Tracking SDK は GitHub で Amazon Location Mobile Tracking SDK for iOS として入手できます。

このセクションでは、Amazon Location Mobile Tracking SDK for iOS の以下のトピックについて説明します。

インストール

iOS 用 Mobile Tracking SDK をインストールするには、以下の手順に従います。

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

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

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

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

使用方法

次の手順では、Amazon 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. 次に、Amazon Cognito の認証情報を使用して認証ヘルパーを作成して、AuthHelperオブジェクトを作成して AWS SDK で使用します。

    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 Mobile Tracking SDK for iOS には、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 用 Mobile Tracking SDK の追跡関数

Amazon Location Mobile Tracking SDK for iOS には、以下の関数が含まれています。

  • クラス: LocationTracker

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

    これは LocationTracker オブジェクトを作成する初期化関数です。この関数には、LocationCredentialsProvidertrackerName、およびオプションで 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 関数をユーザーが実装する必要があります。

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

注記

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) } }) }

Amazon Location Mobile Tracking SDK には、認証、デバイスの位置の取得、Amazon Location Tracker への位置情報の更新の送信に役立つユーティリティが用意されています。この SDK は、位置情報の更新に対して、ローカルでのフィルタリングをサポートしており、更新間隔を設定できます。これにより、データコストが削減され、Android アプリケーションの断続的な接続が最適化されます。

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

このセクションでは、Amazon Location Mobile Tracking SDK for Android について以下のトピックを取り上げます。

インストール

SDK をインストールするには、Android Studio で build.gradle ファイルの dependencies セクションに以下の行を追加します。

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")

使用方法

この手順では、SDK を使用して認証を行い、LocationTracker オブジェクトを作成する方法を示します。

注記

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

  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. 次に、LocationTracker オブジェクトを作成するには LocationCredentialsProvider パラメータが必要になるため、AuthHelper を作成します。

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

    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 Mobile Tracking SDK for Android には、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 Tracking SDK の追跡関数

Amazon Location Mobile Tracking SDK for Android には、以下の関数が含まれています。

  • クラス: LocationTracker

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

    これは LocationTracker オブジェクトを作成する初期化関数です。この関数には、LocationCredentialsProvidertrackerName、およびオプションで LocationTrackingConfig のインスタンスが必要です。設定を定義しない場合は、デフォルト値で初期化されます。

  • クラス: LocationTracker

    start(locationTrackingCallback: LocationTrackingCallback)

    ユーザーの位置情報にアクセスして Amazon Location Tracker に送信するプロセスを開始します。

  • クラス: 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 Service からデバイスの位置情報を取得します。

  • クラス: LocationTracker

    getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)

    複合位置情報プロバイダークライアントからデバイスの現在の位置情報を取得し、Amazon Location Tracker にアップロードします。

  • クラス: LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

    設定した位置情報フィルタに基づいてフィルタリングした後、デバイスの位置情報を Amazon Location Service にアップロードします。

  • クラス: 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 関数を実装する必要があります。

以下のコードサンプルは Mobile Tracking 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()