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

CocoaPods

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

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

sudo gem install cocoapods

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

  1. หากยังไม่มีโปรเจ็กต์ Xcode โปรดสร้างโปรเจ็กต์ในตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณเพิ่งเริ่มใช้การพัฒนา iOS ให้ทำดังนี้
    1. สร้างโปรเจ็กต์ใหม่
    2. เลือกเทมเพลต iOS > แอป
    3. ในหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
      1. ป้อนชื่อโปรเจ็กต์
      2. บันทึกค่าในช่องตัวระบุแพ็กเกจ คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
      3. ตั้งค่าโปรเจ็กต์ Interface เป็น Storyboard
      4. ตั้งค่าภาษาเป็น Swift หรือ Objective-C
  2. สร้างไฟล์ชื่อ Podfile ในไดเรกทอรีโปรเจ็กต์ ไฟล์นี้ระบุทรัพยากร Dependency ของโปรเจ็กต์
  3. แก้ไข Podfile และเพิ่มทรัพยากร Dependency พร้อมกับversions ต่อไปนี้เป็นตัวอย่างที่ต้องใช้ทรัพยากร 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 ต่างๆ ที่ API อาจมี

    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 ต่อไปนี้ลงในโปรเจ็กต์ของคุณในส่วน Frameworks, Libraries และเนื้อหาแบบฝัง ตรวจสอบว่าได้เลือก 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. เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์ ในส่วนการลิงก์ - ทั่วไป -> แฟล็กอื่นๆ ของ Linker ให้เพิ่ม -ObjC ลงใน "แก้ไขข้อบกพร่อง" และ "เผยแพร่" หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมด

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

ขั้นตอนที่ 3: ตรวจสอบไฟล์ Manifest ด้านความเป็นส่วนตัวของ Apple

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

/*
 *   Copyright 2020 Google Inc. All rights reserved.
 *
 *
 *   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 *   file except in compliance with the License. You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software distributed under
 *   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 *   ANY KIND, either express or implied. See the License for the specific language governing
 *   permissions and limitations under the License.
 */

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

/*
*   Copyright 2020 Google Inc. All rights reserved.
*
*
*   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
*   file except in compliance with the License. You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software distributed under
*   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
*   ANY KIND, either express or implied. See the License for the specific language governing
*   permissions and limitations under the License.
*/

#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://" - ข้อผิดพลาด: "แอปนี้ไม่ได้รับอนุญาตให้ค้นหาชุดรูปแบบ googlechromes"

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

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

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