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

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

บันทึกประจำรุ่นจะพร้อมใช้งานสำหรับแต่ละรายการ

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

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

  • Xcode เวอร์ชัน 15.0 ขึ้นไป

ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Xcode และติดตั้ง Maps SDK สำหรับ iOS

เครื่องมือจัดการแพ็กเกจ Swift

Maps SDK สำหรับ iOS สามารถติดตั้งได้ผ่าน Swift Package Manager หากต้องการเพิ่ม SDK โปรดตรวจสอบว่าคุณมี ได้นำ Maps SDK สำหรับทรัพยากร Dependency ของ iOS ที่มีอยู่ออก

หากต้องการเพิ่ม SDK ลงในโปรเจ็กต์ใหม่หรือโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิด Xcode project หรือ workspace แล้วไปที่ไฟล์ > เพิ่ม Package Dependency
  2. ป้อน https://github.com/googlemaps/ios-maps-sdk เป็น URL แล้วกด Enter เพื่อดึงข้อมูลแพ็กเกจ แล้วคลิก "เพิ่มแพ็กเกจ"
  3. หากต้องการติดตั้ง version ที่เจาะจง ให้ตั้งค่าช่องกฎการขึ้นต่อกันเป็นค่าใดค่าหนึ่ง ตัวเลือกตามเวอร์ชัน สำหรับโปรเจ็กต์ใหม่ เราขอแนะนำให้ระบุเวอร์ชันล่าสุดและ โดยใช้ "เวอร์ชันที่แน่นอน" ตัวเลือก เมื่อเสร็จแล้ว ให้คลิก "เพิ่มแพ็กเกจ"
  4. จากหน้าต่างเลือกผลิตภัณฑ์แพ็กเกจ ให้เพิ่มการยืนยัน GoogleMaps (สำหรับเวอร์ชันที่เก่ากว่า 9.0.0 ให้ยืนยัน GoogleMaps, GoogleMapsBase และ GoogleMapsCore) ลงในเป้าหมาย main ที่คุณกำหนด เมื่อเสร็จแล้ว ให้คลิก "เพิ่มแพ็กเกจ"
  5. หากต้องการยืนยันการติดตั้ง ให้ไปที่แผง General ของเป้าหมาย คุณควรเห็นแพ็กเกจที่ติดตั้งในเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง นอกจากนี้ คุณยังสามารถดู "ทรัพยากร Dependency ของแพ็กเกจ" ส่วนของ "Project Navigator" เพื่อยืนยันแพ็กเกจและเวอร์ชันของแพ็กเกจ

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

  1. หากกำลังอัปเกรดจากเวอร์ชันก่อน 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 เท่านั้น)
  2. จาก Xcode ให้ไปที่ "ไฟล์ > แพ็กเกจ > อัปเดตเป็นเวอร์ชันล่าสุดของแพ็กเกจ"
  3. หากต้องการยืนยันการติดตั้ง ให้ไปที่ส่วนการอ้างอิงแพ็กเกจของ Project Navigator เพื่อยืนยันแพ็กเกจและเวอร์ชันของแพ็กเกจ

วิธีนำ Maps SDK ที่มีอยู่สำหรับทรัพยากร Dependency ของ iOS ที่เพิ่มโดยใช้ CocoaPods ให้ทำตามขั้นตอนต่อไปนี้

  1. ปิดพื้นที่ทำงาน Xcode เปิดเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. นำ Podfile, Podfile.resolved และ Xcode workspace หากคุณไม่ได้ใช้สำหรับวัตถุประสงค์อื่นนอกเหนือจาก CocoaPods

หากต้องการนำ Maps SDK สำหรับ iOS ที่มีอยู่ซึ่งติดตั้งด้วยตนเองออก ให้ทำตามขั้นตอนต่อไปนี้
  1. จากการตั้งค่าการกำหนดค่าโปรเจ็กต์ Xcode ให้ค้นหา Frameworks, Libraries และเนื้อหาแบบฝัง ใช้เครื่องหมายลบ(-)เพื่อนำเฟรมเวิร์กต่อไปนี้ออก
    • GoogleMaps
    • GoogleMapsBase (สำหรับการติดตั้งเท่านั้น รุ่นก่อนหน้า 9.0.0)
    • GoogleMapsCore (สำหรับการติดตั้งเท่านั้น รุ่นก่อนหน้า 9.0.0)
    • GoogleMapsM4B (สำหรับการติดตั้งก่อนเวอร์ชัน 9.0.0 เท่านั้น)
  2. จากไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode ให้นำ GoogleMaps ออก

CocoaPods

Maps SDK สำหรับ iOS มีให้บริการเป็นพอด CocoaPods CocoaPods เป็นผู้จัดการทรัพยากร Dependency แบบโอเพนซอร์สของ Swift และ Objective-C โปรเจ็กต์โกโก้

