iOS Tüketici SDK'sı Modülerleştirme Taşıma

iOS için Tüketici SDK'sı, modüler bir mimari kullanarak Ridesharing uygulamaları oluşturmanıza olanak tanır. Uygulamanız için kullanmak istediğiniz API'nin parçalarını kullanabilir ve kendi API'lerinizle entegre edebilirsiniz. Farklı özelliklere yönelik Tüketici SDK'sı API'leri ayrı modüller içinde kapsüllenir.

Ridesharing uygulamanız Tüketici SDK'sının önceki sürümlerini kullanıyorsa bu modüler mimariyi kullanmak için uygulamanızı yükseltmeniz gerekir. Bu taşıma rehberinde, uygulamanızı nasıl yeni sürüme geçireceğiniz açıklanmaktadır.

Genel bakış

Tüketici SDK'sı modüler mimarisi, kullanıcı arayüzü durumunu barındıran bir MapViewSession nesnesi sunar. Tüketici SDK'sının önceki sürümlerinde uygulamalar eyaletler arasında geçiş yapıyordu. Bu modüler mimariyle bir MapViewSession nesnesi oluşturur ve oturumu harita üzerinde görüntüleme seçeneğine sahip olursunuz. Hiç oturum gösterilmiyorsa harita, yalnızca iOS için Haritalar SDK'sını kullanan içerikle aynı içeriği gösterir.

MapViewSession nesnesi, bir modülün tek bir yaşam döngüsü kullanım örneğini temsil eder. Oturumlar, modül API'lerine erişim noktalarıdır. Örneğin, bir Yolculuk Paylaşımı oturumu tek bir geziyi izler. Geziyi izlemek için JourneySharingSession nesnesiyle etkileşimde bulunursunuz.

TripModel nesne

Tüketici SDK'sının önceki sürümlerinde TripService örneği, aynı anda yalnızca bir canlı geziyi izlemenize imkan tanır. TripModel nesnesi kullanarak tek bir TripService örneğinde birden fazla canlı geziyi izleyebilirsiniz. TripService üzerinden TripModel örneği oluşturulabilir ve TripModel öğesinin her örneği belirli bir geziye bağlanır.

Güncellendiğinde kayıtlı bir abone geçişteyse TripModel örneği, güncelleme etkinliklerini çağırır.

TripModel nesnesi, JourneySharingSession nesnesinin bir örneğini oluşturmak için de kullanılabilir.

MapViewSession eyalet

Bir MapViewSession örneği, tek seferde yalnızca bir mapView için eklenebilir ve aşağıdaki iki durumdan birinde olabilir:

  • GMTCMapViewSessionStateInactive durumu, bu MapViewSession öğesinin henüz herhangi bir mapView öğesine eklenmemiş olduğunu veya bir mapView öğesinden kaldırıldığını belirtir. MapViewSession örneği bir mapView öğesinden kaldırıldığında didRemoveFromMapView yöntemi çağrılır.

    hideMapViewSession veya hideAllMapViewSessions yöntemi çağrıldığında, mapViewSession öğesi bir mapView öğesinden kaldırılır:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    veya

    [_mapView hideAllMapViewSessions];
    
  • GMTCMapViewSessionStateActive durumu, bu MapViewSession öğesinin bir mapView öğesine eklendiğini gösterir. MapViewSession öğesinin bir örneği mapView öğesine eklendiğinde didAddToMapView yöntemi çağrılır. showMapViewSession yöntemi çağrıldığında, mapViewSession hedefine mapView eklenir:

    [_mapView showMapViewSession:mapViewSessionA];
    

Yalnızca veri ve kullanıcı arayüzü bileşenlerini kullanma

Yalnızca veri içeren bileşenleri veya İsteğe Bağlı Yolculuk ve Teslimat Çözümü tarafından sağlanan kullanıcı arayüzü öğesi API'lerini kullanarak araç paylaşma uygulaması oluşturabilirsiniz.

Yalnızca veri bileşenlerini kullanma

Yalnızca veri bileşenleri kullanarak araç paylaşma uygulaması oluşturmak için:

  1. Sağlayıcı kimliğini ve erişim jetonu sağlayıcısını belirterek bir GMTCServices nesnesini başlatın.
  2. GMTCServices nesnesinin paylaşılan örneğinden tripService özelliğini alın.
  3. tripService nesnesinin tripModelForTripName yöntemini kullanarak belirli bir gezi için GMTCTripModel nesnesinin örneğini oluşturun veya alın.
  4. Gezi izlemeyi başlatmak amacıyla GMTCTripModel örneği için geri çağırmaları kaydedin.

Aşağıdaki örnekte yalnızca veri bileşenlerinin nasıl kullanılacağı gösterilmektedir:

[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];

Kullanıcı arayüzü öğesi API'lerini kullanma

İsteğe Bağlı Yolculuk ve Teslimat Çözümü kullanıcı arayüzü öğesi API'lerine sahip bir Tüketici uygulaması oluşturmak için şu prosedürü uygulayın:

  1. Sağlayıcı kimliğini ve erişim jetonu sağlayıcısını belirterek bir GMTCServices nesnesini başlatın.
  2. Temel haritayı oluşturmak için bir GMTCMapView nesnesini başlatın.
  3. GMTCServices nesnesinin paylaşılan örneğinden tripService özelliğini alın.
  4. tripService nesnesinin tripModelForTripName yöntemini kullanarak belirli bir gezi için GMTCTripModel nesnesinin örneğini oluşturun veya alın.
  5. GMTCTripModel örneğiyle bir GMTCJourneySharingSession nesnesi oluşturun.
  6. mapView üzerinde GMTCJourneySharingSession nesnesini göster.
  7. Gezi izlemeyi başlatmak amacıyla GMTCTripModel örneği için geri çağırmaları kaydedin.

Aşağıdaki örnekte, kullanıcı arayüzü API'lerinin nasıl kullanılacağı gösterilmektedir:

[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];

Modüler mimari kod değişiklikleri

Ridesharing uygulamanız Tüketici SDK'sının önceki sürümlerini kullanıyorsa güncellenmiş modüler mimari için kodunuzda bazı değişiklikler yapmanız gerekir. Bu bölümde söz konusu değişikliklerden bazıları açıklanmaktadır.

Gezi izleme

Güncellenen modüler mimari, hem veri katmanı hem de kullanıcı arayüzü kullanıcıları için kod değişikliği gerektirir.

Önceki sürümlerde, veri katmanı kullanıcısı aşağıdaki kodu kullanarak gezi izlemeyi halledebilirdi:

GRCTripRequest *tripRequest =
    [[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
                                         tripName:tripName
                          autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];

Bir veri katmanı kullanıcısı modüler mimariden şu kodu kullanır:

GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];

Önceki sürümlerde, kullanıcı arayüzü kullanıcısı aşağıdaki kodu kullanarak gezi izlemeyi gerçekleştirebiliyordu:

// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];

// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];

Modüler mimariyi kullanan bir kullanıcı arayüzü kullanıcısı aşağıdaki kodu kullanır:

// 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];