پروژه خود را تنظیم کنید

برای ادغام Navigation SDK برای iOS در یک برنامه iOS، این راهنما را دنبال کنید.

پیش نیازها

  • قبل از شروع استفاده از Navigation SDK برای iOS، به پروژه‌ای نیاز دارید که حساب صورت‌حساب داشته باشد و Maps SDK برای iOS فعال باشد. توصیه می‌کنیم چندین مالک پروژه و سرپرست صورت‌حساب ایجاد کنید تا همیشه فردی با این نقش‌ها در دسترس تیمتان باشد. برای کسب اطلاعات بیشتر، به تنظیم پروژه Google Cloud خود مراجعه کنید.
  • برای ساختن یک پروژه با استفاده از Navigation SDK برای iOS، به نسخه 15.0 یا جدیدتر Xcode نیاز دارید.
  • حداقل نسخه هدف iOS برای SDK ناوبری 14.0 است.

SDK را نصب کنید

مدیر بسته سوئیفت

Navigation SDK را می توان از طریق Swift Package Manager نصب کرد. برای افزودن SDK، مطمئن شوید که وابستگی‌های موجود در SDK ناوبری را حذف کرده‌اید.

برای افزودن SDK به یک پروژه جدید یا موجود، مراحل زیر را دنبال کنید:

  1. project یا workspace Xcode خود را باز کنید، سپس به File > Add Package Dependencies بروید.
  2. https://github.com/googlemaps/ios-navigation-sdk را به عنوان URL وارد کنید، Enter را فشار دهید تا بسته را وارد کنید و روی «افزودن بسته» کلیک کنید.
  3. برای نصب یک version خاص، قسمت Dependency Rule را روی یکی از گزینه های مبتنی بر نسخه تنظیم کنید. برای پروژه های جدید، توصیه می کنیم آخرین نسخه را مشخص کنید و از گزینه "نسخه دقیق" استفاده کنید. پس از تکمیل، روی "افزودن بسته" کلیک کنید.
  4. از پنجره انتخاب محصولات بسته ، تأیید کنید که GoogleNavigation به هدف main تعیین‌شده شما اضافه می‌شود. پس از تکمیل، روی "افزودن بسته" کلیک کنید.
  5. برای تأیید نصب خود، به صفحه General هدف خود بروید. در Frameworks، Libraries و Embedded Content باید بسته های نصب شده را ببینید. همچنین می‌توانید برای تأیید بسته و نسخه آن، بخش «وابستگی‌های بسته» در «ناوبر پروژه» را مشاهده کنید.

برای به روز رسانی package برای یک پروژه موجود، این مراحل را دنبال کنید:

  1. از Xcode، به "File > Packages > Update To Latest Package Versions" بروید.
  2. برای تأیید نصب خود، به بخش Package Dependencies در Project Navigator بروید تا بسته و نسخه آن را تأیید کنید.

برای حذف وابستگی‌های Navigation SDK موجود با استفاده از CocoaPods ، این مراحل را دنبال کنید:

  1. فضای کاری Xcode خود را ببندید. ترمینال را باز کنید و دستور زیر را اجرا کنید:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. اگر از آنها برای چیزی غیر از CocoaPods استفاده نمی کنید، Podfile ، Podfile.resolved و workspace Xcode را حذف کنید.

برای حذف Navigation SDK موجود برای iOS که به صورت دستی نصب شده است، این مراحل را دنبال کنید:
  1. از تنظیمات پیکربندی پروژه Xcode خود، Frameworks، Libraries و Embedded Content را پیدا کنید. برای حذف چارچوب زیر از علامت منفی (-) استفاده کنید:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. از دایرکتوری سطح بالای پروژه Xcode خود، بسته GoogleMaps حذف کنید.

CocoaPods

Navigation SDK برای iOS به عنوان یک CocoaPods در دسترس است. CocoaPods یک مدیر وابستگی منبع باز برای پروژه های 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. مقدار فیلد شناسه Bundle را ثبت کنید. می توانید از این مقدار برای محدود کردن کلید API خود در زیر استفاده کنید.
      3. Interface پروژه را روی Storyboard قرار دهید.
      4. زبان را روی Swift یا Objective-C قرار دهید.
  2. یک فایل به نام Podfile در دایرکتوری پروژه خود ایجاد کنید. این فایل وابستگی های پروژه شما را تعریف می کند.
  3. Podfile را ویرایش کنید و وابستگی های خود را به همراه نسخه های آنها اضافه کنید. در اینجا مثالی آورده شده است که شامل وابستگی مورد نیاز برای 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 را به همراه هر وابستگی نصب می کند.

    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. تمام مراجع نقشه ها، ناوبری و مکان های موجود را از پروژه حذف کنید.
  4. XCFrameworks زیر را به داخل پروژه خود در بخش Frameworks, Libraries, and Embedded Content بکشید تا Maps و Navigation SDK را نصب کنید (در صورت درخواست، کپی موارد را در صورت نیاز انتخاب کنید):
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. GoogleMaps.bundle را از GoogleMapsResources که دانلود کرده‌اید به دایرکتوری سطح بالای پروژه Xcode خود بکشید. هنگامی که از شما خواسته شد، اطمینان حاصل کنید که موارد کپی در صورت نیاز انتخاب شده است.
  6. GoogleNavigation.bundle را از GoogleNavigationResources که دانلود کرده‌اید به فهرست سطح بالای پروژه Xcode خود بکشید. هنگامی که از شما خواسته شد، مطمئن شوید که موارد کپی در پوشه گروه مقصد انتخاب شده است.
  7. پروژه خود را از Project Navigator انتخاب کنید و هدف برنامه خود را انتخاب کنید.
  8. تب Build Phases را باز کنید و در لینک باینری با کتابخانه ها ، چارچوب ها و کتابخانه های زیر را اضافه کنید:
    • 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. در هدف برنامه خود، برگه قابلیت ها را انتخاب کنید، حالت های پس زمینه را روشن کنید و حالت های زیر را فعال کنید:
    • صدا، پخش و تصویر در تصویر
    • به روز رسانی مکان
  10. پروژه خود را به جای یک هدف خاص انتخاب کنید و تب Build Settings را باز کنید. در بخش Other Linker Flags ، ‑ObjC هم برای رفع اشکال و هم برای انتشار اضافه کنید. اگر این تنظیمات قابل مشاهده نیستند، فیلتر موجود در نوار تنظیمات ساخت را از Basic به All تغییر دهید.
  11. Info.plist را باز کنید و جفت های کلید-مقدار زیر را اضافه کنید:
    • کلید: NSLocationWhenInUseUsageDescription ( حریم خصوصی - موقعیت مکانی هنگام استفاده توضیحات استفاده )
      مقدار: "این برنامه برای استفاده از موقعیت مکانی شما برای پیمایش گام به گام به مجوز نیاز دارد."
    • کلید: NSLocationAlwaysAndWhenInUseUsageDescription ( حریم خصوصی - موقعیت مکانی همیشه و زمانی که در استفاده است توضیحات استفاده )
      مقدار: "این برنامه برای استفاده از موقعیت مکانی شما برای پیمایش گام به گام به مجوز نیاز دارد."

فایل Manifest Privacy Apple را اضافه کنید

  1. بسته Manifest را برای Navigation SDK برای iOS دانلود کنید: GoogleNavigationPrivacy .
  2. برای دسترسی به GoogleNavigationPrivacy.bundle فایل را استخراج کنید.
  3. GoogleNavigationPrivacy.bundle را با استفاده از یکی از این روش ها به ناوبری پروژه Xcode اضافه کنید. مطمئن شوید که کادر «افزودن به اهداف» برای هدف برنامه شما علامت زده شده است. پس از اضافه شدن، فایل PrivacyInfo در Project Navigator نمایش داده می شود و می توانید مقادیر را بررسی کنید.
  4. عکس صفحه اطلاعات حریم خصوصی Xcode
  5. با ایجاد یک بایگانی از برنامه خود و ایجاد یک گزارش حریم خصوصی از بایگانی، تأیید کنید که مانیفست حریم خصوصی اضافه شده است.

یک کلید API به پروژه خود اضافه کنید

مثال های زیر نشان می دهد که چگونه کلید API را در Xcode به پروژه خود اضافه کنید:

سریع

کلید API خود را به صورت زیر به AppDelegate.swift خود اضافه کنید:

  1. دستورهای import زیر را اضافه کنید:
    import GoogleMaps
    import GoogleNavigation
  2. موارد زیر را به application(_:didFinishLaunchingWithOptions:) خود اضافه کنید:
    GMSServices.provideAPIKey("YOUR_API_KEY")

هدف-C

کلید API خود را به صورت زیر به AppDelegate.m خود اضافه کنید:

  1. دستورهای import زیر را اضافه کنید:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. موارد زیر را به application:didFinishLaunchingWithOptions: روش:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

یک نقشه اضافه کنید

این کد نحوه افزودن یک نقشه ساده به ViewController موجود را نشان می دهد، از جمله برخی تنظیمات اولیه برای پیمایش.

قبل از اینکه ناوبری فعال شود، کاربر باید با شرایط و ضوابط موافقت کند. برای درخواست از کاربر، با GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() تماس بگیرید، سپس بررسی کنید که آیا شرایط پذیرفته شده است یا خیر. اگر کاربر شرایط را رد کند، mapView.isNavigationEnabled = true تاثیری ندارد و mapView.navigator صفر است.

سریع

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.

}

هدف-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 Services هستید، در مورد صورتحساب در اسناد Mobility اطلاعات کسب کنید. برای اطلاعات بیشتر درباره ثبت تراکنش‌ها، به تنظیم صورت‌حساب مراجعه کنید. برای آشنایی با نحوه افزودن شناسه‌های تراکنش به پیاده‌سازی Navigation SDK، به مرتبط کردن استفاده از سرویس خود با تراکنش‌های Mobility مراجعه کنید.