מהו ניווט מותאם אישית?

המשמעות של חוויית ניווט בהתאמה אישית יכולה להיות כל דבר, החל מאפליקציה שמבטלת לחלוטין הנחיות ניווט עם ניווט רק כתהליך ברקע, ועד אפליקציה שצופה הנחיות בהתאמה אישית למסך נפרד מהמכשיר שמפעיל את הניווט.

מהי חוויית הניווט בהתאמה אישית?

  • מתחילים את הניווט ויוצרים סשן ניווט. כמו בחוויית הניווט ב-Google, חוויית ניווט בהתאמה אישית עדיין כוללת יצירה של מופע ניווט והגדרת היעד. עם זאת, בעזרת חוויית ניווט מותאמת אישית אפשר לעשות זאת על ידי יצירת סשן ניווט באמצעות GMSNavigationServices. סשן ניווט הוא אובייקט שלא נושא את מצב ממשק המשתמש, שיכול לפעול עם בקר תצוגה או בלי בקר.

    לצפייה בהדגמה: ההורדה של ה-SDK של הניווט כוללת הדגמה שאפשר להריץ כדי לראות דוגמה לחוויית ניווט שעוברת בין ניווט רגיל באמצעות ניווט רגיל לחוויית ניווט שמראה רק את מיקום המכשיר נע לאורך ציר פוליגוני.

  • ניווט פעיל – אתם מספקים. הנה הבדל משמעותי נוסף בין חוויית ניווט ש-Google מספקת לבין חוויית ניווט בהתאמה אישית. במקום לתת הדרכה למנהל האירועים המובנה ב-Navigation SDK, אתם יכולים להפעיל פיד מפורט ולהטמיע גורמים מטפלים באירועים דרך GMSNavigatorListener. כך תוכלו להגיב לאירועים המתוארים בקטע האזנה לאירועי ניווט.

  • סיום הניווט – אתם מספקים. כמו בחוויית הניווט ב-Google, כשמשתמשים בניווט מותאם אישית צריך גם לסיים את הניווט באופן שהכי מתאים לחוויית השימוש באפליקציה.

בטבלה הבאה מתוארים כמה תרחישי ניווט מותאמים אישית.

תרחיש לדוגמה

שלבים כלליים

עליך לספק הנחיות לנהג בפורמט טקסט בלבד למכשירים קטנים, כמו כלי רכב דו-גלגליים.

אפשר ליצור את כלי הניווט ולהגדיר את המסלול המפורט כפיד נתונים במכשיר עם מסך קטן, בזמן שהניווט פועל בטלפון הנייד של הנהג מחוץ לתצוגה המיידית שלו. למידע נוסף, ראו הפעלת פיד נתונים מפורט.

נהגים שמשתמשים באפליקציה רוצים לקבל מפת סקירה של רוב המסלול, עם מסלול מפורט מינימלי בלבד לרחובות העיר.

האפליקציה צריכה לאפשר לנהגים להיכנס ולצאת מחוויית הניווט ב-Google לפי הצורך, בלי לשנות את הגדרות הניווט עבור יעד ומצב נסיעה.

ללקוחות של שירותי ניידות: נהגים בדרך כלל נוסעים במסלולים קבועים עם היכרות גבוהה והם לא זקוקים להכוונה בכלל, אבל נדרשת דרך להבטיח שמערכת ניהול הרכבים תוכל לנהל משלוחים או נסיעות.

הגדרת ניווט. הגדרת היעד וקבלת עדכוני מיקום. משלבים את ה-SDK של Drive באפליקציה. לפרטים נוספים, אפשר לקרוא את המאמר 'תחילת העבודה עם SDK של Drive' עבור נסיעות ומשלוחים על פי דרישה או פתרון של Fleet Fleet.

יצירת הנחיות מותאמות אישית

בקטע הזה מוסבר על השלבים הכלליים שצריך לבצע כדי ליצור הנחיות מותאמות אישית.

התהליך הזה שונה מהתהליך שמתואר בקטע ניווט במסלול באופן הבא:

  • תחילה יוצרים סשן ניווט באופן עצמאי ומקבלים מופע של ניווט דרך הסשן במקום באמצעות קריאה לבקר של התצוגה המפורטת.
  • אתם מגדירים event listener כדי להגיב לאירועי ניווט ולנהל אותם.

  1. יוצרים סשן ניווט באמצעות GMSNavigationService.createNavigationSession ומתחילים לנווט באמצעות שיחת setDestination. במקומות שבהם חוויית הניווט ב-Google מפעילה את כלי הניווט דרך התצוגה של מפת הניווט, GMSNavigationServices שולטת ומקבלת רצף אירועים מסשן ניווט בנפרד ממופע של ממשק המשתמש. כלומר, היא יכולה לפעול ללא ממשק משתמש, או לעבור לכל חוויה שמבוססת על ממשק משתמש. בגישה זו, סשן הניווט ימשיך לפעול באפליקציה עד שמסירים ממנה את ההפניה האחרונה.
  2. הגדרת ספק של מיקומים חסומים. כדאי להשתמש בספק המיקום אם רוצים שבאפליקציה יהיה מעקב רציף אחר המיקום, למשל כשתצוגת ניווט עם נקודה כחולה לאורך המסלול.
  3. מגדירים מאזין לקבלת הדרכה מפורטת על ידי הטמעת הפרוטוקול GMSNavigatorListener. לאחר מכן, אפשר להפוך את המידע הזה למידע שנחוץ לך בשביל חוויית הניווט המותאמת אישית. לדוגמה:
    1. הטמעת שדות של טקסט בלבד לצורך העברה פשוטה של המסך של מסלולים.
    2. עיצוב ואכלוס שדות בממשק המשתמש.
  4. מגדירים סימולטור ניווט. זה הכרחי לפיתוח ולבדיקה.

יצירת סשן ניווט עצמאי

בקטעי הקוד הבאים מההדגמה מוצגים ניווט שנוצר בנפרד מבקר התצוגה. לאחר מכן הקוד מוסיף מפת סקירה שמציגה את המיקום הנוכחי שבו הכביש סומן.

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

העברת ניווט מחוויה מותאמת אישית לחוויית Google

קטע הקוד הזה ממחיש איך האפליקציה יכולה לאפשר למשתמש להיכנס לחוויית הניווט ב-Google מחוויית ניווט מותאמת אישית. קטע הקוד מראה גם איך האפליקציה מבצעת את המעבר בזמן שיתוף המפה.

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];