הגדרת פרויקט ב-Xcode

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

נתוני הגרסה זמינים לכל גרסה.

שלב 1: מתקינים את התוכנה הנדרשת

כדי ליצור פרויקט באמצעות Maps SDK ל-iOS, צריך להוריד ולהתקין את:

  • Xcode גרסה 16.0 ואילך

שלב 2: יוצרים את פרויקט Xcode ומתקינים את Maps SDK ל-iOS

גודל ההתקנה של ה-SDK יכול להשתנות. לדוגמה, גודל ההתקנה של Maps SDK ל-iOS בגרסה 9.0 הוא כ-18MB.

Swift Package Manager

אפשר להתקין את Maps SDK ל-iOS דרך Swift Package Manager. כדי להוסיף את ה-SDK, צריך לוודא שהסרתם את כל יחסי התלות הקיימים של Maps SDK ל-iOS.

כדי להוסיף את ה-SDK לפרויקט חדש או קיים, פועלים לפי השלבים הבאים:

  1. פותחים את Xcode project או workspace, ואז עוברים אל File > Add Package Dependencies (קובץ > הוספת תלות בחבילה).
  2. מזינים את כתובת ה-URL https://github.com/googlemaps/ios-maps-sdk, מקישים על Enter כדי למשוך את החבילה ולוחצים על 'הוספת חבילה'.
  3. כדי להתקין version ספציפי, מגדירים את השדה Dependency Rule (כלל תלות) לאחת מהאפשרויות שמבוססות על גרסה. בפרויקטים חדשים, מומלץ לציין את הגרסה העדכנית ולהשתמש באפשרות 'גרסה מדויקת'. לסיום, לוחצים על 'הוספת חבילה'.

כדי לעדכן את package של פרויקט קיים, פועלים לפי השלבים הבאים:

  1. אם אתם משדרגים מגרסה מוקדמת יותר מ-9.0.0, אתם צריכים להסיר את התלות הבאה: GoogleMapsBase,‏ GoogleMapsCore ו-GoogleMapsM4B אחרי השדרוג. אין להסיר את התלות של GoogleMaps. מידע נוסף זמין בהערות המוצר של גרסה 9.0.0.

    בהגדרות התצורה של פרויקט Xcode, מחפשים את Frameworks, Libraries, and Embedded Content (מסגרות, ספריות ותוכן מוטמע). משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:

    • GoogleMapsBase (רק לשדרוגים מגרסאות מוקדמות יותר מ-9.0.0)
    • GoogleMapsCore (רק לשדרוגים מגרסאות מוקדמות יותר מ-9.0.0)
    • GoogleMapsM4B (רק לשדרוגים מגרסאות מוקדמות יותר מ-9.0.0)
  2. ב-Xcode, עוברים אל File (קובץ) > Packages (חבילות) > Update To Latest Package Versions (עדכון לגרסאות החבילה העדכניות ביותר).
  3. כדי לאמת את ההתקנה, עוברים לקטע Package Dependencies (תלות בחבילה) בProject Navigator (סייר הפרויקטים) כדי לאמת את החבילה ואת הגרסה שלה.

כדי להסיר יחסי תלות קיימים ב-SDK של מפות ל-iOS שנוספו באמצעות CocoaPods, פועלים לפי השלבים הבאים:

  1. סוגרים את סביבת העבודה של Xcode. פותחים את הטרמינל ומריצים את הפקודה הבאה:
    sudo gem install cocoapods-deintegrate cocoapods-clean
    pod deintegrate
    pod cache clean --all
  2. מסירים את Podfile, Podfile.resolved ואת Xcode workspace אם אתם לא משתמשים בהם לשום דבר אחר מלבד CocoaPods.
כדי להסיר SDK קיים של מפות Google ל-iOS שהותקן באופן ידני, פועלים לפי השלבים הבאים:
  1. בהגדרות התצורה של פרויקט Xcode, מחפשים את Frameworks, Libraries, and Embedded Content (מסגרות, ספריות ותוכן מוטמע). משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
    • GoogleMaps
    • GoogleMapsBase (רק להתקנות מגרסה מוקדמת יותר מ-9.2.0)
    • GoogleMapsCore (רק להתקנות מגרסה מוקדמת יותר מ-9.2.0)
    • GoogleMapsM4B (רק להתקנות מגרסה מוקדמת יותר מ-9.0.0)
  2. בספרייה ברמה העליונה של פרויקט Xcode, מסירים את GoogleMaps bundle.

התקנה ידנית

