إعداد مشروعك

اتبع هذا الدليل لدمج حزمة SDK للتنقل لنظام التشغيل iOS في تطبيق iOS.

المتطلّبات الأساسية

  • قبل البدء في استخدام حزمة تطوير البرامج (SDK) للتنقّل لنظام التشغيل iOS، ستحتاج إلى مشروع يتضمّن حساب فوترة وحزمة تطوير برامج (SDK) "خرائط Google" لنظام التشغيل iOS. نوصي بإنشاء العديد من مالكي المشروع ومشرفي الفوترة، حتى يكون لديك دائمًا شخص يمتلك هذه الأدوار المتاحة لفريقك. لمزيد من المعلومات، اطّلِع على مقالة إعداد مشروعك على Google Cloud.
  • لإنشاء مشروع باستخدام حزمة SDK الخاصة بالتنقل لنظام التشغيل iOS، تحتاج إلى الإصدار 15.0 أو إصدار أحدث من Xcode.
  • الحد الأدنى لإصدار iOS المستهدف لحزمة SDK للتنقل هو 15.0.

الخطوة 1: تثبيت حزمة SDK

مدير حزم Swift

يمكن تثبيت حزمة تطوير البرامج (SDK) للتنقّل عبر Swift Package Manager. لإضافة حزمة تطوير البرامج (SDK)، تأكَّد من إزالة أي تبعيات حالية لحزمة تطوير البرامج (SDK) للتنقل.

لإضافة حزمة تطوير البرامج (SDK) إلى مشروع جديد أو حالي، اتّبِع الخطوات التالية:

  1. افتح تطبيق Xcode project أو workspace، ثم انتقِل إلى ملف > إضافة تبعيات الحزمة.
  2. أدخِل https://github.com/googlemaps/ios-navigation-sdk كعنوان URL، واضغط على Enter لسحب الحزمة، ثم انقر على "إضافة حزمة".
  3. لتثبيت علامة version محدّدة، اضبط حقل قاعدة التبعية على أحد الخيارات المستندة إلى الإصدار. بالنسبة إلى المشاريع الجديدة، ننصح بتحديد أحدث إصدار واستخدام خيار "النسخة المحددة". بعد اكتمال عملية النقل، انقر على "إضافة حزمة".
  4. من نافذة اختيار منتجات الحزمة، تأكَّد من إضافة GoogleNavigation إلى هدف main المحدَّد. بعد اكتمال عملية النقل، انقر على "إضافة حزمة".
  5. للتحقّق من عملية التثبيت، انتقِل إلى جزء General في استهدافك. من المفترَض أن تظهر الحِزَم المثبَّتة في أُطر العمل والمكتبات والمحتوى المضمَّن. يمكنك أيضًا الاطّلاع على قسم "تبعيات الحِزم" ضمن Project Navigator (أداة التنقّل في المشروع) للتحقّق من الحزمة وإصدارها.

لتعديل package لمشروع حالي، اتّبِع الخطوات التالية:

  1. في حال الترقية من إصدار أقدم من 9.0.0، عليك إزالة الاعتماديات التالية: GoogleMapsBase وGoogleMapsCore وGoogleMapsM4B بعد الترقية. يجب عدم إزالة تبعية GoogleMaps. لمعرفة مزيد من المعلومات، يمكنك الاطّلاع على ملاحظات الإصدار 9.0.0.

    من إعدادات ضبط مشروع Xcode، ابحث عن الإطارات والمكتبات والمحتوى المضمَّن. استخدِم علامة الطرح(-) لإزالة إطار العمل التالي:

    • GoogleMapsBase (للترقيات من الإصدارات السابقة على 9.0.0 فقط)
    • GoogleMapsCore (للترقيات من الإصدارات السابقة على 9.0.0 فقط)
    • GoogleMapsM4B (للترقيات من الإصدارات السابقة على 9.0.0 فقط)
  2. من Xcode، انتقِل إلى "ملف" > "الحِزم" > "تحديث إلى أحدث إصدارات الحزمة".
  3. للتحقّق من عملية التثبيت، انتقِل إلى القسم تبعيات الحزمة في Project Navigator (أداة التنقّل في المشروع) للتحقّق من الحزمة وإصدارها.

لإزالة الاعتماديات الحالية لحزمة تطوير البرامج (SDK) للتنقل باستخدام CocoaPods، اتّبِع الخطوات التالية:

  1. أغلِق مساحة عمل Xcode. افتح المحطة الطرفية ونفِّذ الأمر التالي:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. أزِل Podfile وPodfile.resolved ورمز Xcode workspace إذا كنت لا تستخدمهما لأي غرض آخر غير CocoaPods.

لإزالة حزمة SDK الحالية للتنقّل يدويًا في نظام التشغيل iOS والتي تم تثبيتها يدويًا، اتّبِع الخطوات التالية:
  1. من إعدادات ضبط مشروع Xcode، ابحث عن الإطارات والمكتبات والمحتوى المضمَّن. استخدِم علامة الطرح(-) لإزالة إطار العمل التالي:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. من دليل المستوى الأعلى لمشروع Xcode، أزِل الحزمة GoogleMaps.

CocoaPods

تتوفّر حزمة تطوير البرامج (SDK) للتنقّل لنظام التشغيل iOS على هيئة مجموعة CocoaPods. CocoaPods هو مدير تبعية مفتوح المصدر لمشاريع Swift وObjective-C Cocoa.

إذا لم تكن لديك أداة CocoaPods، يمكنك تثبيتها على نظام التشغيل macOS من خلال تنفيذ الأمر التالي من الوحدة الطرفية. لمعرفة التفاصيل، يمكنك الاطّلاع على دليل بدء استخدام CocoaPods.

sudo gem install cocoapods

أنشِئ Podfile لحزمة تطوير البرامج (SDK) للتنقل لنظام التشغيل iOS واستخدِمها لتثبيت واجهة برمجة التطبيقات وتبعياتها:

  1. إذا لم يكن لديك مشروع Xcode بعد، أنشئ مشروعًا الآن واحفظه على جهازك المحلي. إذا كنت مبتدئًا في مجال تطوير تطبيقات iOS:
    1. أنشِئ مشروعًا جديدًا.
    2. اختر نموذج iOS > التطبيق.
    3. على شاشة خيارات المشروع:
      1. أدخِل اسم المشروع.
      2. سجّل قيمة حقل معرّف الحزمة. يمكنك استخدام هذه القيمة لتقييد مفتاح واجهة برمجة التطبيقات أدناه.
      3. اضبط واجهة المشروع على مخطط القصة.
      4. اضبط اللغة على Swift أو Objective-C.
  2. أنشئ ملفًا باسم "Podfile" في دليل مشروعك. يحدد هذا الملف تبعيات مشروعك.
  3. عدِّل Podfile وأضِف الموارد التابعة لك إلى جانب versions. في ما يلي مثال يتضمّن التبعية التي تحتاج إليها لحزمة تطوير البرامج (SDK) للتنقل لنظام التشغيل iOS: مرجع تثبيت # Cocoapods رقم
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '9.0.0'
    end
            
    تأكَّد من تشغيل pod outdated بانتظام لاكتشاف الإصدارات الأحدث. إذا لزم الأمر، يمكنك الترقية إلى أحدث إصدار.
  4. احفظ Podfile.
  5. افتح نافذة طرفية وانتقِل إلى الدليل الذي يحتوي على Podfile:

    cd <path-to-project>
  6. شغِّل الأمر pod install. يؤدي ذلك إلى تثبيت واجهات برمجة التطبيقات المحدّدة في Podfile، إلى جانب أي ملحقات.

    pod install
  7. أغلِق Xcode، ثم افتح ملف .xcworkspace الخاص بمشروعك (بالنقر مرّتين) لتشغيل Xcode. ومن الآن فصاعدًا، عليك استخدام ملف .xcworkspace لفتح المشروع.

لتحديث واجهة برمجة التطبيقات لمشروع حالي، اتّبِع الخطوات التالية:

  1. افتح نافذة طرفية وانتقِل إلى دليل المشروع الذي يحتوي على Podfile.
  2. شغِّل الأمر pod update. يؤدي ذلك إلى تحديث جميع واجهات برمجة التطبيقات المحدّدة في Podfile إلى أحدث إصدار.

التثبيت اليدوي

يوضّح هذا الدليل كيفية إضافة XCFrameworks يدويًا إلى مشروعك باستخدام حزمة SDK الخاصة بالتنقّل لنظام التشغيل iOS وحزمة SDK الخاصة بـ "خرائط Google" لنظام التشغيل iOS إلى مشروعك، مع ضبط إعدادات الإصدار في Xcode. XCFramework هو حزمة ثنائية يمكنك استخدامها على عدة أنظمة أساسية، بما في ذلك الأجهزة التي تستخدم شريحة M1.

