مهاجرت برای ماژولارسازی SDK مصرف کننده iOS

Consumer SDK برای iOS به شما امکان می دهد با استفاده از معماری ماژولار برنامه های Ridesharing ایجاد کنید. می توانید از بخش هایی از API که می خواهید برای برنامه خاص خود استفاده کنید، استفاده کنید و آنها را با API های خود ادغام کنید. API های Consumer SDK برای ویژگی های مختلف در ماژول های جداگانه کپسوله شده اند.

اگر برنامه Ridesharing شما از نسخه های قبلی Consumer SDK استفاده می کند، برای استفاده از این معماری مدولار باید برنامه خود را ارتقا دهید. این راهنمای مهاجرت نحوه ارتقاء برنامه خود را شرح می دهد.

بررسی اجمالی

معماری مدولار Consumer SDK یک شی MapViewSession را معرفی می کند که حالت رابط کاربری را نگه می دارد. در نسخه‌های قبلی Consumer SDK، برنامه‌ها بین ایالت‌ها جریان داشتند. با این معماری ماژولار، یک شی MapViewSession ایجاد می‌کنید و می‌توانید جلسه را روی نقشه نمایش دهید. اگر هیچ جلسه ای نشان داده نشود، نقشه همان محتوایی را نشان می دهد که فقط از Maps SDK برای iOS استفاده می کند.

یک شی MapViewSession یک نمونه استفاده از چرخه حیات یک ماژول را نشان می دهد. Session ها نقاط دسترسی به API های ماژول هستند. به عنوان مثال، یک جلسه اشتراک گذاری سفر به دنبال یک سفر منفرد انجام می شود. شما برای نظارت بر سفر با شی JourneySharingSession تعامل دارید.

شی TripModel

در نسخه‌های قبلی Consumer SDK، یک نمونه TripService به شما امکان می‌دهد هر بار فقط یک سفر زنده را نظارت کنید. با استفاده از یک شی TripModel ، می توانید چندین سفر زنده را در یک نمونه TripService نظارت کنید. یک نمونه از TripModel را می توان از TripService ایجاد کرد و هر نمونه از TripModel به یک سفر خاص محدود می شود.

نمونه TripModel در صورت به‌روزرسانی، رویدادهای به‌روزرسانی را فراخوانی می‌کند، اگر مشترک ثبت‌شده در سفر باشد.

شی TripModel همچنین می تواند برای ایجاد یک نمونه از شی JourneySharingSession استفاده شود.

وضعیت MapViewSession

یک نمونه MapViewSession را می توان در یک زمان تنها در یک mapView اضافه کرد و می تواند در یکی از دو حالت زیر باشد:

  • وضعیت GMTCMapViewSessionStateInactive نشان می دهد که این MapViewSession یا هنوز به هیچ یک از mapView اضافه نشده است یا اینکه از یک mapView حذف شده است. هنگامی که نمونه MapViewSession از یک mapView حذف شد، متد didRemoveFromMapView فراخوانی می شود.

    فراخوانی روش hideMapViewSession یا hideAllMapViewSessions ، mapViewSession از mapView حذف می‌کند:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    یا

    [_mapView hideAllMapViewSessions];
    
  • وضعیت GMTCMapViewSessionStateActive نشان می دهد که این MapViewSession به یک mapView اضافه شده است. وقتی نمونه ای از MapViewSession به mapView اضافه شد، متد didAddToMapView فراخوانی می شود. فراخوانی متد showMapViewSession mapViewSession به mapView هدف اضافه می کند:

    [_mapView showMapViewSession:mapViewSessionA];
    

استفاده از اجزای فقط داده و رابط کاربری

می‌توانید یک برنامه اشتراک‌گذاری سواری با استفاده از مؤلفه‌های فقط داده یا APIهای عنصر رابط کاربری ارائه شده توسط راه‌حل سواری و تحویل سفارشی ایجاد کنید.

استفاده از اجزای فقط داده

برای ایجاد یک برنامه اشتراک گذاری سواری با استفاده از مؤلفه های فقط داده:

  1. با مشخص کردن شناسه ارائه دهنده و ارائه دهنده رمز دسترسی، یک شی GMTCServices را راه اندازی کنید.
  2. ویژگی tripService را از نمونه مشترک شی GMTCServices دریافت کنید.
  3. با استفاده از روش tripModelForTripName شی tripService یک نمونه از یک شی 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];

با استفاده از API های عنصر UI

این روش را دنبال کنید تا یک برنامه مصرف کننده با APIهای عنصر رابط کاربری Rides و Deliveries Solution بر حسب تقاضا ایجاد کنید:

  1. با مشخص کردن شناسه ارائه دهنده و ارائه دهنده رمز دسترسی، یک شی GMTCServices را راه اندازی کنید.
  2. یک شی GMTCMapView را برای رندر کردن نقشه پایه راه اندازی کنید.
  3. ویژگی tripService را از نمونه مشترک شی GMTCServices دریافت کنید.
  4. با استفاده از روش tripModelForTripName شی tripService یک نمونه از یک شی GMTCTripModel را برای یک سفر مشخص ایجاد یا بازیابی کنید.
  5. یک شی GMTCJourneySharingSession با نمونه GMTCTripModel ایجاد کنید.
  6. شیء GMTCJourneySharingSession را در mapView نشان دهید.
  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];

کد معماری مدولار تغییر می کند

اگر برنامه Ridesharing شما از نسخه‌های قبلی 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];