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

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

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

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

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

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

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

מנהל חבילות SWIFT

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

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

  1. פותחים את ה-Xcode project או workspace ועוברים אל 'קובץ' > 'הוספת יחסי תלות של חבילה'.
  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, עוברים אל 'קובץ' > 'חבילות' > 'עדכון לגרסאות האחרונות של החבילה'.
  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, ספריות ותוכן מוטמע. משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
    • 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 Cocoa.

אם עדיין לא התקנתם את הכלי 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. מגדירים את הפרויקט Interface כ-Storyboard.
      4. מגדירים את Language כ-Swift או Objective-C.
  2. יוצרים קובץ בשם Podfile בספריית הפרויקט. הקובץ הזה מגדיר את יחסי התלות של הפרויקט.
  3. עורכים את Podfile ומוסיפים את יחסי התלות עם versions שלהם. לפניכם דוגמה שכוללת את התלות הדרושה ב-SDK של מפות Google ל-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. מגדירים את הפרויקט Interface כ-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 (קישור 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 Settings. בקטע Linking - General -> Other Linker Banners (קישור - כללי -> אחרים) מוסיפים את -ObjC ל-Debug ול-Release (שחרור). אם ההגדרות האלה לא מופיעות, משנים את המסנן בסרגל Build Settings (הגדרות Build) מ-Basic ל-All.

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

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

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

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

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

בקטע Get an API key (קבלת מפתח 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"];

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

Swift

/*
 *   Copyright 2020 Google Inc. All rights reserved.
 *
 *
 *   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 *   file except in compliance with the License. You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software distributed under
 *   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 *   ANY KIND, either express or implied. See the License for the specific language governing
 *   permissions and limitations under the License.
 */

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

/*
*   Copyright 2020 Google Inc. All rights reserved.
*
*
*   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
*   file except in compliance with the License. You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software distributed under
*   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
*   ANY KIND, either express or implied. See the License for the specific language governing
*   permissions and limitations under the License.
*/

#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 של מפות Google ל-iOS, צריך להוסיף את השורות הבאות ל-Info.plist:

LSApplicationQueriesSchemes googlechromes comgooglemaps

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

הגדרת LSApplicationQuerySchemes ב-Xcode

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

  • -canOpenURL: נכשל בכתובת האתר: "comgooglemaps://" - שגיאה: "האפליקציה הזו לא מורשית לשלוח שאילתות לסכמה comgooglemaps"
  • -canOpenURL: נכשל בכתובת האתר: "googlechromes://" - שגיאה: "האפליקציה הזו אינה מורשה לשלוח שאילתות לסכמה googlechromes"

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

מה עושים אחר כך

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