主な概念

次のユースケースのセクションでは、最も一般的な使用シナリオについて説明し、 HERE SDK for Flutter を最大限に活用するためのヒントとわかりやすいガイドラインを示します。

このガイドの使用方法

このガイドは、任意の順序で読むことができます。 すべてのセクションが互いに独立しているので、任意のセクションをスキップして、最も関心のあるトピックに直接進むことができます。

  • 例のセクションでは、このユーザー ガイドに付属するサンプルアプリを見つけることができます。
  • HERE マップを表示する最初のアプリの作成に関心がある場合 は、はじめにセクションで最初の簡単な手順を確認してください。
  • この開発者ガイドでカバーされている利用可能なユースケースの概要を参照できます。

探しているユースケース が見つからない場合は 、リリース ノート を開いて キーワード検索を実行してください。 リリース ノート には、 HERE SDK 4.8.2.0 以降に導入されたすべての機能が含ま れています。また、多くの場合、利用開始 の役立つヒントや、 API リファレンス またはこの開発者ガイド での詳細なコンテンツの参照先が含まれています。

表記規則

このガイドでは コールバックやリスナー名など、すべての種類の情報およびその他の詳細情報を表示するために、ラムダ表記を使用しないことを推奨します。 Android Studio で は匿名クラスと lambdas の間のワンクリック変換がサポートされているため、個人的な好みに合わせてサンプルを簡単に変更できます。

オブジェクトを廃棄します

インスタンスが参照されなくなった場合、または null に設定された場合、すべての HERE SDK クラスが Fluter によってガベージコレクションされます。

ホスティングウィジェットの有効期限が終了すると、を呼び出し SDKNativeEngine.sharedInstance?.dispose()てリソースを解放できます。 また、へのすべての参照 SDKNativeEngine をに設定する必要が null あります ( 存在する場合 ) 。 呼び出し dispose() によって保留中のリクエストが停止され、まだ実行中の開いているファイルおよびデータベースが閉じられます。 dispose() 関連する HERE SDK 機能を呼び出した後は、 HERE SDK を再度初期化しない限り、使用しないでください。 既定のコンストラクタを使ってSearchEngine()RoutingEngine()などのエンジンを作成した場合は、これらのインスタンスも再作成する必要があります。 基本 SDKNativeEngine 的に、の同じインスタンスを使用したすべてのエンジンは、廃棄後に再作成する必要があります。

コールバックとリスナー

  • HERE SDK は 、検索結果などの単一のイベント通知のコールバックを公開します。
  • ジェスチャイベントなどの繰り返し発生するイベント通知に は、リスナー が使用されます。 複数のリスナを設定できる場合は、メソッドパターンadd_x()remove_x()となり、命名規則として使用されます。 一度に設定できるリスナーが 1 つだけの場合、リスニングを停止するようにnull設定できるset_x()パターンが使用されます。
  • 開発者は、コールバック の範囲内のエラーを適切に処理する責任があります。 ガイドラインとして、例外をスローできるコードを処理する必要があります。

デバッグログ

LogAppender このインターフェイスを使用し SDKNativeEngineて、独自のログクラスをに挿入できます。 この方法では、 HERE SDK のリリースビルドの場合でも、さまざまな事前定義ログレベルのアプリメッセージをログに記録できます。

iOS シミュレータを実行している場合、ターミナルから次のコマンドを実行することで、 Xcode を実行せずにログを取得できます。

xcrun simctl spawn booted log stream --level debug

コードスニペット

表示されているコードスニペットは、自分のアプリケーションで使用できるベストプラクティスのサンプルコードをカバーしています。 ただし、このガイドの説明的なアプローチを単純化し、影を付けないようにするために、特にエラー処理や堅牢なスレッド処理については、すべてのエッジシナリオが処理されるわけではありません。 明らかなコードが残っている場合も ありますが、付属のサンプルアプリで確認できます。このアプリは、有効な HERE Credentials のセットを使用して、サポートされている任意のデバイスで即座に構築および展開できます。

設計原則

付属の サンプル アプリは同じ構造に従います。 HERE SDK のサンプルコードは、できるだけ周囲のプラットフォームコードから分離されます。 表示されている API の関連する部分を簡単に確認できるようにしてください。 各例のアプリは、 HERE SDK の初期化元と同じエントリポイントに従います。 各アプリは HERE SDK のさまざまな側面に焦点を当てているため、そのコードは、クラス名に "...example.dart" を付けてポストフィックスされた 1 つのクラスに含まれています。 ほとんどの MapView 場合、このクラスは、作業を開始するためにへの参照を取得します。

「 Everything is a ウィジェット」という一般的なフレーズにもかかわらず、このサンプルコードにはほとんどのフラッタの依存関係が含まれていません。その代わり、ほとんどの場合、 HERE SDK の使用方法を示す純粋な DART コードが使用されます。

非推奨とベータ版

HERE SDKの開発チームは、一貫したインターフェイスとともに、最も柔軟でありながら最も使いやすいAPIを提供するために、利用可能なAPIを常に見直し、改善しようとしています。

同時に、通常隔週で発生するリリース全体で安定したAPIを確保したいと考えています。 したがって、非推奨プロセスに従います。 私たちのポリシーは、 リリースノートで非推奨が発表された後の次のメジャーバージョンから開始する2つのメジャーバージョンの非推奨APIを維持することです。つまり、6か月から9か月の間です。 APIリファレンスでは、インターフェイスが非推奨としてマークされたときに、影響を受けるバージョンを常に確認できます。

新しいAPIや最終的には不安定なAPIの一部は 、APIリファレンスで「ベータ」と表示されています。 ベータ版リリースでは、特に明記されていない限り、非推奨プロセスは実行されません。 ベータAPIを使用する場合は、いくつかのバグや予期しない動作が発生する可能性があることに注意してください。

もちろん、改善の可能性についてのフィードバックには常に興味があります。

依存関係管理

現在、 https://pub.dev/ 経由などの依存関係管理はまだサポートされていません。 つまり、 はじめに は、「 HERE SDK プラグイン」セクションで説明されているように、アプリケーションプロジェクトにローカルにコピーする必要があります。

HERE SDK を他のフレームワークと併用します

HERE SDK は他のフレームワークと併用できます。 たとえば、開いている道路地図をと結合 SearchEngineすることもできます ( 結合する場合 ) 。

  • Xamarin : HERE SDK は Xamarin をサポートしていませんが、 HERE SDK が提供するパブリック API の上に Xamarin のラッパーを実装できます。 Xamarin の関連するテストツールをサポートするために、 HERE SDK に変更を加えることはありません。

  • ネイティブに反応: リアクトネイティブはサポートされていません。 ただし、お客様ご自身でラッパーを実装することはできますが、このようなタスクに対するサポートは提供していません。

トランザクションおよび使用状況の統計情報

HERE SDK では、アプリ が作成したリクエストまたはトランザクションの数を照会するためのダイレクト API は提供されていませんが、この目的で外部 REST API を使用できます。 HERE Usage API を使用 すると、このようなデータを要求できます。 組織 ID org123456789 と開始日と終了日の例 :

https://usage.bam.api.here.com/v2/usage/realms/org123456789?startDate=2022-07-01T10:39:51&endDate=2022-08-30T10:39:51

詳細については 、コスト管理のドキュメントを参照してください。

HERE SDK Thread Safe ですか ?

HERE SDK がスレッドセーフであることは保証されていません。また、メインスレッドから SDK を呼び出す必要があります。 内部的には、 HERE SDK はほとんどの作業をバックグラウンドスレッドにオフロードしますが、コードへのコールバックは常にメインスレッドで発生します。 一般に、呼び出し元はスレッドセーフであることに注意してください。 たとえば、コードが同期されていない限り、異なるスレッドでエンジンを再利用することは安全ではありません。

