iOS コンシューマ SDK の移行に関する移行

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 状態は、この MapViewSessionmapView に追加されていることを示します。MapViewSession のインスタンスが mapView に追加されると、didAddToMapView メソッドが呼び出されます。showMapViewSession メソッドを呼び出すと、mapViewSession がターゲット mapView に追加されます。

    [_mapView showMapViewSession:mapViewSessionA];
    

データ専用コンポーネントとユーザー インターフェース コンポーネントの使用

ライドシェアリング アプリを作成するには、データのみのコンポーネントまたは On-demand Rides and Deliveries Solution が提供するユーザー インターフェース要素 API を使用します。

データ専用コンポーネントの使用

データ専用コンポーネントを使用してライドシェアリング アプリを作成するには:

  1. プロバイダ ID とアクセス トークン プロバイダを指定して、GMTCServices オブジェクトを初期化します。
  2. GMTCServices オブジェクトの共有インスタンスから tripService プロパティを取得します。
  3. tripService オブジェクトの tripModelForTripName メソッドを使用して、指定したルートの GMTCTripModel オブジェクトのインスタンスを作成または取得します。
  4. 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 を使用してユーザーアプリを作成する手順は次のとおりです。

  1. プロバイダ ID とアクセス トークン プロバイダを指定して、GMTCServices オブジェクトを初期化します。
  2. 基本地図をレンダリングするために GMTCMapView オブジェクトを初期化します。
  3. GMTCServices オブジェクトの共有インスタンスから tripService プロパティを取得します。
  4. tripService オブジェクトの tripModelForTripName メソッドを使用して、指定したルートの GMTCTripModel オブジェクトのインスタンスを作成または取得します。
  5. GMTCTripModel インスタンスを使用して GMTCJourneySharingSession オブジェクトを作成します。
  6. mapViewGMTCJourneySharingSession オブジェクトを表示します。
  7. 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];