หากยังไม่มีเครื่องมือ CocoaPods โปรดติดตั้งใน macOS ภายในวันที่ โดยใช้คำสั่งต่อไปนี้จากเทอร์มินัล โปรดดูรายละเอียดที่ คู่มือเริ่มต้นใช้งาน CocoaPods

sudo gem install cocoapods

สร้าง Podfile สำหรับ Maps SDK สำหรับ iOS และใช้ Podfile ดังกล่าวเพื่อติดตั้ง API และไลบรารีที่เกี่ยวข้อง

  1. หากยังไม่มีโปรเจ็กต์ Xcode โปรดสร้างโปรเจ็กต์ในตอนนี้และบันทึกไว้ใน ในเครื่องของคุณ หากคุณเพิ่งเริ่มใช้การพัฒนาซอฟต์แวร์ iOS ให้ทำดังนี้
    1. สร้างโปรเจ็กต์ใหม่
    2. เลือก iOS > เทมเพลตแอป
    3. บนหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
      1. ป้อนชื่อโปรเจ็กต์
      2. บันทึกค่าในช่องตัวระบุแพ็กเกจ คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
      3. ตั้งค่าโปรเจ็กต์ Interface เป็น Storyboard
      4. ตั้งค่าภาษาเป็น Swift หรือ Objective-C
  2. สร้างไฟล์ชื่อ Podfile ในไดเรกทอรีโปรเจ็กต์ ช่วงเวลานี้ จะกำหนดทรัพยากร Dependency ของโปรเจ็กต์
  3. แก้ไข Podfile และเพิ่มทรัพยากร Dependency ต่างๆ ควบคู่ไปกับ เวอร์ชัน ต่อไปนี้เป็นตัวอย่างที่มีการพึ่งพิงที่คุณต้องการสำหรับ Maps SDK สำหรับ iOS
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '8.4.0'
    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 เป็นเวอร์ชันล่าสุด

การติดตั้งด้วยตนเอง

คู่มือนี้แสดงวิธีเพิ่ม XCFrameworks ที่มี Maps SDK สำหรับ iOS ลงในโปรเจ็กต์ด้วยตนเองและกำหนดการตั้งค่าบิลด์ใน Xcode XCFramework เป็นแพ็กเกจไบนารีที่คุณใช้ได้ในหลายแพลตฟอร์ม รวมถึงเครื่องที่ใช้ Apple silicon
  1. ดาวน์โหลดไบนารี SDK และไฟล์ทรัพยากรต่อไปนี้
  2. แตกไฟล์เพื่อเข้าถึง XCFrameworks และทรัพยากร
  3. หากยังไม่มีโปรเจ็กต์ Xcode โปรดสร้างโปรเจ็กต์ในตอนนี้และบันทึกไว้ใน ในเครื่องของคุณ หากคุณเพิ่งเริ่มใช้การพัฒนาซอฟต์แวร์ iOS ให้ทำดังนี้
    1. สร้างโปรเจ็กต์ใหม่
    2. เลือก iOS > เทมเพลตแอป
    3. บนหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
      1. ป้อนชื่อโปรเจ็กต์
      2. บันทึกค่าในช่องตัวระบุแพ็กเกจ คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
      3. ตั้งค่าโปรเจ็กต์ Interface เป็น Storyboard
      4. ตั้งค่าภาษาเป็น Swift หรือ Objective-C
  4. เปิดแท็บ General ลาก XCFrameworks ต่อไปนี้ลงในโปรเจ็กต์ของคุณ ในส่วนเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง ตรวจสอบว่า เพื่อเลือก Do Not Embed สำหรับ XCFramework แต่ละรายการ:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  5. คัดลอก GoogleMaps.bundle จาก GoogleMapsResources ที่คุณดาวน์โหลดลงในไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode อย่าลืมเลือก คัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทางเมื่อได้รับข้อความแจ้ง
  6. เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือก ของแอปพลิเคชันเป้าหมาย
  7. เปิดแท็บระยะของการสร้างสำหรับเป้าหมายของแอปพลิเคชัน ในลิงก์ไบนารีกับไลบรารี ให้เพิ่มข้อมูลต่อไปนี้ เฟรมเวิร์กและไลบรารี:
    • Accelerate.framework
    • Contacts.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework (เฉพาะในกรณีที่คุณใช้ OpenGL)
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  8. เลือกโปรเจ็กต์แทนเป้าหมายเฉพาะ แล้วเปิด แท็บการตั้งค่าบิลด์ ในส่วนการลิงก์ - ทั่วไป -> Flag อื่นๆ ของ Linker ให้เพิ่ม -ObjC ลงใน "แก้ไขข้อบกพร่อง" และ "รุ่น" หาก การตั้งค่าไม่ปรากฏ เปลี่ยนตัวกรองในแถบการตั้งค่าของบิลด์ จากพื้นฐานเป็นทั้งหมด

  9. หากต้องการติดตั้ง Places SDK สำหรับ iOS XCFramework โปรดดู เริ่มต้นใช้งาน ด้วย Places SDK สำหรับ iOS

ขั้นตอนที่ 3: ตรวจสอบไฟล์ Apple Privacy Manifest

Apple ต้องการรายละเอียดความเป็นส่วนตัวของแอปสำหรับแอปใน App Store ไปที่หน้ารายละเอียดความเป็นส่วนตัวของ Apple App Store เพื่อดูข้อมูลอัปเดตและข้อมูลเพิ่มเติม

ไฟล์ Manifest ด้านความเป็นส่วนตัวของ Apple จะรวมอยู่ในแพ็กเกจทรัพยากรของ SDK หากต้องการตรวจสอบว่าไฟล์ Manifest สำหรับความเป็นส่วนตัวรวมอยู่ในไฟล์แล้ว และต้องการตรวจสอบเนื้อหา ให้สร้างที่เก็บถาวรของแอปแล้วสร้างรายงานความเป็นส่วนตัวจากที่เก็บถาวร

ขั้นตอนที่ 4: เพิ่มคีย์ API ลงในโปรเจ็กต์

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

ในตัวอย่างต่อไปนี้ ให้แทนที่ YOUR_API_KEY ด้วยคีย์ API

Swift

เพิ่มคีย์ API ลงใน AppDelegate.swift ดังนี้

  1. เพิ่มคำสั่งการนำเข้าต่อไปนี้
    import GoogleMaps
  2. เพิ่มสิ่งต่อไปนี้ใน application(_:didFinishLaunchingWithOptions:) โดยใช้คีย์ API ดังนี้
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. หากคุณใช้ Places API ด้วย ให้เพิ่มคีย์อีกครั้งตามที่แสดงไว้ที่นี่
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

เพิ่มคีย์ API ลงใน AppDelegate.m ดังนี้

  1. เพิ่มคำสั่งการนำเข้าต่อไปนี้
    @import GoogleMaps;
  2. เพิ่มสิ่งต่อไปนี้ใน application:didFinishLaunchingWithOptions: โดยใช้คีย์ API ดังนี้
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. หากคุณใช้ Places API ด้วย ให้เพิ่มคีย์อีกครั้งตามที่แสดงไว้ที่นี่
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

ขั้นตอนที่ 5: เพิ่มแผนที่

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.

        let options = GMSMapViewOptions()
        options.camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        options.frame = self.view.bounds

        let mapView = GMSMapView(options: options)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}

Objective-C

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController()

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
  options.frame = self.view.bounds;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end

ขั้นตอนที่ 5 (ไม่บังคับ): ประกาศรูปแบบ URL ที่ API ใช้

เริ่มตั้งแต่ iOS 9 และ Xcode 7 แอปจะประกาศรูปแบบ URL ที่แอป ต้องการเปิดด้วยการระบุรูปแบบในไฟล์ Info.plist ของแอป Maps SDK สําหรับ iOS จะเปิดแอป Google Maps บนอุปกรณ์เคลื่อนที่เมื่อผู้ใช้คลิกโลโก้ Google บนแผนที่ แอปของคุณจึงประกาศรูปแบบ URL ที่เกี่ยวข้องได้

หากต้องการประกาศรูปแบบ URL ที่ Maps SDK สำหรับ iOS ใช้ ให้เพิ่มเมธอด บรรทัดต่อไปนี้ไปยัง Info.plist ของคุณ:

LSApplicationQueriesSchemes googlechromes comgooglemaps

ภาพหน้าจอต่อไปนี้แสดงการกำหนดค่าในอินเทอร์เฟซผู้ใช้ Xcode

การกำหนดค่า LSApplicationQuerySchemes ใน
Xcode

หากไม่มีการประกาศข้างต้น ข้อผิดพลาดต่อไปนี้อาจเกิดขึ้นเมื่อผู้ใช้แตะ โลโก้ Google บนแผนที่:

  • -canOpenURL: ดำเนินการกับ URL: "comgooglemaps://" ไม่สำเร็จ - ข้อผิดพลาด: "แอปนี้ไม่ได้รับอนุญาตให้ค้นหารูปแบบ comgooglemaps"
  • -canOpenURL: ล้มเหลวสำหรับ URL: "googlechromes://" - ข้อผิดพลาด: "แอปนี้ไม่ใช่ ได้รับอนุญาตให้ค้นหา Scheme googlechromes"

เพิ่มการประกาศลงในInfo.plistเพื่อขจัดข้อผิดพลาดเหล่านี้

ขั้นตอนถัดไป

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