TaskHandles を使用して非同期操作をキャンセルします

ほとんどの非同期メソッドは TaskHandle 、 As immediate の戻り値を提供しますが、操作の最終結果は遅延のある完了ハンドラで返されます。 は TaskHandle ステータス情報を提供し、進行中の操作を中止できます。

ネイティブビューのサポート

HereMap Android ので は、ハイブリッドコンポジション モードを使用できます。 デフォルト では、仮想表示モードはマップ ビュー によって使用されます。 ネイティブビューでハイブリッドコンポジションモードを使用するには 、次のように HereMap を作成するときにオプションのコンストラクターパラメーター mode を設定します。HereMap(mode: NativeViewMode.hybridComposition, ...)

ハイブリッドコンポジション モードは、 Android 12 以降を実行しているデバイスに推奨されます。 Android の下位バージョンでは、パフォーマンスに影響が出る可能性があります。 ハイブリッドコンポジション モードおよび仮想表示モードの詳細 については、 HERE を参照してください。

単体テスト

すべてのクラスが完全にモックアップ可能であるため、 HERE SDK を使用するアプリ ロジックの単体テストを簡単に記述できます。 以下に、 Mockito を使用した例を示します。 これは、分岐されたオブジェクトを作成できる他のほとんどのフレームワークとも連携します。

([Angle])
void main() {
  group('Angle', () {
    test('test Angle', () {
      var mockAngle = MockAngle();

      when(mockAngle.degrees).thenReturn(10.0);

      expect(mockAngle.degrees, 10.0);
      verify(mockAngle.degrees).called(1);
    });
  });
}

上記では、 @GenerateMocks([Angle]) HERE SDK クラスの模擬を作成するために Mockito 注釈を追加します Angle。 自動的に作成されたという名前のモックアップにアクセスする MockAngle には、次のように、作成したファイルをインポートする必要があります。import 'main_test.mocks.dart'

フラッタの一般的な単体テストの詳細 については、この概要を参照してください。

UnitTestingExampleアプリで 、その他のユースケースの例を確認してください。

カバレッジ

サポート対象の国および言語の詳細については、[カバレッジページ]を参照してください。

範囲の定義

任意で、アプリケーションに複数のスコープを定義できます。たとえば、アプリをテストするための debugScope を定義できます。アプリ のプロダクションバージョンでは、スコープを 空のままにすることができます。これが既定値です。 プロジェクト ID の設定方法の詳細については、『IAM ガイド』を参照してください。

各アプリ は、少なくとも 1 つのプロジェクトに属しています。 HERE platform アカウントを使用してプロジェクトマネージャーで 、「プロジェクト」を選択します。 これにより、使用可能なプロジェクト ID を表示できます。 さらに追加することもできます。 各プロジェクト ID に は、 HERE リソースネーム 値が表示されます。

HERE リソースネーム 値をファイルのスコープとして plist 次のように設定します。

<key>HERECredentials</key>
<dict>
    <key>AccessKeyId</key>
    <string>YOUR_ACCESS_KEY_ID</string>
    <key>AccessKeySecret</key>
    <string>YOUR_ACCESS_KEY_SECRET</string>
    <!-- Optionally, set a project scope. -->
    <key>Scope</key>
    <string>YOUR_PROJECT_SCOPE</string>
</dict>

AndroidManifestは、次の操作を行います。

<!-- Optionally, set a project scope. -->
<meta-data
   android:name="com.here.sdk.access_scope"
   android:value="YOUR_PROJECT_SCOPE" />

このガイドに従って、プロジェクトの管理方法を確認してください。

