สร้างโปรเจ็กต์ Xcode

หลังจากที่คุณเปิดใช้การเรียกเก็บเงินและสร้างคีย์ API คุณก็พร้อมที่จะตั้งค่าโปรเจ็กต์ Xcode ที่คุณใช้พัฒนาแอปแล้ว

บันทึกประจำรุ่นจะมีให้สำหรับแต่ละรุ่น

ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์ที่จำเป็น

หากต้องการสร้างโปรเจ็กต์โดยใช้ Places SDK สำหรับ iOS คุณต้องมีสิ่งต่อไปนี้

  • Xcode เวอร์ชัน 14.0 ขึ้นไป
  • Cocoapods
  • ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Xcode และติดตั้ง Places SDK สำหรับ iOS

    หากต้องการติดตั้ง API ในโปรเจ็กต์ใหม่ ให้ทำตามขั้นตอนต่อไปนี้

    ใช้ 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

    1. หากยังไม่มีโปรเจ็กต์ Xcode ให้สร้างโปรเจ็กต์ตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณเพิ่งเริ่มใช้งานการพัฒนา iOS ให้สร้างโปรเจ็กต์ใหม่ และเลือกเทมเพลตแอป iOS
    2. สร้างไฟล์ชื่อ Podfile ในไดเรกทอรีโปรเจ็กต์ ไฟล์นี้ระบุทรัพยากร Dependency ของโปรเจ็กต์
    3. แก้ไข Podfile และเพิ่มทรัพยากร Dependency พร้อมด้วยเวอร์ชัน ต่อไปนี้เป็นตัวอย่างที่ระบุชื่อเป้าหมายของแอปพลิเคชันและชื่อของพ็อด GooglePlaces:
      source 'https://github.com/CocoaPods/Specs.git'
      
      platform :ios, '14.0'
      
      target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
        pod 'GooglePlaces', '8.2.1'
      end
      
      อย่าลืมเรียกใช้ pod outdated เป็นประจำเพื่อตรวจหาเมื่อมีเวอร์ชันใหม่เพื่อให้คุณใช้เวอร์ชันล่าสุดอยู่เสมอ
    4. บันทึก Podfile
    5. เปิดเทอร์มินัลและไปที่ไดเรกทอรีที่มี Podfile:

      cd <path-to-project>
    6. เรียกใช้คำสั่ง pod install การดำเนินการนี้จะติดตั้ง API ที่ระบุใน Podfile พร้อมกับทรัพยากร Dependency ที่ผู้ใช้อาจมี

      pod install
    7. ปิด Xcode แล้วเปิด (ดับเบิลคลิก) ไฟล์ .xcworkspace ของโปรเจ็กต์เพื่อเปิด Xcode ตั้งแต่นี้เป็นต้นไป คุณต้องใช้ไฟล์ .xcworkspace เพื่อเปิดโปรเจ็กต์

    หากต้องการอัปเดต API สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

    1. เปิดเทอร์มินัลแล้วไปที่ไดเรกทอรีโปรเจ็กต์ที่มี Podfile
    2. เรียกใช้คำสั่ง pod update การดำเนินการนี้จะอัปเดต API ทั้งหมดที่ระบุใน Podfile เป็นเวอร์ชันล่าสุด

    ติดตั้ง XCFramework

    XCFramework เป็นแพ็กเกจไบนารีที่คุณใช้ได้ในหลายแพลตฟอร์ม รวมถึงเครื่องที่ใช้ชิปเซ็ต M1 เพื่อติดตั้ง Places SDK สำหรับ iOS คู่มือนี้แสดงวิธีเพิ่ม XCFramework ที่มี Places SDK สำหรับ iOS ลงในโปรเจ็กต์ของคุณและกำหนดค่าบิวด์ใน Xcode

    สร้างด้วยตนเอง

    คู่มือนี้แสดงวิธีเพิ่ม Maps SDK สำหรับ iOS ลงในโปรเจ็กต์และกำหนดการตั้งค่าบิลด์ใน Xcode ด้วยตนเอง

    1. ดาวน์โหลดไฟล์ต้นฉบับ SDK: GooglePlaces-8.2.1
    2. คลายแพคไฟล์ต้นฉบับ ไปที่โฟลเดอร์ Frameworks เพื่อเข้าถึง XCFramework
    3. เปิดใช้ Xcode แล้วเปิดโปรเจ็กต์ที่มีอยู่ หรือสร้างโปรเจ็กต์ใหม่ หากเพิ่งเริ่มใช้ iOS ให้สร้างโปรเจ็กต์ใหม่และเลือก เทมเพลตแอป iOS
    4. ลาก XCFramework ต่อไปนี้ไปยังโปรเจ็กต์ของคุณในส่วนเฟรม ไลบรารี และเนื้อหาที่ฝัง ตรวจสอบว่าได้เลือกไม่ฝัง โดยทำดังนี้
      • GooglePlaces-x.x.x/GooglePlaces.xcframework
    5. คลิกขวาที่ GooglePlaces.xcframework ในโปรเจ็กต์ แล้วเลือกแสดงในตัวค้นหา
    6. ลาก GooglePlaces.bundle จากโฟลเดอร์ ios-arm64/GooglePlaces.framework/Resources ไปยังไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อได้รับข้อความแจ้ง ให้ตรวจสอบว่าได้ไม่ได้เลือกคัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทาง
    7. เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
    8. เปิดแท็บขั้นตอนที่สร้าง และภายในลิงก์ไบนารีกับไลบรารี แล้วเพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้
      • CoreGraphics.framework
      • CoreLocation.framework
      • libc++.tbd
      • libz.tbd
      • QuartzCore.framework
      • UIKit.framework
    9. เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์

    10. ในส่วน Other Linker Flags ให้เพิ่ม -ObjC หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมด

    มีคาร์เธจ

    ติดตั้งด้วยตัวเอง

    คู่มือนี้แสดงวิธีเพิ่มเฟรมเวิร์ก GooglePlaces ลงในโปรเจ็กต์ด้วยตนเองและกำหนดการตั้งค่าบิลด์ใน Xcode

    1. ดาวน์โหลดไฟล์ต้นฉบับ SDK: GooglePlaces-8.2.1
    2. คลายแพคไฟล์ต้นฉบับ
    3. เปิดใช้ Xcode แล้วเปิดโปรเจ็กต์ที่มีอยู่ หรือสร้างโปรเจ็กต์ใหม่ หากคุณเพิ่งเริ่มใช้งานการพัฒนา iOS ให้สร้างโปรเจ็กต์ใหม่และเลือกเทมเพลตแอป iOS
    4. นำแพ็กเกจ Maps จากรุ่นก่อนหน้าออกจากโปรเจ็กต์
    5. ลากแพ็กเกจต่อไปนี้ลงในโปรเจ็กต์ (เมื่อได้รับข้อความแจ้ง ให้เลือกคัดลอกรายการหากจำเป็น)
      • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
    6. คลิกขวาที่ GooglePlaces.xcframework ในโปรเจ็กต์ แล้วเลือกแสดงในตัวค้นหา
    7. ลาก GooglePlaces.bundle จากโฟลเดอร์ Resources ไปยังโปรเจ็กต์ของคุณ เมื่อได้รับข้อความแจ้ง ให้ตรวจสอบว่าได้ไม่ได้เลือกคัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทาง
    8. เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
    9. เปิดแท็บขั้นตอนที่สร้าง และภายในลิงก์ไบนารีกับไลบรารี ให้เพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้
      • CoreGraphics.framework
      • CoreLocation.framework
      • libc++.tbd
      • libz.tbd
      • QuartzCore.framework
      • UIKit.framework
    10. เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์

    11. ในส่วน Other Linker Flags ให้เพิ่ม -ObjC หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมด

    ขั้นตอนที่ 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