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

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

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

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

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

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

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

מנהל חבילות SWIFT

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

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

  1. פותחים את ה-Xcode project או workspace, ועוברים אל File > (קובץ >) הוספת יחסי תלות של חבילה.
  2. מזינים את הכתובת https://github.com/googlemaps/ios-maps-sdk בתור כתובת ה-URL ומקישים על Enter. כדי למשוך את החבילה, וללחוץ על "הוספת חבילה".
  3. כדי להתקין version ספציפי, צריך להגדיר את השדה כלל תלות לאחד אפשרויות שמבוססות על גרסאות. בפרויקטים חדשים, מומלץ לציין את הגרסה האחרונה באמצעות "גרסה מדויקת" כאפשרות. בסיום, לוחצים על 'הוספת חבילה'.
  4. בחלון Choose Package Products, מוודאים ש-GoogleMaps (בגרסאות ישנות יותר מ-9.0.0, מוודאים ש-GoogleMaps,‏ GoogleMapsBase ו-GoogleMapsCore) יתווספו ליעד main שהוגדר. בסיום, לוחצים על 'הוספת חבילה'.
  5. כדי לבדוק את ההתקנה, צריך לעבור לחלונית General של היעד. ב-Frameworks, ספריות ותוכן מוטמע אתם אמורים לראות את החבילות המותקנות. אפשר גם לראות את העמודה 'יחסי תלות של חבילה' הקטע של Project Navigator כדי לאמת את החבילה והגרסה שלה.

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

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

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

    • GoogleMapsBase (רק לשדרוגים מגרסאות מוקדמות יותר מ-9.0.0)
    • GoogleMapsCore (רק לשדרוגים מגרסאות מוקדמות יותר מ-9.0.0)
    • GoogleMapsM4B (רק לשדרוגים מגרסאות מוקדמות יותר מ-9.0.0)
  2. מ-Xcode, עוברים אל 'File >' חבילות > יש לעדכן לגרסאות האחרונות של החבילה".
  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 ואת workspace של Xcode אם אתם לא משתמשים בהם למטרה אחרת מלבד CocoaPods.

כדי להסיר את ה-SDK של מפות ל-iOS שמותקן באופן ידני:
  1. בהגדרות האישיות של פרויקט Xcode, מחפשים את Frameworks, ספריות, ותוכן מוטמע. משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
    • GoogleMaps
    • GoogleMapsBase (רק להתקנות לפני גרסה 9.0.0)
    • GoogleMapsCore (רק להתקנות לפני גרסה 9.0.0)
    • GoogleMapsM4B (רק להתקנות לפני גרסה 9.0.0)
  2. מהספרייה ברמה העליונה של פרויקט Xcode, מסירים את GoogleMaps חבילה.

CocoaPods

ה-SDK של מפות Google ל-iOS זמין בתור קבוצת CocoaPods. CocoaPods הוא מנהל יחסי תלות בקוד פתוח עבור Swift ו-Objective-C פרויקטים של קקאו.

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

sudo gem install cocoapods

יוצרים Podfile עבור ה-SDK של מפות Google ל-iOS ומשתמשים בהם כדי להתקין את ה-API ואת יחסי התלות שלו:

  1. אם עדיין אין לך פרויקט Xcode, עליך ליצור פרויקט עכשיו ולשמור אותו ב- במחשב המקומי שלכם. אם זו הפעם הראשונה שאתם משתמשים בפיתוח ל-iOS:
    1. יוצרים פרויקט חדש.
    2. בוחרים באפשרות iOS > תבנית של לאפליקציה.
    3. במסך אפשרויות הפרויקט:
      1. מזינים את Project Name (שם הפרויקט).
      2. מתעדים את הערך בשדה Bundle ID (מזהה החבילה). אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API בהמשך.
      3. מגדירים את ממשק הפרויקט ל-Storyboard.
      4. מגדירים את Language כ-Swift או Objective-C.
  2. יוצרים קובץ בשם Podfile בספריית הפרויקט. הזה מגדיר את יחסי התלות של הפרויקט.
  3. עורכים את Podfile ומוסיפים את יחסי התלות עם גרסאות. הנה דוגמה שכוללת את התלות הדרושה SDK של מפות ל-iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '8.4.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 לגרסה העדכנית ביותר.

