הגדרת פרויקט ב-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 כדי לאמת את החבילה והגרסה שלה.

כדי להסיר יחסי תלות קיימים של Maps 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 פרויקטים של קקאו.

אם עדיין לא התקנתם את הכלי 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 של מפות ל-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 (קישור בינארי לספריות), מוסיפים את הפרטים הבאים. 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

/*
 *   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, אתם יכולים ליצור ולהפעיל אפליקציות. SDK לניווט ב-iOS מספק הרבה מדריכים ואפליקציות לדוגמה שיכולים לעזור לכם להתחיל בעבודה בקלות. פרטים נוספים זמינים במאמרים הבאים: