ตั้งค่าโปรเจ็กต์

ทำตามคำแนะนำนี้เพื่อผสานรวม Navigation SDK สำหรับ iOS เข้ากับแอป iOS

ข้อกำหนดเบื้องต้น

  • ก่อนที่จะเริ่มใช้ Navigation SDK สำหรับ iOS คุณต้องมีโปรเจ็กต์ที่มีบัญชีสำหรับการเรียกเก็บเงินและเปิดใช้ Maps SDK สำหรับ iOS เราขอแนะนำให้สร้างเจ้าของโปรเจ็กต์และผู้ดูแลระบบการเรียกเก็บเงินหลายคน เพื่อให้ทีมมีบทบาทเหล่านี้ตลอดเวลา ดูข้อมูลเพิ่มเติมได้ที่ตั้งค่าโปรเจ็กต์ Google Cloud
  • หากต้องการสร้างโปรเจ็กต์โดยใช้ Navigation SDK สำหรับ iOS คุณต้องใช้ Xcode เวอร์ชัน 15.0 ขึ้นไป
  • เวอร์ชันเป้าหมายขั้นต่ำของ iOS สำหรับการนำทาง SDK คือ 14.0

ติดตั้ง SDK

ผู้จัดการแพ็กเกจของ Swift

สามารถติดตั้ง Navigation SDK ผ่าน SWift Package Manager หากต้องการเพิ่ม SDK ให้ตรวจสอบว่าคุณได้นำทรัพยากร Dependency ของ Navigation SDK ที่มีอยู่ออกแล้ว

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

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

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

  1. จาก Xcode ให้ไปที่ "ไฟล์ > แพ็กเกจ > อัปเดตเป็นแพ็กเกจเวอร์ชันล่าสุด"
  2. หากต้องการยืนยันการติดตั้ง ให้ไปที่ส่วนทรัพยากร Dependency ของแพ็กเกจของตัวนำทางโปรเจ็กต์เพื่อยืนยันแพ็กเกจและเวอร์ชันของแพ็กเกจ

หากต้องการนำทรัพยากร Dependency ของ Navigation SDK ที่มีอยู่ออกโดยใช้ CocoaPods ให้ทําตามขั้นตอนต่อไปนี้

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

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

CocoaPods

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

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

sudo gem install cocoapods

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

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

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

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

ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้ง XCFrameworks สำหรับ Navigation SDK สำหรับ iOS และ Maps SDK สำหรับ iOS

  1. ดาวน์โหลดไฟล์ไบนารี SDK และไฟล์ทรัพยากรต่อไปนี้
  2. เปิดใช้ Xcode แล้วเปิดโปรเจ็กต์ที่มีอยู่ หรือสร้างโปรเจ็กต์ใหม่ หากเพิ่งเริ่มใช้ iOS ให้สร้างโปรเจ็กต์ใหม่และเลือกเทมเพลตแอป iOS
  3. ลบการอ้างอิง Maps, การนำทาง และ Places ที่มีอยู่ทั้งหมดออกจากโครงการ
  4. ลาก XCFrameworks ต่อไปนี้ลงในโปรเจ็กต์ในส่วนเฟรม ไลบรารี และเนื้อหาที่ฝังเพื่อติดตั้งทั้ง Maps และ SDK การนำทาง (เมื่อได้รับข้อความแจ้ง ให้เลือกคัดลอกรายการหากจำเป็น)
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. ลาก GoogleMaps.bundle จาก GoogleMapsResources ที่คุณดาวน์โหลดลงในไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อระบบแจ้ง ให้เลือกคัดลอกรายการหากจำเป็น
  6. ลาก GoogleNavigation.bundle จาก GoogleNavigationResources ที่คุณดาวน์โหลดไปยังไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อมีข้อความแจ้ง ให้ตรวจสอบว่าได้เลือกคัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทางแล้ว
  7. เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
  8. เปิดแท็บสร้างเฟส และภายในลิงก์ไบนารีกับไลบรารี ให้เพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • Contacts.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libxml2.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • Security.framework
    • SystemConfiguration.framework
    • UIKit.framework
    • UserNotifications.framework
    • WebKit.framework
  9. ในเป้าหมายของแอปพลิเคชัน ให้เลือกแท็บความสามารถ เปิดโหมดพื้นหลัง และเปิดใช้โหมดต่อไปนี้
    • เสียง, AirPlay และการแสดงภาพซ้อนภาพ
    • ข้อมูลอัปเดตเกี่ยวกับตำแหน่ง
  10. เลือกโปรเจ็กต์แทนเป้าหมายเฉพาะ แล้วเปิดแท็บการตั้งค่าบิลด์ ในส่วน Linker Flag อื่นๆ ให้เพิ่ม ‑ObjC สำหรับทั้งแก้ไขข้อบกพร่องและรุ่น หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมด
  11. เปิด Info.plist และเพิ่มคู่คีย์-ค่าต่อไปนี้
    • คีย์: NSLocationWhenInUseUsageDescription (ความเป็นส่วนตัว - คำอธิบายตำแหน่งเมื่อใช้งานอยู่)
      ค่า: "แอปนี้ต้องการสิทธิ์ในการใช้ตำแหน่งของคุณสำหรับการนำทางแบบเลี้ยวต่อเลี้ยว"
    • คีย์: NSLocationAlwaysAndWhenInUseUsageDescription (ความเป็นส่วนตัว - ตำแหน่งตลอดเวลาและเมื่อคำอธิบายการใช้งาน)
      ค่า: "แอปนี้ต้องการสิทธิ์ในการใช้ตำแหน่งของคุณสำหรับการนำทางแบบเลี้ยวต่อเลี้ยว"

