Android 用 Navigation SDK を活用するためのベストプラクティス
Yash Dave
Staff Software Engineer, Google Maps Platform
※この投稿は米国時間 2024 年 10 月 16日に、Google Maps Platform blog に投稿されたものの抄訳です。
Google Maps Platform チームは、先日 Navigation SDK を発表しました。これにより、使い慣れた Google マップのターン バイ ターン方式のナビゲーション体験を、Android および iOS アプリケーションにシームレスに統合することができます。
このブログでは、Android アプリケーション用の Navigation SDK を使用して、スムーズで一貫性があり、信頼性の高いナビゲーション体験を構築するためのベストプラクティスをいくつか紹介します。
ナビゲーションマップとのインタラクション
Navigation SDK を利用する場合、NavigationView のラッパーであるSupportNavigationFragment を使用するか、NavigationView を直接使用することもできます。ほとんどの場合、NavigationView を直接使用するよりも SupportNavigationFragment を使用することをお勧めします。SupportNavigationFragment は NavigationView のライフサイクル コールバックを処理するため、自分で管理する必要はありません。一方、NavigationView を直接使用する必要がある場合は、ライフサイクル メソッドとイベントの管理に注意してください。
ベストプラクティス
- 可能な限り、NavigationView ではなくSupportNavigationFragment を使用する。
- NavigationView を使用する場合は、ライフサイクルメソッドを呼び出すときに厳密な順序を使用する。
- NavigationViewを使用する場合は、ライフサイクルイベントをアクティビティまたはフラグメントのいずれかから呼び出し、両者から呼び出さない。
詳細については、Navigation SDK 開発者ドキュメントの「ナビゲーションマップのインタラクション」を参照してください。
ナビゲーション通知の管理
ナビゲーション通知は、ユーザーがナビゲーションしているときに、目的地を設定している場合と設定していない場合の両方で表示され、位置更新の精度を確保するのに役立ちます。アプリがバックグラウンドからフォアグラウンドサービスを開始したり、バックグラウンドから位置情報にアクセスしたりするための Android の制限を管理することで、位置情報の精度を最大化し、バッテリーの使用量を最小化し、メモリリークを回避することが重要です。
ベストプラクティス
- アプリユーザーから「常に許可」の位置権限を要求する。
- ナビゲーション通知をクリアするために、リスナーを適切にクリーンアップする。
- NavigationApi#initForegroundServiceManager メソッドを再呼び出しするときは、最初に NavigationApi#clearForegroundServiceManager を呼び出す。
詳細については、Navigation SDK 開発者ドキュメントの「バックグラウンドでの位置情報使用」を参照してください。
GoogleMap オブジェクトとのインタラクション
Navigation SDK for Android は、アプリにナビゲーション体験を追加できるだけでなく、Maps SDK for Android の非ナビゲーションマップ機能も含まれています。非ナビゲーションマップは、GoogleMap クラスを使用してアクセスします。GoogleMap APIを使用すると、ポリゴンを描画したり、アイコンをカスタマイズしたりするなど、カスタムマップ体験を作成することができます。アプリで GoogleMap 機能を実装する場合、非ナビゲーションマップとナビゲーションマップを分離し、ナビゲーション体験に関連する Google マップのライフサイクルを管理することが重要です。
ベストプラクティス
- ナビゲーション体験とは別のマップインスタンスで GoogleMap 機能を実装する。
- getMapAsync を使用して GoogleMap インスタンスを取得する。
詳細については、 Navigation SDK 開発者ドキュメントの「GoogleMap のインタラクション」を参照してください。
インスタンスのクリーンアップ
インスタンスとセッションが不要になった際にこれらをクリーンアップすることは、メモリリークやその他の問題を回避するために重要です。特に、ナビゲーション先をクリアし、GoogleMapオブジェクト上のマップ要素をクリーンアップするようにしてください。
ベストプラクティス
- ナビゲーションセッションが完了したら、Navigator#clearDestinations とNavigator#cleanup を使用する。
- GoogleMap要素が不要になったら、クリーンアップする。
詳細については、Navigation SDK開発者ドキュメントの「インスタンスのクリーンアップ」を参照してください。
追加の推奨事項
上記の実装上のベストプラクティスに加えて、次の推奨事項に従うことで、最新のNavigation SDKの開発状況を把握することができます。
- Navigation SDK のビルドには Maven を使用する。
- Navigation SDK の最新バージョンを使用する。
- 必須サービス アナウンスメントを最新の状態に保つ。
- 廃止されたメソッドを使用しない。
- GitHub でデモアプリをフォローする。
Navigation SDK との統合をはじめてみましょう。Navigation SDK API ドキュメントとリファレンスを参照してください。これらのベストプラクティスに従うことで、ユーザーがスムーズで信頼性の高いナビゲーション体験を得られるようにすることができます。
-Google Maps Platform Staff Software Engineer、Yash Dave