Consumer SDK for iOS を使用すると、モジュラー アーキテクチャを使用してライドシェアリング アプリを作成できます。特定のアプリに使用する API の部分を使用して、それを独自の API と統合できます。さまざまな機能の Consumer SDK API は、個別のモジュールにカプセル化されています。
ライドシェアリング アプリで古いバージョンの Consumer SDK を使用している場合、このモジュラー アーキテクチャを使用するには、アプリをアップグレードする必要があります。この移行ガイドでは、アプリをアップグレードする方法について説明します。
概要
Consumer SDK のモジュラー アーキテクチャでは、ユーザー インターフェースの状態を保持する MapViewSession
オブジェクトが導入されています。以前のバージョンの Consumer SDK では、アプリは状態間を行き来していました。このモジュラー アーキテクチャでは、MapViewSession
オブジェクトを作成し、セッションを地図に表示するオプションを使用できます。セッションが表示されていない場合、Maps SDK for iOS を使用した場合と同じコンテンツが地図に表示されます。
MapViewSession
オブジェクトは、モジュールの単一のライフサイクル使用インスタンスを表します。セッションはモジュールの API へのアクセス ポイントです。たとえば、移動経路の共有セッションは 1 つのルートをたどります。JourneySharingSession
オブジェクトを操作してルートをモニタリングします。
TripModel
オブジェクト
以前のバージョンの Consumer SDK では、TripService
インスタンスを使用して、一度に 1 つのライブルートしかモニタリングできませんでした。TripModel
オブジェクトを使用すると、1 つの TripService
インスタンスで複数のライブルートをモニタリングできます。TripModel
のインスタンスは TripService
から作成できます。TripModel
の各インスタンスは特定のルートにバインドされます。
TripModel
インスタンスは、更新時に登録済みサブスクライバーがそのルート上にいると、更新イベントを呼び出します。
TripModel
オブジェクトは、JourneySharingSession
オブジェクトのインスタンスの作成にも使用できます。
MapViewSession
州
MapViewSession
インスタンスは、一度に 1 つの mapView
でのみ追加できます。また、次の 2 つの状態のいずれかになります。
GMTCMapViewSessionStateInactive
状態は、このMapViewSession
がまだmapView
に追加されていないか、mapView
から削除されていることを示します。MapViewSession
インスタンスがmapView
から削除されると、didRemoveFromMapView
メソッドが呼び出されます。hideMapViewSession
メソッドまたはhideAllMapViewSessions
メソッドを呼び出すと、mapView
からmapViewSession
が削除されます。[_mapView hideMapViewSession:mapViewSessionA];
or
[_mapView hideAllMapViewSessions];
GMTCMapViewSessionStateActive
状態は、このMapViewSession
がmapView
に追加されていることを示します。MapViewSession
のインスタンスがmapView
に追加されると、didAddToMapView
メソッドが呼び出されます。showMapViewSession
メソッドを呼び出すと、mapViewSession
がターゲットmapView
に追加されます。[_mapView showMapViewSession:mapViewSessionA];
データ専用コンポーネントとユーザー インターフェース コンポーネントの使用
ライドシェアリング アプリを作成するには、データのみのコンポーネントまたは On-demand Rides and Deliveries Solution が提供するユーザー インターフェース要素 API を使用します。
データ専用コンポーネントの使用
データ専用コンポーネントを使用してライドシェアリング アプリを作成するには:
- プロバイダ ID とアクセス トークン プロバイダを指定して、
GMTCServices
オブジェクトを初期化します。 GMTCServices
オブジェクトの共有インスタンスからtripService
プロパティを取得します。tripService
オブジェクトのtripModelForTripName
メソッドを使用して、指定したルートのGMTCTripModel
オブジェクトのインスタンスを作成または取得します。GMTCTripModel
インスタンスのコールバックを登録して、ルートのモニタリングを開始します。
次の例は、データのみのコンポーネントを使用する方法を示しています。
[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
// Register for the trip update events.
[tripModel registerSubscriber:self];
// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];
UI 要素 API を使用する
オンデマンド配車と配達ソリューションのユーザー インターフェース要素 API を使用してユーザーアプリを作成する手順は次のとおりです。
- プロバイダ ID とアクセス トークン プロバイダを指定して、
GMTCServices
オブジェクトを初期化します。 - 基本地図をレンダリングするために
GMTCMapView
オブジェクトを初期化します。 GMTCServices
オブジェクトの共有インスタンスからtripService
プロパティを取得します。tripService
オブジェクトのtripModelForTripName
メソッドを使用して、指定したルートのGMTCTripModel
オブジェクトのインスタンスを作成または取得します。GMTCTripModel
インスタンスを使用してGMTCJourneySharingSession
オブジェクトを作成します。mapView
にGMTCJourneySharingSession
オブジェクトを表示します。GMTCTripModel
インスタンスのコールバックを登録して、ルートのモニタリングを開始します。
次の例は、ユーザー インターフェース API の使用方法を示しています。
[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
GMTCJourneySharingSession *journeySharingSession =
[[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
// Add the journeySharingSession instance on the mapView for UI updating.
[self.mapView showMapViewSession:journeySharingSession];
// Register for the trip update events.
[tripModel registerSubscriber:self];
// To remove the JourneySharingSession from the mapView:
[self.mapView hideMapViewSession:journeySharingSession];
// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];
モジュール アーキテクチャ コードの変更
配車アプリで以前のバージョンの Consumer SDK を使用している場合、更新されたモジュラー アーキテクチャでは、コードを変更する必要があります。このセクションでは、その変更の一部について説明します。
ルートのモニタリング
更新されたモジュラー アーキテクチャでは、データレイヤとユーザー インターフェースの両方のユーザーに対してコードを変更する必要があります。
以前のバージョンでは、データレイヤ ユーザーは次のコードを使用してルートのモニタリングを処理していました。
GRCTripRequest *tripRequest =
[[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
tripName:tripName
autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];
モジュラー アーキテクチャを使用する場合、データレイヤのユーザーは次のコードを使用します。
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];
それより前のバージョンでは、ユーザー インターフェース ユーザーは次のコードを使用してルートのモニタリングを処理していました。
// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];
// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];
モジュラー アーキテクチャを使用する場合、ユーザー インターフェース ユーザーは次のコードを使用します。
// Show the Journey Sharing user interface.
GMTCJourneySharingSession *journeySharingSession =
[[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
[self.mapView showMapViewSession:journeySharingSession];
// Hide the Journey Sharing user interface.
[self.mapView hideMapViewSession:journeySharingSession];