אחרי שתפעילו את החיוב ותצרו מפתח API, תוכלו להגדיר את פרויקט ה-Xcode שבו אתם משתמשים כדי לפתח את האפליקציה.
נתוני הגרסה זמינים לכל גרסה גרסה חדשה.
שלב 1: מתקינים את התוכנה הנדרשת
כדי לבנות פרויקט באמצעות Places SDK ל-iOS, צריך:
- Xcode גרסה 15.0 ואילך
שלב 2: יצירת פרויקט Xcode והתקנה של Places SDK ל-iOS
מנהל חבילות SWIFT
ניתן להתקין את Places SDK ל-iOS דרך SWIFT Package Manager. כדי להוסיף את ה-SDK, צריך לוודא שיש לך הוסרה כל יחסי התלות הקיימים של Places SDK ל-iOS.
כדי להוסיף את ה-SDK לפרויקט חדש או קיים:
-
פותחים את ה-Xcode
project
אוworkspace
, ועוברים אל File > (קובץ >) הוספת יחסי תלות של חבילה. - מזינים את הכתובת https://github.com/googlemaps/ios-places-sdk בתור כתובת ה-URL ומקישים על Enter. כדי למשוך את החבילה, וללחוץ על "הוספת חבילה".
-
כדי להתקין
version
ספציפי, צריך להגדיר את השדה כלל תלות לאחד אפשרויות שמבוססות על גרסאות. בפרויקטים חדשים, מומלץ לציין את הגרסה האחרונה באמצעות "גרסה מדויקת" כאפשרות. בסיום, לוחצים על 'הוספת חבילה'. -
בחלון Choose Package Products, מוודאים שהתוסף
GooglePlaces
יתווסף אל היעד שהגדרת ל-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, עוברים אל 'File >' חבילות > יש לעדכן לגרסאות האחרונות של החבילה".
- כדי לאמת את ההתקנה, עוברים לקטע Package Dependencies של Project Navigator כדי לאמת את החבילה והגרסה שלה.
כדי להסיר יחסי תלות קיימים של Places SDK ל-iOS שנוספו באמצעות
CocoaPods
, יש לבצע את השלבים הבאים:
- סוגרים את סביבת העבודה של Xcode. פותחים את הטרמינל ומריצים את הפקודה הבאה:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
מסירים את
Podfile
,Podfile.resolved
ואת Xcodeworkspace
אם אתם לא משתמשים בהם לאף מטרה אחרת מלבד CocoaPods.
-
בהגדרות האישיות של פרויקט Xcode, מחפשים את Frameworks, ספריות,
ותוכן מוטמע. משתמשים בסימן המינוס(-) כדי להסיר את המסגרת הבאה:
GooglePlaces.xcframework
-
מהספרייה ברמה העליונה של פרויקט Xcode, מסירים את
GooglePlaces
חבילה.
CocoaPods
Places SDK ל-iOS זמין בתור CocoaPod pod, GooglePlaces, שכולל את כל היכולות של המקומות.
CocoaPods הוא מנהל יחסי תלות בקוד פתוח עבור Swift ו-Objective-C פרויקטים של קקאו. אם עדיין לא התקנתם את הכלי CocoaPods, התקינו אותו macOS על ידי הרצת הפקודה הבאה מהטרמינל. פרטים נוספים זמינים במאמר המדריך לתחילת העבודה של CocoaPods.
sudo gem install cocoapods
יצירת Podfile
עבור Places SDK ל-iOS ושימוש
כדי להתקין את ה-SDK ואת יחסי התלות שלו:
- אם עדיין אין לך פרויקט Xcode, עליך ליצור פרויקט עכשיו ולשמור אותו ב- במחשב המקומי שלכם. אם אתם משתמשים חדשים בפיתוח ל-iOS, עליכם ליצור פרויקט חדש ובוחרים בתבנית האפליקציה ל-iOS.
- יוצרים קובץ בשם
Podfile
בספריית הפרויקט. הזה מגדיר את יחסי התלות של הפרויקט. - עורכים את
Podfile
ומוסיפים את יחסי התלות עם הגרסאות שלהם. הנה שמציין את שם היעד של האפליקציה ואת השם של רצף המודעותGooglePlaces
:source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlaces', '8.3.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
לגרסה העדכנית ביותר.
התקנה ידנית
במדריך הזה מוסבר איך להוסיף באופן ידני את ה-XCFramework שמכיל את Places SDK ל-iOS לפרויקט ולקבוע את הגדרות ה-build ב-Xcode. XCFramework היא חבילה בינארית שבה ניתן להשתמש בפלטפורמות מרובות, כולל מכונות באמצעות Apple silicon.
- מורידים את קובצי ה-SDK והבינאריים הבאים:
- מחלצים את הקבצים כדי לגשת ל-XCFramework ולמשאבים.
- מפעילים את Xcode ופותחים פרויקט קיים, או יוצרים פרויקט חדש. פרויקט. אם אתם חדשים יותר בפיתוח iOS, עליכם ליצור פרויקט חדש בוחרים את תבנית האפליקציה ל-iOS.
- צריך להסיר מהפרויקט את כל החבילות של מפות Google מגרסאות קודמות.
-
פותחים את הכרטיסייה 'כללי'. גוררים את ה-XCFramework הבא לפרויקט
בקטע Frameworks, ספריות ותוכן מוטמע. כדאי לוודא
כדי לבחור באפשרות ללא הטמעה:
GooglePlaces.xcframework
גוררים את -
מעתיקים את
GooglePlaces.bundle
מ-GooglePlacesResources שהורדתם לספרייה ברמה העליונה של פרויקט Xcode שלכם. עליך לוודא שבחרת באפשרות כשמתבקשים, מעתיקים פריטים לתיקייה של קבוצת היעד. - בוחרים את הפרויקט מ-Project Navigator ואז בוחרים היעד של האפליקציה.
-
פותחים את הכרטיסייה שלבי הבנייה. בתוך Link Binary עם
ספריות, יש להוסיף את הספריות והמסגרות הבאות:
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
-
בוחרים בפרויקט שלכם (ולא ביעד ספציפי), ופותחים את הגדרות Build. בקטע Linking - General -> (קישור - כללי ->) מקשר אחר סימונים, מוסיפים את
-ObjC
ל'ניפוי באגים' ו'Release'. אם הקריטריונים האלה ההגדרות לא מופיעות, אפשר לשנות את המסנן בסרגל הגדרות Build מבסיסי להכול.
GooglePlaces.bundle
מ-GooglePlacesResources שהורדתם
GooglePlacesSwift
ניתן להתקין את ה-SDK של GooglePlacesSwift (תצוגה מקדימה) באמצעות Swift Package Manager, CocoaPods ובאופן ידני. שלבי ההתקנה בכל התהליכים תואמים לשלבים המפורטים Places SDK ל-iOS, עם ההבדלים הבאים:
- חובה לציין Xcode 15.3.
- אם אתם משתמשים ב-Swift Package Manager, עליכם להחליף מופעים של
GooglePlaces
עםGooglePlacesSwift
. האיסור הזה כולל דפי חשבון ייבוא.- מחליפים את המופעים של https://github.com/googlemaps/ios-places-sdk ב-https://github.com/googlemaps/ios-places-swift-sdk.
- מעדכנים את מספר הגרסה ל-0.1.0.
- אם מבצעים התקנה ידנית, צריך להוריד את הקבצים הבינאריים של ה-SDK ואת קובצי המשאבים הבאים:
לדוגמה, אם משתמשים ב-CocoaPods, הערך של Podfile
הערוך ייראה כך:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.3' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlacesSwift', '0.1.0' end
שלב 3: בודקים את קובץ מניפסט הפרטיות של Apple
Apple דורשת פרטים לגבי הפרטיות של אפליקציות ב-App Store. עדכונים ומידע נוסף זמינים בדף פרטי הפרטיות של Apple App Store.
קובץ מניפסט הפרטיות של Apple כלול בחבילת המשאבים של ה-SDK. כדי לוודא שקובץ מניפסט הפרטיות נכלל וכדי לבדוק את התוכן שלו, יש ליצור ארכיון של האפליקציה ולהפיק דוח פרטיות מהארכיון.
שלב 4: מוסיפים את מפתח ה-API לאפליקציה
בדוגמאות הבאות, מחליפים את YOUR_API_KEY
במפתח ה-API שלכם.
Swift
מוסיפים את מפתח ה-API ל-AppDelegate.swift
באופן הבא:
- מוסיפים את הצהרת הייבוא הבאה:
import GooglePlaces
- צריך להוסיף את הפריטים הבאים ל
application(_:didFinishLaunchingWithOptions:)
שמחליפה את YOUR_API_KEY במפתח ה-API:GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
מוסיפים את מפתח ה-API ל-AppDelegate.m
באופן הבא:
- מוסיפים את הצהרת הייבוא הבאה:
@import GooglePlaces;
- צריך להוסיף את הפריטים הבאים ל
application:didFinishLaunchingWithOptions:
שמחליפה את YOUR_API_KEY במפתח ה-API:[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
GooglePlacesSwift
מוסיפים את מפתח ה-API ל-AppDelegate.swift
באופן הבא:
- מוסיפים את הצהרת הייבוא הבאה:
import GooglePlacesSwift
- צריך להוסיף את הפריטים הבאים ל
application(_:didFinishLaunchingWithOptions:)
שמחליפה את YOUR_API_KEY במפתח ה-API:PlacesClient.shared.provideAPIKey("YOUR_API_KEY")
שלב 5: מתחילים לכתוב קוד
דוגמאות הקוד הבאות ממחישות איך למצוא את המקום הנוכחי.
Swift
import GooglePlaces import UIKit class GetStartedViewController : UIViewController { // Add a pair of UILabels in Interface Builder, and connect the outlets to these variables. @IBOutlet private var nameLabel: UILabel! @IBOutlet private var addressLabel: UILabel! private var placesClient: GMSPlacesClient! override func viewDidLoad() { super.viewDidLoad() placesClient = GMSPlacesClient.shared() } // Add a UIButton in Interface Builder, and connect the action to this function. @IBAction func getCurrentPlace(_ sender: UIButton) { let placeFields: GMSPlaceField = [.name, .formattedAddress] placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: placeFields) { [weak self] (placeLikelihoods, error) in guard let strongSelf = self else { return } guard error == nil else { print("Current place error: \(error?.localizedDescription ?? "")") return } guard let place = placeLikelihoods?.first?.place else { strongSelf.nameLabel.text = "No current place" strongSelf.addressLabel.text = "" return } strongSelf.nameLabel.text = place.name strongSelf.addressLabel.text = place.formattedAddress } } }
Objective-C
#import "GetStartedViewController.h" @import GooglePlaces; @interface GetStartedViewController () // Add a pair of UILabels in Interface Builder and connect the outlets to these variables @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *addressLabel; @end @implementation GetStartedViewController { GMSPlacesClient *_placesClient; } - (void)viewDidLoad { [super viewDidLoad]; _placesClient = [GMSPlacesClient sharedClient]; } // Add a pair of UILabels in Interface Builder and connect the outlets to these variables. - (IBAction)getCurrentPlace:(UIButton *)sender { GMSPlaceField placeFields = (GMSPlaceFieldName | GMSPlaceFieldFormattedAddress); __weak typeof(self) weakSelf = self; [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:placeFields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { __typeof__(self) strongSelf = weakSelf; if (strongSelf == nil) { return; } if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } GMSPlace *place = likelihoods.firstObject.place; if (place == nil) { strongSelf.nameLabel.text = @"No current place"; strongSelf.addressLabel.text = @""; return; } strongSelf.nameLabel.text = place.name; strongSelf.addressLabel.text = place.formattedAddress; }]; } @end
GooglePlacesSwift
struct ContentView: View { @State var place: Place? var body: some View { Button("Get Place") { // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName, .formattedAddress] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): self.place = place case .failure(let placesError): // Handle error } Text(swiftPlace?.displayName ?? "No place yet") .padding() Text(swiftPlace?.formattedAddress ?? "No place yet") .padding() } }
השלבים הבאים
אחרי שסיימתם להגדיר את הפרויקט, אתם יכולים לעיין אפליקציות לדוגמה.