אחרי שתפעילו את החיוב ותיצרו מפתח API, תוכלו להגדיר את פרויקט Xcode שבו אתם משתמשים לפיתוח האפליקציה.
נתוני הגרסה זמינים לכל גרסה.
שלב 1: מתקינים את התוכנה הנדרשת
כדי ליצור פרויקט באמצעות ה-SDK של מפות Google ל-iOS, צריך להוריד ולהתקין:
- Xcode גרסה 15.0 ואילך
שלב 2: יוצרים את פרויקט Xcode ומתקינים את ה-SDK של מפות Google ל-iOS
מנהל חבילות Swift
אפשר להתקין את Maps SDK ל-iOS דרך מנהל החבילות של Swift. כדי להוסיף את ה-SDK, צריך להסיר את כל ה-SDK של מפות Google ל-iOS.
כדי להוסיף את ה-SDK לפרויקט חדש או קיים, מבצעים את השלבים הבאים:
-
פותחים את ה-Xcode
project
או אתworkspace
, ואז עוברים אל 'קובץ' > 'הוספת יחסי תלות של חבילה'. - מזינים את כתובת ה-URL https://github.com/googlemaps/ios-maps-sdk, מקישים על Enter כדי לצרף את החבילה ולוחצים על Add Package (הוספת חבילה).
-
כדי להתקין
version
ספציפי, מגדירים את השדה כלל תלות לאחת מהאפשרויות שמבוססות על גרסה. בפרויקטים חדשים, מומלץ לציין את הגרסה העדכנית ביותר ולהשתמש באפשרות 'גרסה מדויקת'. בסיום, לוחצים על 'הוספת חבילה'. -
בחלון בחירת מוצרים לחבילה, מוודאים שהפרמטר
GoogleMaps
(בגרסאות שקודמות לגרסה 9.0.0, מוודאים שהערכיםGoogleMaps
,GoogleMapsBase
ו-GoogleMapsCore
) יתווספו ליעד שציינתם ב-main
. בסיום, לוחצים על 'הוספת חבילה'. -
כדי לאמת את ההתקנה, עוברים לחלונית
General
של היעד. ב-Frameworks, בספריות ובתוכן מוטמע אתם אמורים לראות את החבילות המותקנות. אפשר גם להציג את הקטע 'תלויי חבילה' ב-'Project Navigator' כדי לאמת את החבילה והגרסה שלה.
כדי לעדכן את package
בפרויקט קיים:
אם משדרגים מגרסה שקודמת ל-9.0.0, צריך להסיר את יחסי התלות הבאים:
GoogleMapsBase
,GoogleMapsCore
ו-GoogleMapsM4B
אחרי השדרוג. אין להסיר את התלות שלGoogleMaps
. למידע נוסף, ראו נתוני הגרסה של גרסה 9.0.0.בהגדרות של פרויקט Xcode, מאתרים את Frameworks, ספריות ותוכן מוטמע. משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
GoogleMapsBase
(רק לשדרוגים מגרסאות מוקדמות מ-9.0.0)GoogleMapsCore
(רק לשדרוגים מגרסאות מוקדמות מ-9.0.0)GoogleMapsM4B
(רק לשדרוגים מגרסאות מוקדמות מ-9.0.0)
- מ-Xcode, עוברים אל 'קובץ > חבילות > עדכון לגרסאות האחרונות של החבילה'.
- כדי לאמת את ההתקנה, עוברים לקטע תלויי חבילה ב-Project Navigator ומאמתים את החבילה והגרסה שלה.
כדי להסיר יחסי תלות קיימים של מפות Google ל-iOS שנוספו באמצעות CocoaPods
, צריך לבצע את השלבים הבאים:
- סגירת סביבת העבודה של Xcode. פותחים את הטרמינל ומריצים את הפקודה הבאה:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
יש להסיר את ה-
Podfile
,Podfile.resolved
ואת ה-Xcodeworkspace
אם לא משתמשים בהם למטרה אחרת מלבד CocoaPods.
-
בהגדרות של פרויקט Xcode, מאתרים את Frameworks, ספריות ותוכן מוטמע. משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
GoogleMaps
GoogleMapsBase
(רק להתקנות שקודמות לגרסה 9.0.0)GoogleMapsCore
(רק להתקנות שקודמות לגרסה 9.0.0)GoogleMapsM4B
(רק להתקנות שקודמות לגרסה 9.0.0)
-
מהספרייה ברמה העליונה של פרויקט Xcode, מסירים את החבילה
GoogleMaps
.
CocoaPods
ה-SDK של מפות Google ל-iOS זמין בתור CocoaPods. CocoaPods הוא מנהל יחסי תלות של קוד פתוח בפרויקטים של Swift ו-Objective-C ב-Cocoa.
אם הכלי CocoaPods עדיין לא מותקן, מריצים את הפקודה הבאה מהטרמינל כדי להתקין אותו ב-macOS. לפרטים נוספים, אפשר להיכנס למדריך לתחילת העבודה של CocoaPods.
sudo gem install cocoapods
צור Podfile
עבור ה-SDK של מפות Google ל-iOS והשתמש בו כדי להתקין את ה-API ואת יחסי התלות שלו:
- אם עדיין אין לך פרויקט ב-Xcode, צריך ליצור פרויקט עכשיו ולשמור אותו במחשב המקומי. אם אתם חדשים בפיתוח ל-iOS:
- יוצרים פרויקט חדש.
- בוחרים בתבנית iOS > אפליקציה.
- במסך האפשרויות של הפרויקט:
- מזינים את Project Name (שם הפרויקט).
- מתעדים את הערך בשדה מזהה חבילה. אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API בהמשך.
- מגדירים את Interface של הפרויקט כ-Storyboard.
- מגדירים את Language כ-Swift או כ-Objective-C.
- יוצרים קובץ בשם
Podfile
בספריית הפרויקט. הקובץ הזה מגדיר את יחסי התלות של הפרויקט שלכם. - עורכים את
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
באופן קבוע כדי לזהות מתי קיימת גרסה חדשה יותר, וכך לוודא שתמיד תהיה הגרסה העדכנית ביותר. אם יש צורך, משדרגים לגרסה האחרונה. - שומרים את
Podfile
. פותחים טרמינל ועוברים לספרייה שמכילה את
Podfile
:cd <path-to-project>
מריצים את הפקודה
pod install
. הפעולה הזו תתקין את ממשקי ה-API שצוינו ב-Podfile
, יחד עם כל יחסי התלות שלהם.pod install
סוגרים את Xcode ופותחים (לוחצים לחיצה כפולה) את הקובץ
.xcworkspace
של הפרויקט כדי להפעיל את Xcode. מרגע זה ואילך צריך להשתמש בקובץ.xcworkspace
כדי לפתוח את הפרויקט.
כדי לעדכן את ה-API בפרויקט קיים:
- פותחים טרמינל ועוברים לספריית הפרויקט שמכילה את הקוד
Podfile
. - מריצים את הפקודה
pod update
. הפעולה הזו תעדכן לגרסה האחרונה את כל ממשקי ה-API שצוינו ב-Podfile
.
התקנה ידנית
במדריך הזה מוסבר איך להוסיף לפרויקט באופן ידני את ה-XCFrameworks שמכילות את ה-SDK של מפות Google ל-iOS, ולקבוע את הגדרות ה-build ב-Xcode. XCFramework הוא חבילה בינארית שניתן להשתמש בה במספר פלטפורמות, כולל מכונות שמשתמשות בסיליקון של Apple.- מורידים את קובצי ה-SDK הבינאריים ואת קובצי המשאבים הבאים:
- צריך לחלץ את הקבצים כדי לגשת ל-XCFrameworks ולמשאבים.
- אם עדיין אין לך פרויקט ב-Xcode, צריך ליצור פרויקט עכשיו ולשמור אותו במחשב המקומי. אם אתם חדשים בפיתוח ל-iOS:
- יוצרים פרויקט חדש.
- בוחרים בתבנית iOS > אפליקציה.
- במסך האפשרויות של הפרויקט:
- מזינים את Project Name (שם הפרויקט).
- מתעדים את הערך בשדה מזהה חבילה. אפשר להשתמש בערך הזה כדי להגביל את מפתח ה-API בהמשך.
- מגדירים את Interface של הפרויקט כ-Storyboard.
- מגדירים את Language כ-Swift או כ-Objective-C.
-
פותחים את הכרטיסייה כללי. גוררים את ה-XCFrameworks הבאות לפרויקט, בקטע Frameworks, ספריות ותוכן מוטמע. חשוב לבחור באפשרות לא להטמיע בכל XCFramework:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
-
מעתיקים את
GoogleMaps.bundle
מה-GoogleMapsResources שהורדתם לספרייה ברמה העליונה של פרויקט ה-Xcode. צריך לבחור באפשרות העתקת פריטים לתיקייה של קבוצת היעד כשמתבקשים לעשות זאת. - בוחרים את הפרויקט מתוך Project Navigator, ובוחרים את יעד האפליקציה.
-
פותחים את הכרטיסייה Build שלבים (שלבי ה-build) ליעד של האפליקציה.
ב-Link Binary with Libraries (קישור של 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
SystemConfiguration.framework
UIKit.framework
-
בוחרים את הפרויקט ולא ביעד ספציפי, ופותחים את הכרטיסייה Build Settings (הגדרות build). בקטע Linking - General -> Other Linker flags, מוסיפים את
-ObjC
ל-'Debug' ול-'Release'. אם ההגדרות האלה לא גלויות, אפשר לשנות את המסנן בסרגל Build Settings (הגדרות Build) מ-Basic (בסיסי) ל-All (הכול). -
כדי להתקין את 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
באופן הבא:
- מוסיפים את הצהרת הייבוא הבאה:
import GoogleMaps
- מוסיפים את הקוד הבא ל-method
application(_:didFinishLaunchingWithOptions:)
באמצעות מפתח ה-API:GMSServices.provideAPIKey("YOUR_API_KEY")
- אם השתמשת גם ב-Places API, צריך להוסיף שוב את המפתח כפי שמוצג כאן:
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
מוסיפים את מפתח ה-API ל-AppDelegate.m
באופן הבא:
- מוסיפים את הצהרת הייבוא הבאה:
@import GoogleMaps;
- מוסיפים את הקוד הבא ל-method
application:didFinishLaunchingWithOptions:
באמצעות מפתח ה-API:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
- אם השתמשת גם ב-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
:
בצילום המסך הבא אפשר לראות את ההגדרות בממשק המשתמש של Xcode:
אם משתמש מקיש על הלוגו של Google במפה, יכול להיות שהשגיאות הבאות יתעוררו ללא ההצהרה הזו:
-canOpenURL: נכשלה עבור כתובת האתר: "comgooglemaps://" - שגיאה: "אפליקציה זו אינה מורשה לבצע שאילתות עבור סכימה comgooglemaps" -canOpenURL: נכשלה עבור כתובת האתר: "googlechromes://" - שגיאה: "האפליקציה הזו אינה מורשית לשלוח שאילתות עבור סכימה googlechromes"
כדי למנוע את השגיאות האלה, צריך להוסיף את ההצהרה אל Info.plist
.
מה עושים אחר כך
עכשיו, אחרי שיש לכם מפתח API ופרויקט Xcode, אתם יכולים ליצור ולהפעיל אפליקציות. ה-SDK לניווט ל-iOS כולל מדריכים רבים ואפליקציות לדוגמה שיוכלו לעזור לכם להתחיל. פרטים נוספים זמינים במאמרים הבאים: