หลังจากเปิดใช้การเรียกเก็บเงินและสร้างคีย์ 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
ของเป้าหมายเพื่อยืนยันการติดตั้ง คุณจะเห็นแพ็กเกจที่ติดตั้งไว้ในเฟรม ไลบรารี และเนื้อหาที่ฝัง นอกจากนี้ คุณยังสามารถดูส่วน "ทรัพยากร Dependency ของแพ็กเกจ" ของ "ตัวนำทางโปรเจ็กต์" เพื่อยืนยันแพ็กเกจและเวอร์ชันได้ด้วย
หากต้องการอัปเดต package
สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
- จาก Xcode ให้ไปที่ "ไฟล์ > แพ็กเกจ > อัปเดตเป็นแพ็กเกจเวอร์ชันล่าสุด"
- หากต้องการยืนยันการติดตั้ง ให้ไปที่ส่วนทรัพยากร Dependency ของแพ็กเกจของตัวนำทางโปรเจ็กต์เพื่อยืนยันแพ็กเกจและเวอร์ชันของแพ็กเกจ
หากต้องการนำ 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 ซึ่งมีความสามารถเกี่ยวกับสถานที่ทั้งหมด
CocoaPods เป็นผู้จัดการทรัพยากร Dependency แบบโอเพนซอร์สสำหรับโปรเจ็กต์ Swift และ Objective-C Cocoa หากยังไม่มีเครื่องมือ CocoaPods ให้ติดตั้งใน macOS โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล ดูรายละเอียดได้ที่คู่มือเริ่มต้นใช้งาน CocoaPods
sudo gem install cocoapods
สร้าง Podfile
สำหรับ Places SDK สำหรับ iOS และใช้เพื่อติดตั้ง SDK และทรัพยากรต่างๆ ต่อไปนี้
- หากยังไม่มีโปรเจ็กต์ Xcode ให้สร้างโปรเจ็กต์ตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณยังไม่คุ้นเคยกับการพัฒนาแอป iOS ให้สร้างโปรเจ็กต์ใหม่และเลือกเทมเพลตแอป iOS
- สร้างไฟล์ชื่อ
Podfile
ในไดเรกทอรีโปรเจ็กต์ ไฟล์นี้ระบุทรัพยากร Dependency ของโปรเจ็กต์ - แก้ไข
Podfile
และเพิ่มทรัพยากร Dependency รวมถึงversionsของทรัพยากร 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 ที่อาจมี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 ต่อไปนี้ไปยังโปรเจ็กต์ในส่วนเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง ตรวจสอบว่าได้เลือกไม่ฝัง ซึ่งมีดังนี้
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 ที่คุณดาวน์โหลด
เพิ่มไฟล์ Manifest ของความเป็นส่วนตัวของ Apple
- ดาวน์โหลดแพ็กเกจไฟล์ Manifest ด้านความเป็นส่วนตัวสำหรับ Places SDK สำหรับ iOS ที่ GooglePlacesPrivacy
- แตกไฟล์เพื่อเข้าถึง
GooglePlacesPrivacy.bundle
- คัดลอก
GooglePlacesPrivacy.bundle
ลงในไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode
ขั้นตอนที่ 3: เพิ่มคีย์ 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"];
ขั้นตอนที่ 4: เริ่มเขียนโค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการค้นหาตำแหน่งปัจจุบัน
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
ขั้นตอนถัดไป
หลังจากกำหนดค่าโปรเจ็กต์แล้ว คุณจะสำรวจแอปตัวอย่างได้ คุณจะต้องติดตั้ง Cocoapods v1.6.1