پس از فعال کردن صورتحساب و ایجاد یک کلید API، آماده راه اندازی پروژه Xcode هستید که برای توسعه برنامه خود استفاده می کنید.
یادداشت های انتشار برای هر نسخه در دسترس هستند.
مرحله 1: نرم افزار مورد نیاز را نصب کنید
برای ساختن یک پروژه با استفاده از Places SDK برای iOS، شما نیاز دارید:
- Xcode نسخه 15.0 یا بالاتر
مرحله 2: پروژه Xcode را ایجاد کرده و Places SDK را برای iOS نصب کنید
مدیر بسته سوئیفت
Places SDK برای iOS را می توان از طریق Swift Package Manager نصب کرد. برای افزودن SDK، مطمئن شوید که هر مکان SDK موجود برای وابستگیهای iOS را حذف کردهاید.
برای افزودن SDK به یک پروژه جدید یا موجود، مراحل زیر را دنبال کنید:
-
project
یاworkspace
Xcode خود را باز کنید، سپس به File > Add Package Dependencies بروید. - https://github.com/googlemaps/ios-places-sdk را به عنوان URL وارد کنید، Enter را فشار دهید تا بسته را وارد کنید و روی «افزودن بسته» کلیک کنید.
- برای نصب یک
version
خاص، قسمت Dependency Rule را روی یکی از گزینه های مبتنی بر نسخه تنظیم کنید. برای پروژه های جدید، توصیه می کنیم آخرین نسخه را مشخص کنید و از گزینه "نسخه دقیق" استفاده کنید. پس از تکمیل، روی "افزودن بسته" کلیک کنید. - از پنجره انتخاب محصولات بسته ، تأیید کنید
GooglePlaces
به هدفmain
تعیینشده شما اضافه میشود. پس از تکمیل، روی "افزودن بسته" کلیک کنید. - برای تأیید نصب خود، به صفحه
General
هدف خود بروید. در Frameworks، Libraries و Embedded Content باید بسته های نصب شده را ببینید. همچنین میتوانید برای تأیید بسته و نسخه آن، بخش «وابستگیهای بسته» در «ناوبر پروژه» را مشاهده کنید.
برای به روز رسانی package
برای یک پروژه موجود، این مراحل را دنبال کنید:
- از Xcode، به "File > Packages > Update To Latest Package Versions" بروید.
- برای تأیید نصب خود، به بخش Package Dependencies در Project Navigator بروید تا بسته و نسخه آن را تأیید کنید.
برای حذف Places SDK موجود برای iOS که به صورت دستی نصب شده است، این مراحل را دنبال کنید:
- از تنظیمات پیکربندی پروژه Xcode خود، Frameworks، Libraries و Embedded Content را پیدا کنید. برای حذف چارچوب زیر از علامت منفی (-) استفاده کنید:
-
GooglePlaces.xcframework
-
- از فهرست سطح بالای پروژه Xcode خود، بسته
GooglePlaces
حذف کنید.
CocoaPods
Places SDK برای iOS بهعنوان یک CocoaPod pod، GooglePlaces در دسترس است که شامل همه قابلیتهای مکان است.
CocoaPods یک مدیر وابستگی منبع باز برای پروژه های Swift و Objective-C Cocoa است. اگر از قبل ابزار 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 را به صورت دستی به پروژه خود اضافه کنید و تنظیمات ساخت خود را در Xcode پیکربندی کنید. XCFramework یک بسته باینری است که میتوانید در چندین پلتفرم از جمله ماشینهایی که از سیلیکون اپل استفاده میکنند استفاده کنید.
- فایل های باینری و منبع SDK زیر را دانلود کنید:
- برای دسترسی به XCFramework و منابع، فایل ها را استخراج کنید.
- Xcode را راه اندازی کنید و یک پروژه موجود را باز کنید یا یک پروژه جدید ایجاد کنید. اگر در توسعه iOS جدیدتر هستید، یک پروژه جدید ایجاد کنید و الگوی برنامه iOS را انتخاب کنید.
- بستههای Maps را از نسخههای قبلی از پروژه خود حذف کنید.
- تب General را باز کنید. XCFramework زیر را به داخل پروژه خود در بخش Frameworks, Libraries, and Embedded Content بکشید. حتماً Do Not Embed را انتخاب کنید:
-
GooglePlaces.xcframework
-
-
GooglePlaces.bundle
را از GooglePlacesResources که دانلود کردهاید در فهرست سطح بالای پروژه Xcode خود کپی کنید. وقتی از شما خواسته شد، مطمئن شوید که موارد کپی در پوشه گروه مقصد را انتخاب کنید. - پروژه خود را از Project Navigator انتخاب کنید و هدف برنامه خود را انتخاب کنید.
- تب Build Phases را باز کنید. در لینک باینری با کتابخانه ها ، چارچوب ها و کتابخانه های زیر را اضافه کنید:
-
CoreGraphics.framework
-
CoreLocation.framework
-
libc++.tbd
-
libz.tbd
-
QuartzCore.framework
-
UIKit.framework
-
پروژه خود را به جای یک هدف خاص انتخاب کنید و تب Build Settings را باز کنید. در بخش Linking - General -> Other Linker Flags ،
-ObjC
به "Debug" و "Release" اضافه کنید. اگر این تنظیمات قابل مشاهده نیستند، فیلتر را در نوار تنظیمات ساخت از Basic به All تغییر دهید.
GooglePlaces.bundle
را از GooglePlacesResources که دانلود کردید بکشیدGooglePlacesSwift
میتوانید GooglePlacesSwift (پیشنمایش) SDK را با استفاده از 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 Privacy Manifest را بررسی کنید
اپل به جزئیات حریم خصوصی برنامه برای برنامه های موجود در فروشگاه App نیاز دارد. برای بهروزرسانیها و اطلاعات بیشتر، از صفحه جزئیات حریم خصوصی فروشگاه App Apple دیدن کنید.
فایل Apple Privacy Manifest در بسته منابع برای SDK گنجانده شده است. برای تأیید اینکه فایل Manifest Privacy گنجانده شده است و برای بررسی محتوای آن، یک بایگانی از برنامه خود ایجاد کنید و یک گزارش حریم خصوصی از بایگانی ایجاد کنید .
مرحله 4: کلید API را به برنامه خود اضافه کنید
در مثالهای زیر، YOUR_API_KEY
با کلید API خود جایگزین کنید.
سویفت
کلید API خود را به صورت زیر به AppDelegate.swift
خود اضافه کنید:
- عبارت import زیر را اضافه کنید:
import GooglePlaces
- موارد زیر را به
application(_:didFinishLaunchingWithOptions:)
خود اضافه کنید و کلید API خود را جایگزین YOUR_API_KEY کنید:GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
هدف-C
کلید API خود را به صورت زیر به AppDelegate.m
خود اضافه کنید:
- عبارت import زیر را اضافه کنید:
@import GooglePlaces;
- روش زیر را به
application:didFinishLaunchingWithOptions:
متد، YOUR_API_KEY را با کلید API خود جایگزین کنید:[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
GooglePlacesSwift
کلید API خود را به صورت زیر به AppDelegate.swift
خود اضافه کنید:
- عبارت import زیر را اضافه کنید:
import GooglePlacesSwift
- موارد زیر را به
application(_:didFinishLaunchingWithOptions:)
خود اضافه کنید و کلید API خود را جایگزین YOUR_API_KEY کنید:PlacesClient.shared.provideAPIKey("YOUR_API_KEY")
مرحله 5: شروع به نوشتن کد کنید
نمونه کد زیر نحوه بدست آوردن مکان فعلی را نشان می دهد.
سویفت
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 } } }
هدف-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() } }
مراحل بعدی
پس از پیکربندی پروژه، میتوانید برنامههای نمونه را کاوش کنید.