iOS モバイル追跡 SDK - Amazon Location Service

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

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

    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 Mobile 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を比較し、現在の場所をアップロードする必要がある場合は 関数を実装する必要があります。

このセクションでは、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) } }) }