במדריך הזה מוסבר איך להוסיף ידנית לפרויקט את ה-XCFrameworks שמכילים את Maps SDK ל-iOS, ואיך להגדיר את הגדרות ה-build ב-Xcode. ‫XCFramework הוא חבילה בינארית שאפשר להשתמש בה בכמה פלטפורמות, כולל מכונות שמשתמשות ב-Apple silicon.

  1. מורידים את קובצי ההפעלה (binaries) וקובצי המשאבים הבאים של ה-SDK:
  2. מחץ את הקבצים כדי לגשת למסגרות ולמשאבים של XCFramework.
  3. אם עדיין אין לכם פרויקט Xcode, אתם יכולים ליצור אחד עכשיו ולשמור אותו במחשב המקומי. אם אתם חדשים בפיתוח ל-iOS:
    1. יוצרים פרויקט חדש.
    2. בוחרים בתבנית iOS > App.
    3. במסך האפשרויות של הפרויקט:
      1. מזינים את שם הפרויקט.
      2. רושמים את הערך של השדה מזהה החבילה. אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API שלמטה.
      3. מגדירים את הממשק של הפרויקט לתסריט מצויר.
      4. מגדירים את השפה ל-Swift או ל-Objective-C.
  4. פותחים את הכרטיסייה כללי. גוררים את ה-XCFramework הבא לפרויקט בקטע Frameworks, Libraries, and Embedded Content (מסגרות, ספריות ותוכן מוטמע). חשוב לוודא שבחרתם באפשרות לא להטמיע:
    • GoogleMaps.xcframework
  5. מעתיקים את GoogleMaps.bundle מ-GoogleMapsResources שהורדתם אל ספריית הרמה העליונה של פרויקט Xcode. כשמוצגת בקשה, חשוב לבחור באפשרות העתקת פריטים לתיקייה של קבוצת היעד.
  6. בוחרים את הפרויקט מתוך Project Navigator ובוחרים את היעד של האפליקציה.
  7. פותחים את הכרטיסייה Build Phases (שלבי בנייה) של היעד של האפליקציה. בקטע Link Binary with Libraries (קישור קובץ בינארי לספריות), מוסיפים את המסגרות והספריות הבאות:
    • Accelerate.framework
    • Contacts.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework (רק אם משתמשים ב-OpenGL)
    • QuartzCore.framework
    • Security.framework
    • SystemConfiguration.framework
    • UIKit.framework
  8. בוחרים את הפרויקט ולא יעד ספציפי, ופותחים את הכרטיסייה Build Settings. בקטע Linking - General -> Other Linker Flags, מוסיפים את -ObjC ל-Debug ול-Release. אם ההגדרות האלה לא מוצגות, צריך לשנות את המסנן בסרגל Build Settings מ-Basic ל-All.

  9. כדי להתקין את Places SDK ל-iOS XCFramework, אפשר לעיין במאמר תחילת העבודה עם Places SDK ל-iOS.

CocoaPods

‫Maps SDK ל-iOS זמין כ-pod של CocoaPods. ‫CocoaPods הוא כלי קוד פתוח לניהול תלות בפרויקטים של Swift ו-Objective-C Cocoa.

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

sudo gem install cocoapods

יוצרים Podfile עבור Maps SDK for iOS ומשתמשים בו כדי להתקין את ה-API ואת התלות שלו:

  1. אם עדיין אין לכם פרויקט Xcode, אתם יכולים ליצור אחד עכשיו ולשמור אותו במחשב המקומי. אם אתם חדשים בפיתוח ל-iOS:
    1. יוצרים פרויקט חדש.
    2. בוחרים בתבנית iOS > App.
    3. במסך האפשרויות של הפרויקט:
      1. מזינים את שם הפרויקט.
      2. רושמים את הערך של השדה מזהה החבילה. אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API שלמטה.
      3. מגדירים את הממשק של הפרויקט לתסריט מצויר.
      4. מגדירים את השפה ל-Swift או ל-Objective-C.
  2. יוצרים קובץ בשם Podfile בספריית הפרויקט. הקובץ הזה מגדיר את יחסי התלות של הפרויקט.
  3. עורכים את קובץ Podfile ומוסיפים את התלויות עם הגרסאות שלהן. הנה דוגמה שכוללת את התלות שנדרשת ל-SDK של מפות ל-iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '16.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '10.1.0'
    end
    כדי לוודא שאתם תמיד משתמשים בגרסה העדכנית ביותר, מריצים את הפקודה pod outdated באופן קבוע כדי לזהות מתי יש גרסה חדשה יותר. אם צריך, משדרגים לגרסה העדכנית.
  4. שומרים את Podfile.
  5. פותחים טרמינל ועוברים לספרייה שמכילה את Podfile:

    cd <path-to-project>
  6. מריצים את הפקודה pod install. הפקודה הזו תתקין את ממשקי ה-API שצוינו ב-Podfile, יחד עם יחסי התלות שלהם.

    pod install
  7. סוגרים את Xcode ואז פותחים (לוחצים לחיצה כפולה) את קובץ .xcworkspace של הפרויקט כדי להפעיל את Xcode. מעכשיו, צריך להשתמש בקובץ .xcworkspace כדי לפתוח את הפרויקט.