اتّبِع الخطوات التالية لتثبيت XCFrameworks لحزمة تطوير البرامج (SDK) للتنقل" لنظام التشغيل iOS" و"حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل iOS:

  1. يمكنك تنزيل البرامج الثنائية لحزمة تطوير البرامج (SDK) وملفات الموارد التالية:
  2. شغِّل Xcode وافتح مشروعًا حاليًا أو أنشئ مشروعًا جديدًا. إذا كنت مستخدمًا جديدًا لنظام التشغيل iOS، أنشِئ مشروعًا جديدًا واختَر نموذج تطبيق iOS.
  3. إزالة جميع المراجع الحالية للخرائط والتنقل والأماكن من المشروع.
  4. اسحب عناصر XCFrameworks التالية إلى مشروعك ضمن أعمال الإطارات والمكتبات والمحتوى المضمَّن لتثبيت كل من حزم تطوير البرامج (SDK) و"خرائط Google" للتنقّل (عندما يُطلب منك ذلك، اختَر نسخ العناصر إذا لزم الأمر):
    • 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. اختَر مشروعك بدلاً من هدف محدّد وافتح علامة التبويب إعدادات التصميم. في القسم علامات رابط أخرى، أضِف ‑ObjC لكل من debug وRelease. إذا لم تكن هذه الإعدادات مرئية، غيِّر الفلتر في شريط إعدادات التصميم من أساسي إلى الكل.
  11. افتح Info.plist وأضِف أزواج المفتاح/القيمة التالية:
    • المفتاح: NSLocationWhenInUseUsageDescription (الخصوصية - وصف الموقع الجغرافي عند الاستخدام)
      القيمة: "يحتاج هذا التطبيق إلى إذن لاستخدام موقعك الجغرافي من أجل الحصول على اتّجاهات مفصّلة".
    • المفتاح: NSLocationAlwaysAndWhenInUseUsageDescription (الخصوصية - وصف الموقع الجغرافي دائمًا وعند الاستخدام)
      القيمة: "يحتاج هذا التطبيق إلى إذن لاستخدام موقعك الجغرافي من أجل الحصول على اتّجاهات مفصّلة".

الخطوة 2: فحص ملف بيان الخصوصية في Apple

تشترط Apple تفاصيل خصوصية التطبيقات للتطبيقات المتوفّرة على App Store. يُرجى الانتقال إلى صفحة تفاصيل خصوصية Apple App Store لمعرفة آخر الأخبار ومزيد من المعلومات.

يتم تضمين ملف بيان الخصوصية من Apple في حزمة الموارد لحزمة تطوير البرامج (SDK). للتأكّد من تضمين "ملف بيان الخصوصية" وفحص محتواه، عليك إنشاء أرشيف لتطبيقك وإنشاء تقرير خصوصية من الأرشيف.

الخطوة 3: إضافة مفتاح واجهة برمجة التطبيقات إلى مشروعك

توضح الأمثلة التالية كيفية إضافة مفتاح واجهة برمجة التطبيقات إلى مشروعك في Xcode:

Swift

أضِف مفتاح واجهة برمجة التطبيقات إلى AppDelegate.swift على النحو التالي:

  1. أضِف عبارات الاستيراد التالية:
    import GoogleMaps
    import GoogleNavigation
  2. أضِف ما يلي إلى طريقة application(_:didFinishLaunchingWithOptions:):
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

أضِف مفتاح واجهة برمجة التطبيقات إلى AppDelegate.m على النحو التالي:

  1. أضِف عبارات الاستيراد التالية:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. أضِف ما يلي إلى طريقة application:didFinishLaunchingWithOptions::
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

الخطوة 4: إضافة خريطة

يوضح هذا الرمز كيفية إضافة خريطة بسيطة إلى 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

شغِّل التطبيق. يجب أن تظهر لك خريطة تتمركز فوق كيركلاند، واشنطن. إذا لم تكن الخريطة مرئية، فتأكد من تقديم مفتاح واجهة برمجة التطبيقات الصحيح.

إذا كنت أحد عملاء "خدمات الجوّال"

إذا كنت أحد عملاء "خدمات التنقل"، يُمكنك التعرف على معلومات حول الفوترة في وثائق التنقل. لمزيد من المعلومات حول تسجيل المعاملات، يُرجى الاطّلاع على إعداد الفوترة. للتعرّف على كيفية إضافة معرِّفات المعاملات إلى عملية تنفيذ حزمة تطوير البرامج (SDK) للتنقل، يُرجى الاطّلاع على مقالة ربط استخدام الخدمة بمعاملات التنقّل.