เพิ่มไฟล์ Manifest ของความเป็นส่วนตัวของ Apple

  1. ดาวน์โหลดแพ็กเกจไฟล์ Manifest ของความเป็นส่วนตัวสำหรับ Navigation SDK สำหรับ iOS ที่ GoogleNavigationPrivacy
  2. แตกไฟล์เพื่อเข้าถึง GoogleNavigationPrivacy.bundle
  3. เพิ่ม GoogleNavigationPrivacy.bundle ลงในตัวนำทางโปรเจ็กต์ Xcode โดยใช้หนึ่งในวิธีการเหล่านี้ ตรวจสอบว่าได้เลือกช่อง "เพิ่มลงในเป้าหมาย" สำหรับเป้าหมายของแอปแล้ว เมื่อเพิ่มแล้ว ไฟล์ PrivacyInfo จะปรากฏในตัวนำทางโปรเจ็กต์ และคุณสามารถตรวจสอบค่าได้
  4. ภาพหน้าจอข้อมูลความเป็นส่วนตัวของ Xcode
  5. ยืนยันว่าได้เพิ่มไฟล์ Manifest ด้านความเป็นส่วนตัวแล้วโดยการสร้างที่เก็บถาวรของแอปและสร้างรายงานความเป็นส่วนตัวจากที่เก็บถาวร

เพิ่มคีย์ API ในโปรเจ็กต์

ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มคีย์ API ไปยังโปรเจ็กต์ใน Xcode

Swift

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

  1. เพิ่มคำสั่งการนำเข้าต่อไปนี้
    import GoogleMaps
    import GoogleNavigation
  2. เพิ่มข้อมูลต่อไปนี้ลงในเมธอด application(_:didFinishLaunchingWithOptions:) ของคุณ:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

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

  1. เพิ่มคำสั่งการนำเข้าต่อไปนี้
    @import GoogleMaps;
    @import GoogleNavigation;
  2. เพิ่มข้อมูลต่อไปนี้ลงในเมธอด application:didFinishLaunchingWithOptions: ของคุณ:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

เพิ่มแผนที่

โค้ดนี้แสดงวิธีเพิ่มแผนที่แบบง่ายๆ ลงใน ViewController ที่มีอยู่ ซึ่งรวมถึงการตั้งค่าเริ่มต้นบางอย่างสำหรับการนำทาง

ผู้ใช้ต้องยอมรับข้อกำหนดและเงื่อนไขก่อนจึงจะเปิดใช้การนำทางได้ หากต้องการแจ้งให้ผู้ใช้โทรติดต่อ GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() แล้วตรวจสอบว่ายอมรับข้อกำหนดแล้วหรือไม่ หากผู้ใช้ปฏิเสธข้อกำหนด mapView.isNavigationEnabled = true จะไม่มีผล และ mapView.navigator จะไม่มีผล

Swift

import UIKit
import GoogleNavigation

class ViewController: UIViewController {

  var mapView: GMSMapView!
  var locationManager: CLLocationManager!

  override func loadView() {
    locationManager = CLLocationManager()
    locationManager.requestAlwaysAuthorization()

    let camera = GMSCameraPosition.camera(withLatitude: 47.67, longitude: -122.20, zoom: 14)
    mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    // Show the terms and conditions.
    let companyName = "Ride Sharing Co."
    GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
      withCompanyName: companyName) { termsAccepted in
      if termsAccepted {
        // Enable navigation if the user accepts the terms.
        self.mapView.isNavigationEnabled = true
      } else {
        // Handle the case when the user rejects the terms and conditions.
      }
    }

    view = mapView
  }

  // TODO: Add navigation code.

}

Objective-C

#import "ViewController.h"
@import GoogleNavigation;

@interface ViewController ()
@end

@implementation ViewController
GMSMapView *_mapView;
CLLocationManager *_locationManager;

-   (void)loadView {

  _locationManager = [[CLLocationManager alloc] init];
  [_locationManager requestAlwaysAuthorization];

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.67
                                                          longitude:-122.20
                                                               zoom:14];
  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  // Show the terms and conditions.
  NSString *companyName = @"Ride Sharing Co.";
  [GMSNavigationServices
    showTermsAndConditionsDialogIfNeededWithCompanyName:companyName
    callback:^(BOOL termsAccepted) {
     if (termsAccepted) {
       // Enable navigation if the user accepts the terms.
       _mapView.navigationEnabled = YES;
     } else {
       // Handle the case when the user rejects the terms and conditions.
     }
   }];

  self.view = _mapView;
}

// TODO: Add navigation code.

@end

เรียกใช้แอปพลิเคชันของคุณ คุณจะเห็นแผนที่มีศูนย์กลางอยู่ที่เคิร์กแลนด์ รัฐวอชิงตัน หากแผนที่ไม่ปรากฏ ให้ตรวจสอบว่าคุณได้ระบุคีย์ API ที่ถูกต้อง

หากคุณเป็นลูกค้าบริการอุปกรณ์เคลื่อนที่

หากคุณเป็นลูกค้าของ Mobility Services โปรดดูข้อมูลเกี่ยวกับการเรียกเก็บเงินในเอกสารของ Mobility ดูข้อมูลเพิ่มเติมเกี่ยวกับการบันทึกธุรกรรมได้ที่ตั้งค่าการเรียกเก็บเงิน ดูวิธีเพิ่มรหัสธุรกรรมลงในการใช้งาน Navigation SDK ได้ที่เชื่อมโยงการใช้บริการกับธุรกรรม Mobility