כדי לעדכן את ה-API בפרויקט קיים, פועלים לפי השלבים הבאים:

  1. פותחים טרמינל ועוברים לספריית הפרויקט שמכילה את Podfile.
  2. מריצים את הפקודה pod update. כל ממשקי ה-API שצוינו ב-Podfile יעודכנו לגרסה העדכנית ביותר.

שלב 3: מוסיפים את מפתח ה-API לפרויקט

במאמר קבלת מפתח API, יצרתם מפתח API לאפליקציה שלכם. עכשיו צריך להוסיף את המפתח הזה לפרויקט Xcode.

בדוגמאות הבאות, מחליפים את הערך YOUR_API_KEY במפתח ה-API שלכם.

Swift

מוסיפים את מפתח ה-API ל-AppDelegate.swift באופן הבא:

  1. מוסיפים את הצהרת הייבוא הבאה:
    import GoogleMaps
  2. מוסיפים את הפרטים הבאים ל-method‏ application(_:didFinishLaunchingWithOptions:), באמצעות מפתח ה-API:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. אם אתם משתמשים גם ב-Places API, עליכם להוסיף את המפתח שוב כמו שמוצג כאן:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

מוסיפים את מפתח ה-API ל-AppDelegate.m באופן הבא:

  1. מוסיפים את הצהרת הייבוא הבאה:
    @import GoogleMaps;
  2. מוסיפים את הפרטים הבאים ל-method‏ application:didFinishLaunchingWithOptions:, באמצעות מפתח ה-API:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. אם אתם משתמשים גם ב-Places API, עליכם להוסיף את המפתח שוב כמו שמוצג כאן:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

שלב 4 (אופציונלי): בדיקת קובץ הצהרת הפרטיות של אפל

‫Apple דורשת פרטי פרטיות של אפליקציות ב-App Store. אפשר לעבור אל הדף 'פרטים על פרטיות האפליקציה' ב-Apple App Store כדי לקבל עדכונים ומידע נוסף.

קובץ המניפסט של Apple Privacy כלול בחבילת המשאבים של ה-SDK. כדי לוודא שקובץ הצהרת הפרטיות נכלל ולבדוק את התוכן שלו, יוצרים ארכיון של האפליקציה ומפיקים דוח פרטיות מהארכיון.

שלב 5 (אופציונלי): הכרזה על סכימות כתובות ה-URL שבהן נעשה שימוש ב-API

החל מ-iOS 9 ומ-Xcode 7, אפליקציות יכולות להצהיר על סכימות כתובות ה-URL שהן מתכוונות לפתוח, על ידי ציון הסכימות בקובץ Info.plist של האפליקציה. ‫Maps SDK for iOS פותח את אפליקציית מפות Google לנייד כשהמשתמש לוחץ על הלוגו של Google במפה, ולכן האפליקציה יכולה להצהיר על סכימות ה-URL הרלוונטיות.

כדי להצהיר על סכימות כתובות ה-URL שבהן נעשה שימוש ב-Maps SDK ל-iOS, מוסיפים את השורות הבאות ל-Info.plist:

 <key>LSApplicationQueriesSchemes</key>
 <array>
        <string>googlechromes</string>
        <string>comgooglemaps</string>
    </array>

בצילום המסך הבא מוצגת ההגדרה בממשק המשתמש של Xcode:

ההגדרה `LSApplicationQueriesSchemes` ב-Xcode

אם ההצהרה שלמעלה לא מופיעה, יכולות להתרחש השגיאות הבאות כשהמשתמש מקיש על הלוגו של Google במפה:

  • -canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"
  • -canOpenURL: failed for URL: "googlechromes://" - error: "This app is not allowed to query for scheme googlechromes"

כדי למנוע את השגיאות האלה, צריך להוסיף את ההצהרה אל Info.plist.

המאמרים הבאים

עכשיו, אחרי שיש לכם מפתח API ופרויקט Xcode, אתם יכולים ליצור ולהפעיל אפליקציות. ‫Navigation SDK ל-iOS כולל הרבה מדריכים ואפליקציות לדוגמה שיכולים לעזור לכם להתחיל. לפרטים נוספים: