اتبع هذا الدليل لدمج حزمة 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) إلى مشروع جديد أو حالي، اتّبِع الخطوات التالية:
-
افتح تطبيق Xcode
project
أوworkspace
، ثم انتقِل إلى ملف > إضافة تبعيات الحزمة. - أدخِل https://github.com/googlemaps/ios-navigation-sdk كعنوان URL، واضغط على Enter لسحب الحزمة، ثم انقر على "إضافة حزمة".
-
لتثبيت علامة
version
محدّدة، اضبط حقل قاعدة التبعية على أحد الخيارات المستندة إلى الإصدار. بالنسبة إلى المشاريع الجديدة، ننصح بتحديد أحدث إصدار واستخدام خيار "النسخة المحددة". بعد اكتمال عملية النقل، انقر على "إضافة حزمة". -
من نافذة اختيار منتجات الحزمة، تأكَّد من إضافة
GoogleNavigation
إلى هدفmain
المحدَّد. بعد اكتمال عملية النقل، انقر على "إضافة حزمة". -
للتحقّق من عملية التثبيت، انتقِل إلى جزء
General
في استهدافك. من المفترَض أن تظهر الحِزَم المثبَّتة في أُطر العمل والمكتبات والمحتوى المضمَّن. يمكنك أيضًا الاطّلاع على قسم "تبعيات الحِزم" ضمن Project Navigator (أداة التنقّل في المشروع) للتحقّق من الحزمة وإصدارها.
لتعديل package
لمشروع حالي، اتّبِع الخطوات التالية:
في حال الترقية من إصدار أقدم من 9.0.0، عليك إزالة الاعتماديات التالية:
GoogleMapsBase
وGoogleMapsCore
وGoogleMapsM4B
بعد الترقية. يجب عدم إزالة تبعيةGoogleMaps
. لمعرفة مزيد من المعلومات، يمكنك الاطّلاع على ملاحظات الإصدار 9.0.0.من إعدادات ضبط مشروع Xcode، ابحث عن الإطارات والمكتبات والمحتوى المضمَّن. استخدِم علامة الطرح(-) لإزالة إطار العمل التالي:
GoogleMapsBase
(للترقيات من الإصدارات السابقة على 9.0.0 فقط)GoogleMapsCore
(للترقيات من الإصدارات السابقة على 9.0.0 فقط)GoogleMapsM4B
(للترقيات من الإصدارات السابقة على 9.0.0 فقط)
- من Xcode، انتقِل إلى "ملف" > "الحِزم" > "تحديث إلى أحدث إصدارات الحزمة".
- للتحقّق من عملية التثبيت، انتقِل إلى القسم تبعيات الحزمة في Project Navigator (أداة التنقّل في المشروع) للتحقّق من الحزمة وإصدارها.
لإزالة الاعتماديات الحالية لحزمة تطوير البرامج (SDK) للتنقل باستخدام CocoaPods
، اتّبِع الخطوات التالية:
- أغلِق مساحة عمل Xcode. افتح المحطة الطرفية ونفِّذ الأمر التالي:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
أزِل
Podfile
وPodfile.resolved
ورمز Xcodeworkspace
إذا كنت لا تستخدمهما لأي غرض آخر غير CocoaPods.
-
من إعدادات ضبط مشروع Xcode، ابحث عن الإطارات والمكتبات والمحتوى المضمَّن. استخدِم علامة الطرح(-) لإزالة إطار العمل التالي:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
-
من دليل المستوى الأعلى لمشروع Xcode، أزِل الحزمة
GoogleMaps
.
CocoaPods
تتوفّر حزمة تطوير البرامج (SDK) للتنقّل لنظام التشغيل iOS على هيئة مجموعة CocoaPods. CocoaPods هو مدير تبعية مفتوح المصدر لمشاريع Swift وObjective-C Cocoa.
إذا لم تكن لديك أداة CocoaPods، يمكنك تثبيتها على نظام التشغيل macOS من خلال تنفيذ الأمر التالي من الوحدة الطرفية. لمعرفة التفاصيل، يمكنك الاطّلاع على دليل بدء استخدام CocoaPods.
sudo gem install cocoapods
أنشِئ Podfile
لحزمة تطوير البرامج (SDK) للتنقل لنظام التشغيل iOS واستخدِمها لتثبيت واجهة برمجة التطبيقات وتبعياتها:
- إذا لم يكن لديك مشروع Xcode بعد، أنشئ مشروعًا الآن واحفظه على جهازك المحلي. إذا كنت مبتدئًا في مجال تطوير تطبيقات iOS:
- أنشِئ مشروعًا جديدًا.
- اختر نموذج iOS > التطبيق.
- على شاشة خيارات المشروع:
- أدخِل اسم المشروع.
- سجّل قيمة حقل معرّف الحزمة. يمكنك استخدام هذه القيمة لتقييد مفتاح واجهة برمجة التطبيقات أدناه.
- اضبط واجهة المشروع على مخطط القصة.
- اضبط اللغة على Swift أو Objective-C.
- أنشئ ملفًا باسم "
Podfile
" في دليل مشروعك. يحدد هذا الملف تبعيات مشروعك. - عدِّل
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
بانتظام لاكتشاف الإصدارات الأحدث. إذا لزم الأمر، يمكنك الترقية إلى أحدث إصدار. - احفظ
Podfile
. افتح نافذة طرفية وانتقِل إلى الدليل الذي يحتوي على
Podfile
:cd <path-to-project>
شغِّل الأمر
pod install
. يؤدي ذلك إلى تثبيت واجهات برمجة التطبيقات المحدّدة فيPodfile
، إلى جانب أي ملحقات.pod install
أغلِق Xcode، ثم افتح ملف
.xcworkspace
الخاص بمشروعك (بالنقر مرّتين) لتشغيل Xcode. ومن الآن فصاعدًا، عليك استخدام ملف.xcworkspace
لفتح المشروع.
لتحديث واجهة برمجة التطبيقات لمشروع حالي، اتّبِع الخطوات التالية:
- افتح نافذة طرفية وانتقِل إلى دليل المشروع الذي يحتوي على
Podfile
. - شغِّل الأمر
pod update
. يؤدي ذلك إلى تحديث جميع واجهات برمجة التطبيقات المحدّدة فيPodfile
إلى أحدث إصدار.
التثبيت اليدوي
يوضّح هذا الدليل كيفية إضافة XCFrameworks يدويًا إلى مشروعك باستخدام حزمة SDK الخاصة بالتنقّل لنظام التشغيل iOS وحزمة SDK الخاصة بـ "خرائط Google" لنظام التشغيل iOS إلى مشروعك، مع ضبط إعدادات الإصدار في Xcode. XCFramework هو حزمة ثنائية يمكنك استخدامها على عدة أنظمة أساسية، بما في ذلك الأجهزة التي تستخدم شريحة M1.
اتّبِع الخطوات التالية لتثبيت XCFrameworks لحزمة تطوير البرامج (SDK) للتنقل" لنظام التشغيل iOS" و"حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل iOS:
- يمكنك تنزيل البرامج الثنائية لحزمة تطوير البرامج (SDK) وملفات الموارد التالية:
- شغِّل Xcode وافتح مشروعًا حاليًا أو أنشئ مشروعًا جديدًا. إذا كنت مستخدمًا جديدًا لنظام التشغيل iOS، أنشِئ مشروعًا جديدًا واختَر نموذج تطبيق iOS.
- إزالة جميع المراجع الحالية للخرائط والتنقل والأماكن من المشروع.
- اسحب عناصر XCFrameworks التالية إلى مشروعك ضمن
أعمال الإطارات والمكتبات والمحتوى المضمَّن لتثبيت كل من حزم تطوير البرامج (SDK)
و"خرائط Google" للتنقّل (عندما يُطلب منك ذلك، اختَر نسخ العناصر إذا لزم الأمر):
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- اسحب
GoogleMaps.bundle
من GoogleMapsResources الذي نزّلته إلى دليل المستوى الأعلى في مشروع Xcode. تأكَّد من اختيار نسخ الملفات عند الحاجة عندما يُطلب منك ذلك. - اسحب
GoogleNavigation.bundle
من GoogleNavigationResources الذي نزّلته إلى دليل المستوى الأعلى في مشروع Xcode. تأكَّد من اختيار نسخ العناصر إلى مجلد المجموعة الوجهة عندما يُطلب منك ذلك. - اختَر مشروعك من Project Navigator، ثم اختَر الهدف الذي يستهدفه تطبيقك.
- افتح علامة التبويب مراحل التصميم، وضمن
ربط النظام الثنائي بالمكتبات، أضِف أُطر العمل والمكتبات التالية:
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
- في هدف التطبيق، اختَر علامة التبويب الإمكانات وفعِّل أوضاع الخلفية وفعِّل الأوضاع التالية:
- ميزة "الصوت" و"AirPlay" و"نافذة ضمن النافذة"
- إشعارات بشأن الموقع الجغرافي
- اختَر مشروعك بدلاً من هدف محدّد وافتح علامة التبويب إعدادات التصميم. في القسم علامات رابط أخرى، أضِف
‑ObjC
لكل من debug وRelease. إذا لم تكن هذه الإعدادات مرئية، غيِّر الفلتر في شريط إعدادات التصميم من أساسي إلى الكل. - افتح
Info.plist
وأضِف أزواج المفتاح/القيمة التالية:- المفتاح:
NSLocationWhenInUseUsageDescription
(الخصوصية - وصف الموقع الجغرافي عند الاستخدام)
القيمة: "يحتاج هذا التطبيق إلى إذن لاستخدام موقعك الجغرافي من أجل الحصول على اتّجاهات مفصّلة". - المفتاح:
NSLocationAlwaysAndWhenInUseUsageDescription
(الخصوصية - وصف الموقع الجغرافي دائمًا وعند الاستخدام)
القيمة: "يحتاج هذا التطبيق إلى إذن لاستخدام موقعك الجغرافي من أجل الحصول على اتّجاهات مفصّلة".
- المفتاح:
الخطوة 2: فحص ملف بيان الخصوصية في Apple
تشترط Apple تفاصيل خصوصية التطبيقات للتطبيقات المتوفّرة على App Store. يُرجى الانتقال إلى صفحة تفاصيل خصوصية Apple App Store لمعرفة آخر الأخبار ومزيد من المعلومات.
يتم تضمين ملف بيان الخصوصية من Apple في حزمة الموارد لحزمة تطوير البرامج (SDK). للتأكّد من تضمين "ملف بيان الخصوصية" وفحص محتواه، عليك إنشاء أرشيف لتطبيقك وإنشاء تقرير خصوصية من الأرشيف.
الخطوة 3: إضافة مفتاح واجهة برمجة التطبيقات إلى مشروعك
توضح الأمثلة التالية كيفية إضافة مفتاح واجهة برمجة التطبيقات إلى مشروعك في Xcode:
Swift
أضِف مفتاح واجهة برمجة التطبيقات إلى AppDelegate.swift
على النحو التالي:
- أضِف عبارات الاستيراد التالية:
import GoogleMaps import GoogleNavigation
- أضِف ما يلي إلى طريقة
application(_:didFinishLaunchingWithOptions:)
:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
أضِف مفتاح واجهة برمجة التطبيقات إلى AppDelegate.m
على النحو التالي:
- أضِف عبارات الاستيراد التالية:
@import GoogleMaps; @import GoogleNavigation;
- أضِف ما يلي إلى طريقة
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) للتنقل، يُرجى الاطّلاع على مقالة ربط استخدام الخدمة بمعاملات التنقّل.