התקנה ידנית

במדריך הזה מוסבר איך להוסיף לפרויקט באופן ידני את ה-XCFrameworks שמכיל את ה-SDK של מפות Google ל-iOS, ולקבוע את הגדרות ה-build ב-Xcode. XCFramework היא חבילה בינארית שאפשר להשתמש בה במספר פלטפורמות, כולל מכונות שמשתמשות ב-Apple silicon.
  1. הורדת הקבצים הבינאריים וקובצי המשאבים הבאים של ה-SDK:
  2. מחלצים את הקבצים כדי לגשת ל-XCFrameworks ולמשאבים.
  3. אם עדיין אין לך פרויקט Xcode, עליך ליצור פרויקט עכשיו ולשמור אותו ב- במחשב המקומי שלכם. אם זו הפעם הראשונה שאתם משתמשים בפיתוח ל-iOS:
    1. יוצרים פרויקט חדש.
    2. בוחרים באפשרות iOS > תבנית של לאפליקציה.
    3. במסך אפשרויות הפרויקט:
      1. מזינים את Project Name (שם הפרויקט).
      2. מתעדים את הערך בשדה Bundle ID (מזהה החבילה). אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API בהמשך.
      3. מגדירים את ממשק הפרויקט ל-Storyboard.
      4. מגדירים את Language כ-Swift או Objective-C.
  4. פותחים את הכרטיסייה כללי. גוררים את ה-XCFrameworks הבאים לפרויקט בקטע Frameworks, ספריות ותוכן מוטמע. לוודא כדי לבחור באפשרות Do Not Embed (ללא הטמעה) לכל XCFramework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  5. מעתיקים את GoogleMaps.bundle מ-GoogleMapsResources שהורדתם לספרייה ברמה העליונה של פרויקט Xcode שלכם. חשוב לבחור כשמתבקשים, מעתיקים פריטים לתיקייה של קבוצת היעד.
  6. בוחרים את הפרויקט מ-Project Navigator ואז בוחרים היעד של האפליקציה.
  7. פותחים את הכרטיסייה שלבי הבנייה של היעד של האפליקציה. בקטע Link Binary with Libraries (קישור בינארי לספריות), מוסיפים את הפרטים הבאים. frameworks וספריות:
    • 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
    • SystemConfiguration.framework
    • UIKit.framework
  8. בוחרים בפרויקט שלכם (ולא ביעד ספציפי), ופותחים את הגדרות Build. בקטע Linking - General -> (קישור - כללי ->) מקשר אחר סימונים, מוסיפים את -ObjC ל'ניפוי באגים' ו'Release'. אם הקריטריונים האלה ההגדרות לא מופיעות, אפשר לשנות את המסנן בסרגל הגדרות Build מבסיסי להכול.

  9. כדי להתקין את Places SDK ל-iOS XCFramework: איך מתחילים עם Places SDK ל-iOS.

שלב 3: בודקים את קובץ מניפסט הפרטיות של Apple

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

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

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

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

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

Swift

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

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

שלב 5: הוספת מפה

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.

        let options = GMSMapViewOptions()
        options.camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        options.frame = self.view.bounds

        let mapView = GMSMapView(options: options)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}

Objective-C

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController()

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
  options.frame = self.view.bounds;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end

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

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

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

LSApplicationQueriesSchemes googlechromes comgooglemaps

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

הגדרת LSApplicationQuerySchemes :
Xcode

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

  • -canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"
  • -canOpenURL: נכשל בכתובת האתר: "googlechromes:// " - שגיאה: "האפליקציה הזו לא מותר לשלוח שאילתה לסכמה googlechromes

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

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

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