プロジェクト ID は一意である必要があり、組織のアカウントの有効期間中は変更できません。 プロジェクト ID の長さは 4 ~ 16 文字である必要があります。 HERE リソースネーム 値にも影響があります。 スコープ /HRN がアプリケーションによって設定されている場合、そのスコープは認証およびアプリケーションの内部トークン 作成に使用されます。 不明なスコープが設定されている場合、認証の試行は失敗し、アプリケーションログにそのことが示されます。

エンジン

HERE SDK には、 複数のモジュール(またはエンジン)が含ま れています。これらのモジュールは、RoutingEngineを使用してルートを計算する、またはSearchEngineを使用して検索結果を要求するなどの特定のタスクを実行するために呼び出されます。 HERE SDK で使用できるエンジンは他にも数多くあります。詳細については、以下の専用の章を参照してください。 ただし、ほとんどのエンジンで共通の概念が採用されているため、使いやすくなっています。 例 :

  • すべてのエンジンが非同期でタスクを実行し、メインスレッドで結果を受け取ります。
  • すべてのエンジンは、同様のインターフェイス、コールバック、およびエラー処理を共有します。
  • 1 つのエンジンの複数のインスタンスを並行して開始できます。
  • オンライン接続が必要です。

以下に、 HERE SDK で最も一般的なエンジンの概要を示します。

  • SearchEngine: ジオ コーディングや reverse ジオ コーディングなど、場所、提案、場所を検索するすべての機能が含まれています。
  • OfflineSearchEngine: すでにダウンロードされているマップ データを使用してリクエストをローカルで作成するオフラインバージョンの検索。
  • RoutingEngine / : TransitRoutingEngine さまざまなオプションやトランスポートタイプを含むルートを計算できます。
  • OfflineRoutingEngine: すでにダウンロードされているマップ データを使用してルートを計算するオフラインバージョン。
  • LocationEngine: 高度な HERE Positioning ソリューション。
  • ConsentEngine: を使用する前にユーザーの同意を集約するのに役立つサポートエンジン LocationEngine。例 : 。
  • Navigator / : VisualNavigator 名前に「 engine 」は含まれていませんが、これらのクラスはエンジンとして機能し、ターン・バイ・ターンナビ (矢印ナビ)のすべての機能を制御します。
  • DynamicRoutingEngine: 現在の交通状況に基づいて、より短いルートまたはより速いルートを定期的に検索するエンジン。 これは、ルートの代替案についてドライバーに通知するためのガイダンス中に役立ちます。
  • TrafficEngine: 交通事故を検索できるエンジン。
  • MapDownloader // : MapUpdaterRoutePrefetcher これらのクラスは、マップ データのダウンロードまたは更新を実行し、オフライン モードをサポートするすべてのアプリケーションの重要な部分をマークします。
  • VenueEngine: アプリへのプライベート施設 の統合をサポートする専用エンジン。
  • SDKNativeEngine: 資格情報をプログラムで設定し、他のいくつかの詳細設定を許可するには、が必要です。

を除くすべての HERE SDK エンジン SDKNativeEngineは、相互に独立して動作でき、データを要求するには HERE Credentials が必要です。

HERE SDK は、インスタンス化時に資格情報 を検証しません。 これは、認証を必要とする機能が使用された場合にのみ発生します。 障害が発生すると、専用のエラーメッセージが表示されます。 たとえば、SearchEngineSearchError.authentificationFailed エラーを返します。 他のエンジンでも同様のエラーコードが表示されます。

フリーミアム資格情報はほとんどの機能で動作し ますが、Navigate Edition などのエディション専用のオフライン マップなどの機能では動作しません。 資格情報 が無効な場合、ログには「 Failed to get the authentication トークン : 認証に失敗しました。エラーコード : 1 インチ これは、サービスの使用中に資格情報 が受け入れられないことを示します。 資格情報 が正しく設定されていることを確認するには、専用エンジンのプレミアム機能を使用して、エンジンがエラー値で応答するかどうかを確認します。

パラメータレスのコンストラクタを使用して、任意のエンジンを作成できます。 例 :

try {
  _searchEngine = SearchEngine();
} on InstantiationException {
  // Handle exception.
}

この既定のコンストラクタを使用するには、 HERE SDK が既に初期化されており、SDKNativeEngineの共有インスタンスがSDKNativeEngine.sharedInstance = sdkNativeEngineを直接呼び出して設定されているか、またはSDKNativeEngine.makeSharedInstance(options)を呼び出して暗黙的に設定されている必要があります。

まれ SDKNativeEngine なユースケース シナリオでは、次のセクションに示すように、の個々に作成されたインスタンスを受け取るオーバーロードされたコンストラクタを使用できます。

初期化中です

HERE SDK 4.12.1.0 以降では、 HERE SDK を手動で初期化する必要があります。 はじめに ガイドに従って、この方法を確認してください。

  • アプリ がアプリ の開始後すぐにマップ ビュー を表示する場合は、ほとんどの使用例ではじめに ガイドに従うだけで十分です。 ただし、
  • アプリ で後でマップ ビュー を表示する必要がある場合、または初期化を遅延する場合は、後で HERE SDK を初期化することもできます。
  • 注 : HERE SDK の初期化時間は、トランザクションおよび月間アクティブユーザー (MAU) のカウント方法には影響しません。

HERE SDK を初期化する手順は、次のとおりです。

  1. 電話 SdkContext.init(IsolateOrigin.main)。 HERE SDK はまだ初期化されていません。
  2. HERE SDK を作成し SDKOptions て初期化 SDKNativeEngineし、新しいを作成するために使用します。

SdkContext.init(IsolateOrigin.main) を初期化 Isolate し、 HERE SDK の初期化に必要な他のリソースを設定するため、必ずを 1 回呼び出してください。 分離株が異なる場合は、それらの分離株ごとに異なる init パラメーターを使用して初期化する必要があります。 通常は 、main.dartファイル内のmain()関数のinit()を呼び出すだけで十分です。 たとえば、ホットリスタート中 SdkContext.init(IsolateOrigin.main) に、既存のすべての分離株が削除され、 HERE SDK が再度実行されます。 ただし、このような場合 init() でも、 HERE SDK を実行する新しいカスタム分離を起動する場合は、再度呼び出す必要があります。

SDKNativeEngine およびなどの他のエンジンの作成 SearchEngine は、無視できる短時間で同期的に行われます。

HERE SDK は、次の 2 つの方法で初期化できます。

  • SDKNativeEngine との共有インスタンス SDKNativeEngine.makeSharedInstance(options)を作成します。
  • SDKNativeEngine 経由地の個々のインスタンスを作成 SDKNativeEngine​(options)します。

を呼び出すと SDKNativeEngine.makeSharedInstance(options)SDKNativeEngine HERE SDK で使用できるの共有インスタンスが作成されます。 このシングルトンアプローチでは、パラメータを必要としない既定のコンストラクタ (SearchEngine()) を使用できるため、 SearchEngineなどのエンジンを簡単に作成できます。 内部的に、SearchEngineは初期化時に作成したSDKNativeEngineの共有インスタンスを使用します。 したがって、 HERE SDK を再初期化する場合、パラメータレスコンストラクタを使用して作成されたすべてのエンジンも再度作成する必要があります。

また、まれな使用例で SDKNativeEngine は、各機能エンジンに個別のインスタンスを設定できます。

SearchEngine searchEngine = SearchEngine(sdkNativeEngine);

一般に、SDKNativeEngineを複数回初期化する必要はありません。 一度に設定できる共有インスタンスは 1 つだけ SDKNativeEngine.makeSharedInstance(options)です。この設定は、を呼び出したときに暗黙的に行われます。 または、 Available コンストラクタを使用し SDKNativeEngine て、のインスタンスを直接作成することもできます。 複数のインスタンスを個別に作成する場合、共有インスタンスは設定されませ SDKNativeEngine ん。各フィーチャエンジンは、上記のように as コンストラクタパラメータのインスタンスを使用して作成する必要があります。 この方法では、SearchEngineRoutingEngineなどの機能エンジンを、異なるSDKOptionsを持つ SDKNativeEngineの異なるインスタンスと一緒に使用できます。

