หลังจากเปิดใช้การเรียกเก็บเงินและสร้างคีย์ API แล้ว คุณก็พร้อมที่จะตั้งค่าโปรเจ็กต์ Xcode ที่ใช้เพื่อพัฒนาแอป
บันทึกประจำรุ่นจะพร้อมใช้งานสำหรับแต่ละรุ่น
ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์ที่จำเป็น
หากต้องการสร้างโปรเจ็กต์โดยใช้ Places SDK สำหรับ iOS คุณต้องมีสิ่งต่อไปนี้
- Xcode เวอร์ชัน 15.0 ขึ้นไป
ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Xcode และติดตั้ง Places SDK สำหรับ iOS
เครื่องมือจัดการแพ็กเกจ Swift
Places SDK สำหรับ iOS สามารถติดตั้งผ่าน Swift Package Manager หากต้องการเพิ่ม SDK โปรดตรวจสอบว่าคุณได้นำ Places SDK สำหรับทรัพยากร Dependency ของ iOS ที่มีอยู่ออก
หากต้องการเพิ่ม SDK ลงในโปรเจ็กต์ใหม่หรือโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
-
เปิด Xcode
project
หรือworkspace
แล้วไปที่ไฟล์ > เพิ่มการอ้างอิงแพ็กเกจ - ป้อน https://github.com/googlemaps/ios-places-sdk เป็น URL กด Enter เพื่อดึงข้อมูลแพ็กเกจ แล้วคลิก "เพิ่มแพ็กเกจ"
-
หากต้องการติดตั้ง
version
ที่เจาะจง ให้ตั้งค่าช่องกฎการขึ้นต่อกันเป็นตัวเลือกตามเวอร์ชันรายการใดรายการหนึ่ง สำหรับโปรเจ็กต์ใหม่ เราขอแนะนำให้ระบุเวอร์ชันล่าสุดและใช้ตัวเลือก "เวอร์ชันแบบตรงทั้งหมด" เมื่อเสร็จแล้ว ให้คลิก "เพิ่มแพ็กเกจ" -
จากหน้าต่างเลือกผลิตภัณฑ์แพ็กเกจ ให้ยืนยันว่าจะเพิ่ม
GooglePlaces
ไปยังเป้าหมายmain
ที่คุณกำหนด เมื่อเสร็จแล้ว ให้คลิก "เพิ่มแพ็กเกจ" -
หากต้องการยืนยันการติดตั้ง ให้ไปที่แผง
General
ของเป้าหมาย คุณควรเห็นแพ็กเกจที่ติดตั้งไว้ในเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง นอกจากนี้ คุณยังสามารถดูส่วน "การอ้างอิงของแพ็กเกจ" ของ "Project Navigator" เพื่อตรวจสอบแพ็กเกจและเวอร์ชันของแพ็กเกจได้
หากต้องการอัปเดต package
สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
หากคุณอัปเกรดจากเวอร์ชันก่อน 9.0.0 คุณต้องนำทรัพยากร Dependency ต่อไปนี้ออก:
GoogleMapsBase
,GoogleMapsCore
และGoogleMapsM4B
หลังจากอัปเกรด อย่านำการอ้างอิงสำหรับGoogleMaps
ออก ดูข้อมูลเพิ่มเติมได้ในบันทึกประจำรุ่นของเวอร์ชัน 9.0.0จากการตั้งค่าการกำหนดค่าโปรเจ็กต์ Xcode ให้ค้นหา Frameworks, Libraries และเนื้อหาแบบฝัง ใช้เครื่องหมายลบ(-)เพื่อนำเฟรมเวิร์กต่อไปนี้ออก
GoogleMapsBase
(สำหรับการอัปเกรดจากเวอร์ชันก่อน 9.0.0 เท่านั้น)GoogleMapsCore
(สำหรับการอัปเกรดจากเวอร์ชันก่อน 9.0.0 เท่านั้น)GoogleMapsM4B
(สำหรับการอัปเกรดจากเวอร์ชันก่อน 9.0.0 เท่านั้น)
- จาก Xcode ให้ไปที่ "ไฟล์ > แพ็กเกจ > อัปเดตเป็นเวอร์ชันล่าสุดของแพ็กเกจ"
- หากต้องการยืนยันการติดตั้ง ให้ไปที่ส่วนการอ้างอิงแพ็กเกจของ Project Navigator เพื่อตรวจสอบแพ็กเกจและเวอร์ชันของแพ็กเกจ
หากต้องการนำ Places SDK ที่มีอยู่สำหรับทรัพยากร Dependency ของ iOS ที่เพิ่มโดยใช้
CocoaPods
ออก ให้ทำตามขั้นตอนต่อไปนี้
- ปิดพื้นที่ทำงาน Xcode เปิดเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
นำ
Podfile
,Podfile.resolved
และ Xcodeworkspace
ออกหากคุณไม่ได้ใช้ CocoaPods อย่างอื่น
-
จากการตั้งค่าการกำหนดค่าโปรเจ็กต์ Xcode ให้ค้นหา Frameworks, Libraries และเนื้อหาแบบฝัง ใช้เครื่องหมายลบ(-)เพื่อนำเฟรมเวิร์กต่อไปนี้ออก
GooglePlaces.xcframework
-
นำแพ็กเกจ
GooglePlaces
ออกจากไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode
CocoaPods
Places SDK สำหรับ iOS มีให้บริการเป็นพ็อด CocoaPod, GooglePlaces ซึ่งมีความสามารถทั้งหมดของ Places
CocoaPods เป็นผู้จัดการทรัพยากร Dependency แบบโอเพนซอร์สสำหรับโปรเจ็กต์ Swift และ Objective-C Cocoa หากยังไม่มีเครื่องมือ CocoaPods ให้ติดตั้งใน macOS โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล ดูรายละเอียดได้ที่คู่มือเริ่มต้นใช้งาน CocoaPods
sudo gem install cocoapods
สร้าง Podfile
สำหรับ Places SDK สำหรับ iOS และใช้เพื่อติดตั้ง SDK และทรัพยากร Dependency ดังต่อไปนี้
- หากยังไม่มีโปรเจ็กต์ Xcode โปรดสร้างโปรเจ็กต์ในตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณใช้การพัฒนาแอป iOS ใหม่ ให้สร้างโปรเจ็กต์ใหม่และเลือกเทมเพลตแอป iOS
- สร้างไฟล์ชื่อ
Podfile
ในไดเรกทอรีโปรเจ็กต์ ไฟล์นี้ระบุทรัพยากร Dependency ของโปรเจ็กต์ - แก้ไข
Podfile
และเพิ่มทรัพยากร Dependency ของคุณพร้อมกับเวอร์ชันนั้นๆ ต่อไปนี้คือตัวอย่างที่ระบุชื่อเป้าหมายแอปพลิเคชันและชื่อของพ็อด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
พร้อมทรัพยากร Dependency ต่างๆ ที่ API อาจมีpod install
ปิด Xcode แล้วเปิด (ดับเบิลคลิก) ไฟล์
.xcworkspace
ของโปรเจ็กต์เพื่อเปิด Xcode ตั้งแต่นี้เป็นต้นไป คุณต้องใช้ไฟล์.xcworkspace
เพื่อเปิดโปรเจ็กต์
หากต้องการอัปเดต API สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
- เปิดเทอร์มินัลและไปที่ไดเรกทอรีโปรเจ็กต์ที่มี
Podfile
- เรียกใช้คำสั่ง
pod update
การดำเนินการนี้จะอัปเดต API ทั้งหมดที่ระบุในPodfile
ให้เป็นเวอร์ชันล่าสุด
การติดตั้งด้วยตนเอง
คู่มือนี้แสดงวิธีเพิ่ม XCFramework ที่มี Places SDK สำหรับ iOS ลงในโปรเจ็กต์ของคุณด้วยตนเองและกำหนดการตั้งค่าบิลด์ใน Xcode XCFramework เป็นแพ็กเกจไบนารีที่คุณใช้ได้ในหลายแพลตฟอร์ม รวมถึงเครื่องที่ใช้ Apple silicon
- ดาวน์โหลดไฟล์ทรัพยากรและไบนารีของ SDK ต่อไปนี้
- แตกไฟล์เพื่อเข้าถึง XCFramework และทรัพยากร
- เปิด Xcode และเปิดโปรเจ็กต์ที่มีอยู่ หรือสร้างโปรเจ็กต์ใหม่ หากคุณใช้การพัฒนาแอป iOS ใหม่ ให้สร้างโปรเจ็กต์ใหม่และเลือกเทมเพลตแอป iOS
- นำแพ็กเกจ Maps ออกจากรุ่นก่อนหน้าออกจากโปรเจ็กต์
-
เปิดแท็บทั่วไป ลาก XCFramework ต่อไปนี้ลงในโปรเจ็กต์ของคุณในส่วน Frameworks, Libraries และเนื้อหาที่ฝัง โปรดเลือกไม่ฝัง ดังนี้
GooglePlaces.xcframework
ลาก -
คัดลอก
GooglePlaces.bundle
จาก GooglePlacesResources ที่คุณดาวน์โหลดลงในไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode โปรดเลือก คัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทางเมื่อได้รับข้อความแจ้ง - เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
-
เปิดแท็บเฟสของการสร้าง ภายในลิงก์ไบนารีกับไลบรารี ให้เพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
-
เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์ ในส่วนการลิงก์ - ทั่วไป -> แฟล็กอื่นๆ ของ Linker ให้เพิ่ม
-ObjC
ลงใน "แก้ไขข้อบกพร่อง" และ "เผยแพร่" หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมด
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: ตรวจสอบไฟล์ Manifest ด้านความเป็นส่วนตัวของ Apple
Apple ต้องการรายละเอียดความเป็นส่วนตัวของแอปสำหรับแอปใน App Store ไปที่หน้ารายละเอียดความเป็นส่วนตัวของ Apple App Store เพื่อดูข้อมูลอัปเดตและข้อมูลเพิ่มเติม
ไฟล์ Manifest ด้านความเป็นส่วนตัวของ Apple จะรวมอยู่ในแพ็กเกจทรัพยากรของ SDK หากต้องการตรวจสอบว่าไฟล์ Manifest สำหรับความเป็นส่วนตัวรวมอยู่ในไฟล์แล้ว และต้องการตรวจสอบเนื้อหา ให้สร้างที่เก็บถาวรของแอปแล้วสร้างรายงานความเป็นส่วนตัวจากที่เก็บถาวร
ขั้นตอนที่ 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() } }
ขั้นตอนถัดไป
หลังจากกำหนดค่าโปรเจ็กต์แล้ว คุณจะสำรวจแอปตัวอย่างได้