Android 소비자 SDK 모듈화 마이그레이션

Android용 소비자 SDK를 사용하면 모듈식 아키텍처를 사용하여 차량 공유 앱을 만들 수 있습니다. API에서 특정 앱에 사용하려는 부분을 자체 API와 통합할 수 있습니다. 다양한 기능의 Consumer SDK API는 별도의 모듈로 캡슐화됩니다.

차량 공유 앱에서 이전 버전의 소비자 SDK를 사용하는 경우 이 모듈식 아키텍처를 사용하도록 앱을 업그레이드해야 합니다. 이 이전 가이드에서는 앱을 업그레이드하는 방법을 설명합니다.

개요

소비자 SDK 모듈식 아키텍처에는 사용자 인터페이스 상태를 보유하는 세션 객체가 도입됩니다. 이전 버전의 Consumer SDK에서는 앱이 상태 간에 전송되었습니다. 이 모듈식 아키텍처를 사용하면 Session 객체를 만들고 맵에 세션을 표시할 수 있습니다. 세션이 표시되지 않으면 지도가 비어 있습니다. 더 이상 '비어 있음' 또는 '초기화' 상태는 없습니다.

세션 객체는 모듈의 단일 수명 주기 사용 인스턴스를 나타냅니다. 세션은 모듈 API의 액세스 포인트입니다. 예를 들어 탐색 여정 공유 세션은 단일 이동을 따릅니다. 세션 객체와 상호작용하여 이동을 모니터링합니다.

세션 객체는 모듈 유형과 연결됩니다. 세션 객체의 동작은 세션을 초기화하는 데 사용된 객체의 수명 주기와 연결되어 있습니다.

TRIP_A를 추적하기 위해 TripModel 객체를 만든다고 가정해 보겠습니다. TRIP_A의 TripModel 객체를 다시 가져오려고 하면 동일한 TripModel 객체를 얻게 됩니다. TRIP_B를 추적하려면 새 TripModel 객체를 가져옵니다.

세션 상태

세션은 여러 상태 중 하나일 수 있습니다.

  • 생성된 세션은 Session 객체로 표현됩니다. create 메서드를 호출하여 세션을 만듭니다. 예를 들면 다음과 같습니다.

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • 시작된 세션은 사용자 인터페이스 요소의 데이터와 값을 업데이트할 수 있도록 등록됩니다. start 메서드를 호출하여 세션을 시작합니다. 예를 들면 다음과 같습니다.

    sessionA.start()
    
  • 표시된 세션이 자동으로 시작됩니다. 사용자 인터페이스 eelement를 표시하고 데이터 업데이트에 응답하여 업데이트합니다. showSession 메서드를 호출하여 세션을 표시합니다. 예를 들면 다음과 같습니다.

    ConsumerController.showSession(sessionA)
    
  • 중지된 세션은 데이터 새로고침을 중지하고 사용자 인터페이스 요소 업데이트를 중지합니다. stop 메서드를 호출하여 세션을 중지합니다. 예를 들면 다음과 같습니다.

    sessionA.stop()
    

데이터 전용 및 사용자 인터페이스 구성요소 사용

데이터 전용 구성요소 또는 주문형 차량 및 배송 솔루션에서 제공하는 사용자 인터페이스 요소 API를 사용하여 차량 공유 앱을 만들 수 있습니다.

데이터 전용 구성요소 사용

데이터 전용 구성요소를 사용하여 차량 공유 앱을 만들려면 다음 단계를 따르세요.

  • ConsumerApi 객체를 초기화합니다.
  • ConsumerApi에서 TripModelManager 객체를 가져옵니다.
  • TripModelManager로 이동 모니터링을 시작하여 TripModel 객체를 수신합니다.
  • TripModel 객체에 콜백을 등록합니다.

다음 예에서는 데이터 전용 구성요소를 사용하는 방법을 보여줍니다.

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})

사용자 인터페이스 요소 API 사용

ConsumerController 객체를 사용하여 주문형 차량 공유 및 배송 솔루션 사용자 인터페이스 요소 API에 액세스합니다.