SDKNativeEngine.sharedInstance = sdkNativeEngine々のインスタンスは、を呼び出して明示的に共有インスタンスとして設定できます。 注意 : この場合 dispose() は、を呼び出し await SDKNativeEngine.sharedInstance?.dispose()て、前のインスタンスがあることを確認してください。 SDKNativeEngine.makeSharedInstance(options)を呼び出してグローバルインスタンスを作成する場合、この呼び出しは不要です 。便宜上、この呼び出しによって、以前に共有されたインスタンスは内部的に破棄されます。

ほとんどの使用例では、複数のインスタンスを作成することはお勧めしません。 不明な点がある場合は、はじめに ガイドに示されているように、SDKNativeEngine.makeSharedInstance(options)経由でのみ HERE SDK を初期化することをお勧めします。 HERE SDK が必要になるたびにこの初期化方法を使用し SDKNativeEngine 、その後を廃棄できます。 たとえば、ウィジェット ごとに指定します。 ただし、ほとんどの場合、 HERE SDK がアプリケーションのライフタイム中に 1 回だけ初期化されると、より効率的になります。

複数 SDKNativeEngine のインスタンスが同じ アクセスキー ID を持つことはできません 。また、キャッシュパスは アクセスキー ID ごとに一意であることが保証されます すでに使用されているアクセスキー ID を使用して 2 番目のインスタンスが作成された場合 、InstantiationExceptionはスローされます。 経験則として、複数のインスタンスが必要な場合は、それぞれに異なる資格情報 のセットも必要です。

資格情報 のアクセスキー ID の一部が キャッシュパスに関連付けられています。 資格情報 が実行時に変更された場合 、前のキャッシュがなくなったように見えても、まだ存在しており、SDKNativeEngineを廃棄した後、または新しい資格情報 を設定した後で自動的に消去されないことがあります。 新しい資格情報 が設定されてから 、キャッシュパス が変更されました。 たとえば、前の資格情報 が復元されると、前のキャッシュを再度使用できます。

キャッシュの詳細については、 HERE を参照してください。

ヒント : 資格情報 を保護します

資格情報 を使用することを意図していない他の当事者に悪用を提供するために、お客様のを保護する必要があります。

資格情報 を安全に保つ 1 つのオプションは、 SSL 接続を使用して、それらを安全なサーバーに保存し、要求によって取得することです。

ベストプラクティスについては、次の点を考慮してください。

  • 機密データがプレーンテキストで保持されないようにするため。
  • 安全な通信チャネルを使用して資格情報を転送します。
  • デバイスのセキュリティメカニズムと強力な暗号化を使用して資格情報を保存します。
  • 改ざん防止およびデバッグ防止のコードを追加して、動的なランタイム実行中に潜在的な攻撃者がデータを傍受できないようにします。
  • アプリケーションの使用状況を追跡して異常を検出します。

マップ ビューの有無にかかわらず、エンジンを使用します

エンジンの動作にマップ ビュー は必要ありません。 したがって、マップ ビュー をアプリケーションに追加せずに、エンジンをスタンドアロンで実行できます。 このようにして、特定のエンジンのみを中心にアプリ を作成できます。 マップ ビュー を使用する場合と使用しない場合 - 新しいエンジンを作成する手順はまったく同じです。 HERE SDK を事前に初期化してください。

Android の権限

HERE SDK for Flutter 、必要なすべての権限を AndroidManifest.xml自動的に次の権限にマージします。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

