השתמש במדריך זה כדי לשלב את ה-SDK של הניווט ל-iOS באפליקציה ל-iOS.
דרישות מוקדמות
- לפני שתתחיל להשתמש ב-SDK של הניווט ל-iOS, תזדקק לפרויקט עם חשבון לחיוב ו-Maps SDK עבור iOS מופעל. מומלץ ליצור כמה בעלים של פרויקטים ואדמינים לענייני חיוב, כדי שתמיד יהיה מישהו עם התפקידים האלה זמין לצוות. למידע נוסף, קראו את המאמר הגדרת הפרויקט ב-Google Cloud.
- כדי ליצור פרויקט באמצעות Navigation SDK ל-iOS, יש צורך בגרסה 15.0 ואילך של Xcode.
- גרסת היעד המינימלית של iOS ל-SDK של הניווט היא 14.0.
התקנת ה-SDK
מנהל חבילות Swift
אפשר להתקין את ה-SDK של הניווט דרך מנהל החבילות של Swift. כדי להוסיף את ה-SDK, צריך לוודא שהסרתם את כל יחסי התלות הקיימים ב-API של הניווט.
כדי להוסיף את ה-SDK לפרויקט חדש או קיים, מבצעים את השלבים הבאים:
-
פותחים את ה-Xcode
project
או אתworkspace
, ואז עוברים אל 'קובץ' > 'הוספת יחסי תלות של חבילה'. - מזינים את הכתובת https://github.com/googlemaps/ios-navigation-sdk, מקישים על Enter כדי להכניס את החבילה ולוחצים על Add Package (הוספת חבילה).
-
כדי להתקין
version
ספציפי, מגדירים את השדה כלל תלות לאחת מהאפשרויות שמבוססות על גרסה. בפרויקטים חדשים, מומלץ לציין את הגרסה העדכנית ביותר ולהשתמש באפשרות 'גרסה מדויקת'. בסיום, לוחצים על 'הוספת חבילה'. -
בחלון בחירת מוצרי חבילה, מוודאים שהשדה
GoogleNavigation
יתווסף ליעד ה-main
הייעודי. בסיום, לוחצים על 'הוספת חבילה'. -
כדי לאמת את ההתקנה, עוברים לחלונית
General
של היעד. ב-Frameworks, בספריות ובתוכן מוטמע אתם אמורים לראות את החבילות המותקנות. אפשר גם להציג את הקטע 'תלויי חבילה' ב-'Project Navigator' כדי לאמת את החבילה והגרסה שלה.
כדי לעדכן את package
בפרויקט קיים:
- מ-Xcode, עוברים אל 'קובץ > חבילות > עדכון לגרסאות האחרונות של החבילה'.
- כדי לאמת את ההתקנה, עוברים לקטע תלויי חבילה ב-Project Navigator ומאמתים את החבילה והגרסה שלה.
כדי להסיר יחסי תלות קיימים של ה-SDK של הניווט שנוספו באמצעות
CocoaPods
, בצע את השלבים הבאים:
- סגירת סביבת העבודה של Xcode. פותחים את הטרמינל ומריצים את הפקודה הבאה:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
יש להסיר את ה-
Podfile
,Podfile.resolved
ואת ה-Xcodeworkspace
אם לא משתמשים בהם למטרה אחרת מלבד CocoaPods.
-
בהגדרות של פרויקט Xcode, מאתרים את Frameworks, ספריות ותוכן מוטמע. משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
-
מהספרייה ברמה העליונה של פרויקט Xcode, מסירים את החבילה
GoogleMaps
.
CocoaPods
ה-SDK לניווט ל-iOS זמין בתור pod של CocoaPods. CocoaPods הוא מנהל יחסי תלות של קוד פתוח בפרויקטים של Swift ו-Objective-C ב-Cocoa.
אם הכלי CocoaPods עדיין לא מותקן, מריצים את הפקודה הבאה מהטרמינל כדי להתקין אותו ב-macOS. לפרטים נוספים, אפשר להיכנס למדריך של CocoaPods לתחילת העבודה.
sudo gem install cocoapods
צור Podfile
עבור ה-SDK של הניווט ל-iOS והשתמש בו כדי להתקין את ה-API ואת יחסי התלות שלו:
- אם עדיין אין לך פרויקט ב-Xcode, צריך ליצור פרויקט עכשיו ולשמור אותו במחשב המקומי. אם אתם חדשים בפיתוח ל-iOS:
- יוצרים פרויקט חדש.
- בוחרים בתבנית iOS > אפליקציה.
- במסך האפשרויות של הפרויקט:
- מזינים את Project Name (שם הפרויקט).
- מתעדים את הערך בשדה מזהה חבילה. אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API בהמשך.
- מגדירים את Interface של הפרויקט כ-Storyboard.
- מגדירים את Language כ-Swift או כ-Objective-C.
- יוצרים קובץ בשם
Podfile
בספריית הפרויקט. הקובץ הזה מגדיר את יחסי התלות של הפרויקט שלכם. - עורכים את
Podfile
ומוסיפים את יחסי התלות יחד עם versions שלהם. הנה דוגמה שכוללת את התלות הנדרשת של Navigation SDK ל-iOS: # מסמך עזר בנושא התקנה של Cocoapods #source 'https://github.com/CocoaPods/Specs.git' platform :ios, '14.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleNavigation', '5.3.1' end
חשוב להפעיל אתpod outdated
באופן קבוע כדי לזהות גרסאות חדשות יותר. במידת הצורך, משדרגים לגרסה האחרונה. - שומרים את
Podfile
. פותחים טרמינל ועוברים לספרייה שמכילה את
Podfile
:cd <path-to-project>
מריצים את הפקודה
pod install
. הפעולה הזו מתקינה את ממשקי ה-API שצוינו ב-Podfile
, כולל יחסי התלות, אם יש.pod install
סוגרים את Xcode ופותחים (לוחצים לחיצה כפולה) את הקובץ
.xcworkspace
של הפרויקט כדי להפעיל את Xcode. מרגע זה ואילך צריך להשתמש בקובץ.xcworkspace
כדי לפתוח את הפרויקט.
כדי לעדכן את ה-API בפרויקט קיים:
- פותחים טרמינל ועוברים לספריית הפרויקט שמכילה את הקוד
Podfile
. - מריצים את הפקודה
pod update
. הפעולה הזו תעדכן את כל ממשקי ה-API שצוינו ב-Podfile
לגרסה האחרונה.
התקנה ידנית
במדריך הזה מוסבר איך להוסיף ידנית לפרויקט את ה-XCFrameworks עם ה-SDK של הניווט ל-iOS ואת ה-SDK של מפות Google ל-iOS, ולקבוע את הגדרות ה-build ב-Xcode. XCFramework היא חבילה בינארית שניתן להשתמש בה במספר פלטפורמות, כולל מכונות שמשתמשות בערכת השבבים M1
כדי להתקין את XCFrameworks עבור ה-SDK של הניווט ב-iOS ואת ה-SDK של מפות Google ל-iOS:
- מורידים את קובצי ה-SDK הבינאריים ואת קובצי המשאבים הבאים:
- מפעילים את Xcode ופותחים פרויקט קיים או יוצרים פרויקט חדש. אם זו הפעם הראשונה שאתם משתמשים ב-iOS, תוכלו ליצור פרויקט חדש ולבחור באפשרות iOS App template (תבנית של אפליקציות ל-iOS).
- מסירים מהפרויקט את כל ההפניות הקיימות במפות Google, בניווט ובמקומות.
- גוררים את ה-XCFrameworks הבאות לפרויקט בקטע
Frameworks, ספריות ותוכן מוטמע כדי להתקין את ה-SDK של מפות
ואת ה-SDK של ניווט (כשמוצגת הבקשה, בוחרים באפשרות העתקת פריטים לפי הצורך):
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- גוררים את הקובץ
GoogleMaps.bundle
מ-GoogleMapsResources שהורדתם לספרייה ברמה העליונה של פרויקט ה-Xcode. כשמופיעה בקשה, מוודאים שהאפשרות העתקת פריטים לפי הצורך מסומנת. - גוררים את
GoogleNavigation.bundle
מה-GoogleNavigationResources שהורדתם לספרייה ברמה העליונה של פרויקט ה-Xcode. כשמופיעה הודעה, מוודאים שהאפשרות העתקת פריטים לתיקייה של קבוצת היעד מסומנת. - בוחרים את הפרויקט מתוך Project Navigator, ובוחרים את יעד האפליקציה.
- פותחים את הכרטיסייה יצירת שלבים, ובתוך
קישור בינארי לספריות מוסיפים את המסגרות והספריות הבאות:
Accelerate.framework
AudioToolbox.framework
AVFoundation.framework
Contacts.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libxml2.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
Security.framework
SystemConfiguration.framework
UIKit.framework
UserNotifications.framework
WebKit.framework
- ביעד של האפליקציה, לוחצים על הכרטיסייה יכולות,
מפעילים את מצבי רקע ומפעילים את המצבים הבאים:
- אודיו, AirPlay ו'תמונה בתוך תמונה'
- עדכוני מיקום
- בוחרים את הפרויקט ולא ביעד ספציפי, ופותחים את הכרטיסייה Build Settings (הגדרות build). בקטע Other Linker flags
מוסיפים את
‑ObjC
ל-debug ולהשקה. אם ההגדרות האלה לא מוצגות, משנים את המסנן בסרגל Build Settings (הגדרות Build) מ-Basic (בסיסי) ל-All (הכול). - פותחים את
Info.plist
ומוסיפים את צמדי המפתח/ערך הבאים:- מפתח:
NSLocationWhenInUseUsageDescription
(פרטיות – מיקום בעת השימוש בתיאור השימוש)
ערך: "לאפליקציה זו נדרשת הרשאה להשתמש במיקום שלך לצורך ניווט במסלול מפורט". - מפתח:
NSLocationAlwaysAndWhenInUseUsageDescription
(פרטיות – מיקום תמיד ובזמן שימוש בתיאור השימוש)
ערך: "לאפליקציה זו נדרשת הרשאה להשתמש במיקום שלך לצורך ניווט במסלול מפורט".
- מפתח:
הוספת קובץ מניפסט הפרטיות של Apple
לפי הדרישות של Apple, פרטי הפרטיות של אפליקציות צריכים להיות ב-App Store. עדכונים ומידע נוסף זמינים בדף פרטי הפרטיות ב-Apple App Store.
- הורד את חבילת מניפסט הפרטיות עבור ה-SDK של הניווט ל-iOS: GoogleNavigationPrivacy.
- צריך לחלץ את הקובץ כדי לגשת אל
GoogleNavigationPrivacy.bundle
. - מוסיפים את
GoogleNavigationPrivacy.bundle
ל-ניווט בפרויקט Xcode באמצעות אחת מהשיטות האלה. מוודאים שהתיבה 'הוספה ליעדים' מסומנת לגבי היעד של האפליקציה. לאחר ההוספה, הקובץ PrivacyInfo יופיע בסרגל הניווט בפרויקט ותוכלו לבדוק את הערכים. - מוודאים שמניפסט הפרטיות נוסף על ידי יצירת ארכיון של האפליקציה ויצירת דוח פרטיות מהארכיון.
הוספת מפתח API לפרויקט
הדוגמאות הבאות מראות איך להוסיף את מפתח ה-API לפרויקט ב-Xcode:
Swift
מוסיפים את מפתח ה-API ל-AppDelegate.swift
באופן הבא:
- מוסיפים את הצהרות הייבוא הבאות:
import GoogleMaps import GoogleNavigation
- מוסיפים את הקוד הבא ל-method
application(_:didFinishLaunchingWithOptions:)
:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
מוסיפים את מפתח ה-API ל-AppDelegate.m
באופן הבא:
- מוסיפים את הצהרות הייבוא הבאות:
@import GoogleMaps; @import GoogleNavigation;
- מוסיפים את הקוד הבא ל-method
application:didFinishLaunchingWithOptions:
:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
הוספת מפה
הקוד הזה מדגים איך להוסיף מפה פשוטה ל-ViewController
קיים, כולל כמה הגדרות ראשוניות לניווט.
לפני שמפעילים את הניווט, המשתמש צריך להסכים לתנאים ולהגבלות. כדי להציג בקשה למשתמש, אפשר להתקשר למספר GMSNavigationServices.showTermsAndConditionsDialogIfNeeded()
ולבדוק אם התנאים אושרו. אם המשתמש דוחה את התנאים,
ל-mapView.isNavigationEnabled = true
אין השפעה ו-mapView.navigator
אפס.
Swift
import UIKit import GoogleNavigation class ViewController: UIViewController { var mapView: GMSMapView! var locationManager: CLLocationManager! override func loadView() { locationManager = CLLocationManager() locationManager.requestAlwaysAuthorization() let camera = GMSCameraPosition.camera(withLatitude: 47.67, longitude: -122.20, zoom: 14) mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) // Show the terms and conditions. let companyName = "Ride Sharing Co." GMSNavigationServices.showTermsAndConditionsDialogIfNeeded( withCompanyName: companyName) { termsAccepted in if termsAccepted { // Enable navigation if the user accepts the terms. self.mapView.isNavigationEnabled = true } else { // Handle the case when the user rejects the terms and conditions. } } view = mapView } // TODO: Add navigation code. }
Objective-C
#import "ViewController.h" @import GoogleNavigation; @interface ViewController () @end @implementation ViewController GMSMapView *_mapView; CLLocationManager *_locationManager; - (void)loadView { _locationManager = [[CLLocationManager alloc] init]; [_locationManager requestAlwaysAuthorization]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.67 longitude:-122.20 zoom:14]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; // Show the terms and conditions. NSString *companyName = @"Ride Sharing Co."; [GMSNavigationServices showTermsAndConditionsDialogIfNeededWithCompanyName:companyName callback:^(BOOL termsAccepted) { if (termsAccepted) { // Enable navigation if the user accepts the terms. _mapView.navigationEnabled = YES; } else { // Handle the case when the user rejects the terms and conditions. } }]; self.view = _mapView; } // TODO: Add navigation code. @end
מפעילים את האפליקציה. אמורה להופיע מפה במרכז אזור קירקלנד, וושינגטון. אם המפה לא מוצגת, יש לוודא שסיפקתם את מפתח ה-API הנכון.
אם אתם לקוחות של שירותי ניידות
לקוחות של שירותי ניידות יכולים לקרוא מידע על החיוב במסמכי התיעוד בנושא ניידות. למידע נוסף על תיעוד טרנזקציות, קראו את המאמר הגדרת החיוב. למידע איך להוסיף מזהי עסקאות להטמעת ה-SDK של הניווט, ראו שיוך של השימוש בשירות לטרנזקציות של ניידות.