주문형 차량 공유 및 배송 솔루션 사용자 인터페이스 요소 API로 차량 공유 앱을 만들려면 다음 단계를 따르세요.

  • ConsumerApi 객체를 초기화합니다.
  • ConsumerApi 객체에서 TripModelManager 객체를 가져옵니다.
  • TripModelManager에서 하나의 이동을 추적하는 TripModel 객체를 가져옵니다.
  • ConsumerMap[View/Fragment]를 애플리케이션 뷰에 추가합니다.
  • ConsumerMap[View/Fragment]에서 ConsumerController 객체를 가져옵니다.
  • 컨트롤러에 TripModel 객체를 제공하여 JourneySharingSession 객체를 가져옵니다.
  • 컨트롤러를 사용하여 JourneySharingSession를 표시합니다.

다음 예에서는 사용자 인터페이스 API를 사용하는 방법을 보여줍니다.

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = TripModelManager.getTripModel("trip_A");

// Session is NOT automatically started when created.
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
JourneySharingSession jsSessionB = JourneySharingSession.createInstance(tripB);

// But a session is automatically started when shown.
ConsumerController.showSession(jsSessionA);
ConsumerController.showSession(jsSessionB); // hides trip A; shows trip B.
ConsumerController.hideAllSessions(); // don't show any sessions

// Unregister listeners and delete UI elements of jsSessionA.
consumerController.showSession(jsSessionA);
jsSessionA.stop();
// Recreates and shows UI elements of jsSessionA.
jsSessionA.start();

모듈식 아키텍처 코드 변경사항

차량 공유 앱에서 이전 버전의 소비자 SDK를 사용하는 경우 업데이트된 모듈식 아키텍처에 따라 코드를 변경해야 합니다. 이 섹션에서는 이러한 변경사항 중 일부를 설명합니다.

위치 정보 액세스 권한

Consumer SDK에는 FINE_LOCATION 권한이 더 이상 필요하지 않습니다.

경로 모니터링

업데이트된 모듈식 아키텍처를 사용하려면 데이터 레이어 및 사용자 인터페이스 사용자 모두의 코드를 변경해야 합니다.

이전 버전에서는 데이터 영역 사용자가 다음 코드를 사용하여 경로 모니터링을 처리할 수 있었습니다.

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})

모듈식 아키텍처를 사용하면 데이터 영역 사용자는 다음 코드를 사용할 수 있습니다.

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})

이전 버전에서는 사용자 인터페이스 사용자가 다음 코드를 사용하여 경로 모니터링을 처리할 수 있습니다.

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")

ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()

모듈식 아키텍처를 사용하면 사용자 인터페이스 사용자는 다음 코드를 사용할 수 있습니다.

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");

ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);

지도 중심 재설정

활성화된 세션이 없으면 지도뷰 또는 프래그먼트가 초기화 시 더 이상 사용자 위치로 확대/축소되지 않습니다. 자동 카메라 기능이 사용 설정되어 있는 한 계속 자동으로 확대/축소되어 활성 탐색 여정 공유 세션을 표시합니다. AutoCamera는 기본적으로 사용 설정되어 있습니다.

이전 버전에서는 다음 코드를 사용하여 현재 활성 세션의 카메라를 중앙에 배치했습니다.

consumerController.centerMapForState()

모듈식 아키텍처를 사용할 때는 다음 코드를 사용합니다.

CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
   googleMap.animateCamera(cameraUpdate);
   // OR googleMap.moveCamera(cameraUpdate);
}

이전 버전에서 AutoCamera 기능을 사용 중지하려면 다음 코드를 사용합니다.

consumerController.disableAutoCamera(true);

모듈식 아키텍처를 사용할 때는 다음 코드를 사용합니다.

consumerController.setAutoCameraEnabled(false);

맞춤설정

주문형 차량 공유 및 배송 솔루션 맞춤 FAB가 지도에서 삭제되었습니다.

맞춤 FAB

FAB의 연결된 메서드도 삭제되었습니다.

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()