これらの権限は機密ではなく、システムのインストール時にただちに付与されます。 HERE SDK がインターネットに接続できるようにする必要があるため、これらの権限は常に必要です。 これらの権限を処理する必要はありません。また、権限の処理方法については、 HERE SDK 固有の要件はありません。

ただし、ユーザーは、インストール後にデバイスのアプリ設定を使用してすべての権限を拒否できます。 簡易クラスを使用すると 、表示 されている HERE のようなアプリの起動時にユーザーに通知できます。 Flutter 自体には、権限を処理するメカニズムはありません。また、付随する Flutter のサンプルアプリでは、特定の Android 権限の処理は使用されません。 インターネット接続が利用できない場合、ほとんどの HERE SDK サービスは、このことを適切なエラーメッセージで示します。

HERE Positioning などの一部の HERE SDK 機能には、追加の権限が必要です。 専用 の「位置情報を検索」セクションで、位置情報の処理方法を参照してください。

HERE SDK オプション

HERE SDK は、の直接設定、 SDKNativeEngine またはでエンジンを初期化する際に設定できるさまざまなオプションで初期化 SDKOptionsできます。

API リファレンス に特にメモがない限り、どのオプションも永続化されません。 つまり、 HERE SDK を再度初期化する場合は、保持する場合に前のオプションを再度設定する必要があります。

さまざまなフィーチャエンジンに設定できるオプション 、または などの機能を使用 RoutingEngine してを計算 Route する場合にも、同じことが当てはまり CarOptionsます。

オフラインスイッチ

HERE SDK は、 HERE SDK 無線をサイレントにするためのグローバルオフラインスイッチを提供します。 このオフライン モード は、 HERE SDK がオンライン接続を開始できないようにします。

SDKNativeEngine.sharedInstance?.isOfflineMode = true;

たとえば、このモードでは、新しいマップタイルがキャッシュにロードされません。 Navigate Edition を使用している場合でも、検索(専用エンジン経由)、ルーティング(専用エンジン経由)、ガイダンスなどの機能を使用できます。

デバイス自体がフライトモードに設定されているかどうかは問題ではありません。 スイッチがアクティブの場合、 HERE SDK からの要求の発信がすべてブロックされます。 そのため、オフライン モード を再度無効にするまで、オンラインデータは使用されません。

ただし、HERE SDKを初期化するときに、いくつかの要求が行われることがあります。 HERE SDKを初期化するにアプリケーションをオフラインで起動したい場合は 、SDKOptionsでフラグofflineModetrueに設定 します。 実行時にこれを変更する予定がない場合は、このフラグだけで完全にオフラインで動作できます。

HERE SDK がオフラインになると、進行中およびキューに入っているすべてのリクエストが停止します。

HERE SDK がオフライン モード で動作するように切り替えられると、でレンダリングされたすべてのマップ データ MapView がキャッシュから取得さ れるか 、または永続ストレージから取得されます。 後者の場合は、 Navigate Edition などのエディションでのみ利用可能な、事前にダウンロードされたマップ データ が必要です。

HERE SDK がオフライン モード で動作するように切り替えられ、vehicleRestrictionsなどの一部のマップレイヤーがMapFeatures最上位で有効 になっている場合、このデータは、永続化されたストレージの一部としてすでにキャッシュされているか、またはRegionダウンロードされている場合にのみレンダリングされます。 このルールは、使用可能なすべての地図機能に適用されます。

デフォルトで MapFeatures は、一部のレイヤーはオフラインで使用できません。 たとえば terrain 、「 FeatureConfiguration 」をダウンロード可能なに含めるに Regionは、レイヤーを有効にする必要があります。 概要については 、最適化ガイドを参照してください。 これにもかかわらず、すべてのレイヤーは、あらかじめキャッシュされている場合にオフラインでアクセスできます。基本的には、画面上で地図をパンすることでアクセスできます。

外部 REST API で使用するアクセストークンを取得します

