Integrate Pioneer ProbeData SDK

本章では、ユーザーアプリケーションにプローブデータ収集SDKを組み込む方法を説明します。

Androidの場合

Installation

  1. ユーザのサンプルプログラムのプロジェクト内でライブラリを格納するフォルダ(例:libs)にプローブデータ収集SDKのライブラリ形式のバイナリファイル(例:predictivesdk.aar)をコピーします。

  1. アプリのbuild.gradleにプローブデータ収集SDKのライブラリとその他のライブラリを追加します。
    dependencies {
    
        implementation fileTree( dir:'libs', include:['*.jar','*.aar'])
    
        implementation "io.insert-koin:koin-android:3.3.0"
    
    	def room_version = "2.5.0"
    	implementation "androidx.room:room-runtime:$room_version"
    	implementation "androidx.room:room-ktx:$room_version"
    	annotationProcessor "androidx.room:room-compiler:$room_version"
    
    	implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    
    	implementation 'com.google.android.gms:play-services-location:21.0.1'
    }
    

Usage

  1. SDKのDIライブラリにKoinを使用しています。Koinの初期化をします。

    1. android.app.Applicationを継承したクラス内で初期化します。
      override fun onCreate() {
      	super.onCreate()
      	startKoin {}
      }
      
  2. ユーザーアプリケーション側でユーザーのランタイム権限を取得してください。

    必要な権限は次の通りです。

    android.permission.ACCESS_COARSE_LOCATION
    android.permission.ACCESS_FINE_LOCATION
    android.permission.ACTIVITY_RECOGNITION
    
  3. プローブデータ収集SDK(PredictiveSdk())をインポートします。

    import predictiveSdk
    
  4. SDKインスタンスを作成し、コンテキストを譲渡します。

    val sdk = PredictiveSdk()
    sdk.context(context)
    
  5. 以降はSDK内部動作の有効化~停止(Android/iOS共通)、を参照してください。

Option

Debugビルド時の内部動作のロギング設定です。

  • Logcat出力

NameValue
predictiveSdkverbose, debug, info, warn, errorログレベル
CheckPredSdkverbose, debug, info, warn, errorログレベル
Table.3.3.1 - ロギング設定 (Android)

iOSの場合

Installation

Swift Package Manager

  • Xcodeでxcodeprojを開き、対象のTARGETS → General → Frameworks, Libraries, and Embedded Content からプローブデータ収集SDKのバイナリファイル(.xcframework)を選択し追加します。

    ※[XcodeGenを使う場合] project.ymlにプローブデータ収集SDKを追加し xcodegen generate を実行します。
    targets:
    	TARGET名:
    	dependencies:
    +	- framework: PredictiveSDK.xcframework
    

Usage

※各IFの詳細については別途IF仕様書をご参照いただくか、DocCで生成した仕様書をご覧ください。

  • Xcode上からはProduct -> Build Documentation

Preparation

  1. アプリプロジェクトのInfo.plistにキーを設定してください。

Key用途
NSLocationWhenInUseUsageDescription位置情報
NSLocationAlwaysAndWhenInUseUsageDescription位置情報
NSMotionUsageDescriptionモーションアクティビティ
UIBackgroundModesバックグラウンドでの位置情報
Table.3.3.2 - Info.plistに設定するKey (iOS)

  1. プローブデータ収集SDK(PredictiveSdk())をインポートします。
    import PredictiveSdk
    
  2. エントリポイントとなるsdkインスタンスを作成します。
    let sdk = PredictiveSdk()
    

APIs

  1. データ使用権限を取得します。

    1. 位置情報の権限取得

      sdkResult = await sdk.requestLocationPermission()
      
    2. モーションアクティビティの権限取得します。

      sdkResult = await sdk.requestActivityPermission()
      
    3. バックグラウンド実行時に位置情報を更新するよう設定します。

      sdk.startBackgroundPositioning()
      
  2. 以降はSDK内部動作の有効化~停止(Android/iOS共通)、を参照してください。

Option

Debugビルド時の内部動作ロギング設定変更です。

  • プロジェクトSchemeのArguments -> Environment Variables

NameValue
predLogLevelverbose, debug, info[default], warn, errorログレベル
doRecPredLogstrue, false[default]標準出力から~/Library/Logs/PredictiveSDK/へのファイル出力変更
Table.3.3.3 - ロギング設定 (iOS)

SDK内部動作の有効化~停止(Android/iOS共通)

  1. SDKの内部動作を有効化します

    この時点から、SDK内部でのセンサ・GNSSデータの収集、定期配信のタイマーを開始します。

    具体的な動作は、activateを参照してください。

    Android/iOS:activate
    sdk.activate(SdkUploadRequest(...))
    

  2. ユーザーアプリケーション側からプローブデータ収集SDKへ各種データを入力します

    1. ナビ情報を入力します

      具体的な動作は、addNaviInfoを参照してください。

      Android/iOS:addNaviInfo
      sdk.addNaviInfo(AppNaviInfo(...))
      

    2. ルートアクションログを入力します

      具体的な動作は、addRouteActionLogを参照してください。

      Android/iOS:addRouteActionLog
      sdk.addRouteActionLog(RouteActionLog(...))
      

    3. 車両情報を入力します

      具体的な動作は、setVehicleInfoを参照してください。

      Android/iOS:setVehicleInfo
      sdk.setVehicleInfo(VehicleInfo(...))
      

    4. 認証パラメータを入力します

      具体的な動作は、updateKeyを参照してください。

      Android/iOS:updateKey
      sdk.updateKey("newKey")
      

    5. 車両IDを入力します

      activate時には、車両ID取得が未設定だった場合を想定しています。

      具体的な動作は、setVehicleIdを参照してください。

      Android/iOS:setVehicleId
      sdkResult = sdk.setVehicleId("00000000-0...")
      

  3. SDKの稼働状態を確認します

    具体的な動作は、checkHealthを参照してください。

    Android/iOS:checkHealth
    val sdkStatus = sdk.checkHealth(needDetails)
    

  4. SDKの内部動作を停止します

    ユーザーアプリケーション側のライフサイクルに合わせて、任意のタイミングで呼び出してください。

    SDK内部でのセンサ・GNSSデータの収集、定期配信のタイマーを停止します。

    具体的な動作は、deactivateを参照してください。

    Android/iOS:deactivate
    sdk.deactivate()