HERE SDK が初期化されるたびに、新しいアクセス トークン が内部的に生成されます。 複数 SDKNativeEngine のインスタンスがある場合、各インスタンスは独自のトークン を保持します。 Authentication.authenticate(SDKNativeEngine.sharedInstance, callback) コールバック が経由でトークン を提供する経由でトークン を更新および取得することもでき authenticationData.token ます。このトークン を使用して、外部 HERE REST API にアクセスできます。

HERE SDK 自体を使用する場合 は、トークン を把握する必要はありません。これはボンネットの下にのみ必要で、 HERE SDK がトークン 生成を自動的に処理しています。

不正使用からバックエンドを保護 するために、生成されたトークン数が多すぎる場合、またはアクセスされたサービス数が多すぎる時間帯にレート制限が適用されることがあります。 このような場合、エンジンが requestLimitReached エラーまたは類似のもので応答します。 アプリ の使用率が非常に高いと思われる場合は、事前に HERE の担当者に連絡して、必要に応じて上限を調整してください。

バグが発生した場合のサポート

クラッシュや予期しない動作が発生した場合は、 問題 の再現方法の詳細をお知らせください

HERE SDKのネイティブC++スタックでクラッシュが発生した場合、クラッシュログにはクラッシュが発生したアドレスのみが表示されます。 クラッシュが発生したスタックトレースを確認するには、これらのアドレスを記号化する必要があります。

ここではSDK 4.13.3以降 、iOS用のheresdk.xcframeworkにデバッグシンボルを含めています。 各デバイス・アーキテクチャーに追加されたdSYMファイルを探します。

App Storeまたは TestFlight経由で展開されたiOSアプリケーションの場合 、AppleのConnect Portalでクラッシュレポートを確認できます。

  • クラッシュレポートをダウンロードする代わりに 、XcodeでOpenをクリック すると、dSYMファイルを使用してシンボリックされたスタックトレースが表示されます。
  • これはFirebase Crashlytics および関連ソリューションでも機能するはずです。

heresdk.xcframeworkfatバイナリで あり、そのファイルサイズはデプロイ時にXcodeによって最適化されることに注意してください。 つまり、dSYMファイルはユーザーのデバイスでは使用できません。 したがって、アプリプロジェクトがホストされているマシンでXcodeを開くようにしてください。

私たちに連絡するときは、少なくともHERE SDKのバージョン、プラットフォーム、エディション、ログを必ず含めてください。 以下に、迅速な対応に役立つバグレポートのチェックリストを示します。

  • 問題の種類: たとえば、クラッシュや予期しない動作などです。
    • クラッシュが発生した場合は、次のようなクラッシュログを提供してください。 スタックトレース。
    • 予期しない動作が発生した場合は、予想される動作と実際の動作を説明します。
  • 問題は回帰であり、「はい」の場合はいつから発生していますか?
  • 問題の説明と再現手順の詳細: 問題は、サンプルアプリケーションのいずれかで再現可能ですか?または、問題を切り分けるコードを提供できますか?
  • どのようなAPIが呼ばれていますか(該当する場合)。 すべてのパラメータとオプションをリストしてみてください。
  • 再現率は?
  • OS、IDE、デバイス/シミュレータ(OS、名前)などの環境に関する情報を提供します。
  • マップデータバージョン/使用済みカタログ(該当する場合)。
  • 使用されている他のフレームワークまたはプラグインを、バージョン情報を含めて列挙します(該当する場合)。
  • スクリーンショットまたはビデオを追加します(該当する場合)。
  • 検索またはルーティングの問題が発生した場合は、問題が発生した地理座標またはGPXトレースを提供します。

リリースノートでは、既知の問題をリストしています。 また、実装上の問題を回避するために、この開発者ガイドの関連セクションに記載されている最新の手順とコード例に従うようにしてください。

」に一致する結果は 件です

    」に一致する結果はありません