Car App — تطبيق لنظام المعلومات والترفيه في السيارة، متكامل مع Apple CarPlay و Android Auto. CarPlay هي تقنية Apple التي تعرض واجهة iPhone على شاشة السيارة ويتم التحكم بها عبر Siri أو شاشة اللمس أو أزرار عجلة القيادة. Android Auto هي تقنية Google المماثلة لهواتف Android الذكية. يشمل تطوير Car App إنشاء تطبيق بلغة Swift مع CarPlay framework و SiriKit لنظام iOS، وبالغة Kotlin مع Car App Library و MediaBrowserService و NavigationManager لنظام Android. أصبح دعم Car App معيارًا للسيارات الحديثة — وفقًا لـ Apple، 98% من السيارات الجديدة في الولايات المتحدة تدعم CarPlay، و Android Auto متاح في أكثر من 200 طراز.
النقاط الرئيسية
Car App — تطبيق يعمل على نظام المعلومات والترفيه في السيارة (IVI) عبر عرض الهاتف الذكي — Apple CarPlay لنظام iOS و Android Auto لنظام Android. على عكس Android Automotive OS (نظام تشغيل مدمج في السيارة)، CarPlay و Android Auto هما امتدادان لتطبيق الهاتف المحمول يعملان على الهاتف ويعرضان الواجهة على شاشة السيارة. Car App هو تطبيق iOS/Android الحالي الخاص بك الذي ينفذ بروتوكولات CarPlay أو Android Auto.
الفئات الرئيسية لـ Car App: الملاحة (Apple Maps، Google Maps، Waze، Sygic)، الصوت (Spotify، Apple Music، YouTube Music، Audible، Castbox)، المراسلة (القراءة بصوت عالٍ والإملاء عبر Siri/Google Assistant)، وظائف السيارة (شحن EV، ركن السيارة، حالة السيارة)، مكالمات VOIP (WhatsApp، Zoom). لكل فئة قالب واجهة خاص بها — ListTemplate، MapTemplate، AudioTemplate. يحدد النظام نفسه الفئة التي يدعمها التطبيق بناءً على Intents المسجلة.
قيود Car App: تتحكم Apple و Google بدقة في تجربة المستخدم (UX) لأسباب تتعلق بالسلامة — الحد الأدنى من العناصر، أزرار كبيرة (48x48 pt كحد أدنى)، عدم وجود إدخال نصي (صوت فقط)، تعتيم تلقائي للواجهة أثناء القيادة، حظر الفيديو. يجب أن يكون زمن الاستجابة للضغط أقل من 100 مللي ثانية. تخضع جميع التطبيقات للمراجعة الإلزامية (App Review لـ CarPlay، Google Play Console + CTS لـ Android Auto).
CarPlay framework (سابقًا CPKit) — إطار عمل Apple لإنشاء تطبيقات CarPlay بلغة Swift. الفئة الرئيسية هي CPInterfaceController، التي تدير التنقل بين القوالب. يحتوي CPInterfaceController على مكدس قوالب: CPListTemplate (قوائم)، CPMapTemplate (ملاحة)، CPNowPlayingTemplate (صوت)، CPVoiceControlTemplate (تحكم صوتي). يحتوي CPListTemplate على CPListItem — عناصر قائمة بأيقونة ونص وإجراء.
SiriKit لـ CarPlay — امتداد SiriKit للتحكم الصوتي بالتطبيق في السيارة. يسجل التطبيق Intents (INPlayMediaIntent — تشغيل، INStartWorkoutIntent — تمرين، INSendMessageIntent — رسائل). يتم تنشيط Siri تلقائيًا عند توصيل CarPlay ويكون متاحًا عبر زر التحكم الصوتي على عجلة القيادة. يدعم SiriKit CarPlay لوحة معلومات CarPlay — أدوات على الشاشة الرئيسية لـ CarPlay لعرض معلومات من التطبيق (الوجهة، المسار الحالي).
عملية اتصال CarPlay: يتصل iPhone بالسيارة عبر كابل Lightning/USB-C أو لاسلكيًا (CarPlay Wireless، بدءًا من iOS 9). بعد الاتصال، يبدأ iOS تلقائيًا جلسة CarPlay إذا كان التطبيق ينفذ CPApplicationDelegate. لا يتحكم المطور في لحظة الاتصال — يستدعي النظام طرق delegate عند بدء الجلسة وانتهائها. يدعم CarPlay تعدد المهام: تعمل الملاحة في الخلفية عند التبديل إلى الموسيقى، وتستمر التوجيهات الصوتية في الصوت.
Android Car App Library — مكتبة Android لإنشاء تطبيقات متوافقة مع Android Auto. المكونات الأساسية: CarAppService — نقطة الدخول لـ Android Auto؛ Session — إدارة دورة حياة الجلسة؛ Screen — كل شاشة من التطبيق؛ CarScreenManager — إدارة العرض. يدعم التطبيق MediaBrowserService للمحتوى الوسائطي و NavigationManager لتوجيهات الملاحة.
MediaBrowserService — مكون أساسي لتطبيقات الصوت. ينفذ التطبيق MediaBrowserService و MediaSession لإدارة التشغيل. يعرض Android Auto تلقائيًا عناصر التحكم (تشغيل/إيقاف، التالي، السابق) وقائمة المسارات. يُستخدم NavigationManager لتطبيقات الملاحة — ينقل تعليمات المنعطفات وحالة المسار والتنبيهات. يدعم NavigationManager CarNotification لعرض توجيهات الملاحة في شريط حالة Android Auto.
متطلبات Android Auto: يجب أن يحتوي التطبيق على category="android.intent.category.APP_AUTO" في البيان (manifest)؛ يجب استخدام AndroidX والحد الأدنى من SDK 26+؛ دعم السمة الداكنة (DayNight)؛ دعم التحكم باللمس والصوت؛ الامتثال لـ Android Auto Compatibility Test Suite (CTS). يتحقق Google Play من كل تطبيق للتأكد من الامتثال لمتطلبات الأمان وتجربة المستخدم. تستغرق عملية الاعتماد من 1 إلى 4 أسابيع.
مثال لتطبيق ملاحة لـ CarPlay بلغة Swift باستخدام CarPlay framework.
import CarPlay
class CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {
func templateApplicationScene(
_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController
) {
let searchItem = CPListItem(
text: "بحث عن عنوان",
detailText: "أدخل الوجهة"
)
searchItem.handler = { _, completion in
// فتح شاشة البحث
completion()
}
let favoritesItem = CPListItem(
text: "المفضلة",
detailText: "العناوين المحفوظة"
)
favoritesItem.handler = { _, completion in
showFavorites()
completion()
}
let section = CPListSection(items: [searchItem, favoritesItem])
let listTemplate = CPListTemplate(
title: "الملاحة",
sections: [section]
)
interfaceController.setRootTemplate(listTemplate, animated: true)
}
func showFavorites() {
// عرض قائمة العناوين المفضلة
}
}
// SiriKit Intent للتحكم الصوتي
class NavigationIntentHandler: NSObject, INSearchForMessagesIntentHandling {
func handle(intent: INSearchForMessagesIntent,
completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
// معالجة الأمر الصوتي عبر Siri
let response = INSearchForMessagesIntentResponse(
code: .success, userActivity: nil
)
completion(response)
}
}
النقاط الرئيسية: CPTemplateApplicationSceneDelegate — نقطة الدخول لجلسة CarPlay؛ CPInterfaceController يدير مكدس القوالب؛ CPListTemplate و CPListItem — مكونات واجهة أساسية؛ .handler — معالج النقر لكل عنصر في القائمة.
مثال لتطبيق ملاحة لـ Android Auto بلغة Kotlin مع Car App Library:
// CarAppService — نقطة دخول لـ Android Auto
class NavigationCarAppService : CarAppService() {
override fun createSession(): Session = NavigationSession()
}
// Session — إدارة دورة حياة الجلسة
class NavigationSession : Session() {
override fun onCreateScreen(manager: ScreenManager): Screen {
return MainScreen(carContext)
}
}
// MainScreen — الشاشة الرئيسية مع الملاحة
class MainScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
val searchAction = Action.Builder()
.setTitle("بحث عن عنوان")
.setOnClickListener { showSearchScreen() }
.build()
val favoritesAction = Action.Builder()
.setTitle("المفضلة")
.setOnClickListener { showFavorites() }
.build()
return ListTemplate.Builder()
.setTitle("الملاحة")
.setHeaderAction(Action.APP_ICON)
.addAction(searchAction)
.addAction(favoritesAction)
.build()
}
private fun showSearchScreen() {
screenManager.push(SearchScreen(carContext))
}
private fun showFavorites() {
screenManager.push(FavoritesScreen(carContext))
}
}
// AndroidManifest — تسجيل الخدمة
<service
android:name=".NavigationCarAppService"
android:exported="true">
<intent-filter>
<action
android:name="androidx.car.app.action.NAVIGATION" />
</intent-filter>
<category
android:name="android.intent.category.APP_AUTO" />
</service>
النقاط الرئيسية: CarAppService — نقطة الدخول لـ Android Auto؛ Session — إدارة دورة الحياة؛ Screen — كل شاشة من التطبيق، تُرجع Template؛ ListTemplate — قالب للقوائم مع Action؛ category.APP_AUTO — الفئة الإلزامية في البيان (manifest).
متطلبات Apple CarPlay: يجب أن يتوافق التطبيق مع CarPlay Distraction Design Guidelines — الحد الأدنى لحجم الأزرار 48x48 pt، تباين النص 4.5:1، عدم وجود رسوم متحركة أو فيديو، دعم VoiceOver. النشر — عبر App Store Connect، يخضع التطبيق للمراجعة القياسية من Apple. يجب الإشارة إلى دعم CarPlay في App Store Connect وإرفاق لقطات شاشة لواجهة CarPlay. لا يمكن أن تكون تطبيقات CarPlay مجانية بدون إعلانات — تفرض Apple عمولة 30% (15% للشركات الصغيرة) على المشتريات داخل التطبيق.
متطلبات Android Auto: يجب أن يتوافق التطبيق مع Android Auto Design Guidelines واجتياز Android Auto Compatibility Test Suite (CTS). النشر — عبر Google Play Console، يجب الإشارة إلى فئة "Android Auto" في قائمة الأجهزة المتوافقة. يتحقق Google Play من: دعم السمة الداكنة (DayNight)، السلوك الصحيح عند فقدان الاتصال، معالجة تدوير الشاشة، دعم التحكم الصوتي عبر Google Assistant. لا تتطلب تطبيقات Android Auto عمولة إضافية — نموذج Google Play القياسي (15-30%).
| المعلمة | Apple CarPlay | Android Auto |
|---|---|---|
| الإطار | CarPlay framework (CPInterfaceController) | Car App Library (CarAppService) |
| اللغة | Swift | Kotlin |
| المساعد الصوتي | SiriKit | Google Assistant |
| الواجهة | CPListTemplate، CPMapTemplate | ListTemplate، MapTemplate |
| الوسائط | MPNowPlayingInfoCenter | MediaBrowserService |
| الملاحة | CPNavigationSession | NavigationManager |
| النشر | App Store Connect | Google Play Console |
| العمولة | 15–30% | 15–30% |
| المراجعة | App Review (1–3 أيام) | CTS + Google Play (1–4 أسابيع) |
دعم الاتصال اللاسلكي: CarPlay Wireless متاح منذ iOS 9 ويتطلب Wi-Fi + Bluetooth. Android Auto Wireless متاح منذ Android 11. للاتصال اللاسلكي، يجب أن تدعم السيارة المعيار المقابل. لا يحتاج المطور إلى كتابة كود إضافي — نظام التشغيل يتعامل مع الاتصال تلقائيًا.
الأسئلة الشائعة
Car App محسّن للاستخدام أثناء القيادة: الحد الأدنى من العناصر، أزرار كبيرة، تحكم صوتي، بدون إدخال نصي. يجب أن يتوافق التطبيق مع متطلبات السلامة — Distraction Design Guidelines من Apple و Google.
يدعم CarPlay الفئات: الملاحة (Apple Maps، Google Maps، Waze)، الصوت (Spotify، Apple Music)، المراسلة (القراءة والإملاء عبر Siri)، وظائف السيارة (شحن EV، ركن السيارة) ومكالمات VOIP.
استخدم Android Car App Library: نفذ CarAppService كنقطة دخول، Session لإدارة دورة الحياة، Screen لكل شاشة. يجب أن يدعم التطبيق MediaBrowserService للوسائط أو NavigationManager للملاحة.
نعم، كلا المنصتين تتطلبان مراجعة. تراجع Apple تطبيقات CarPlay عبر App Review. يتطلب Android Auto اجتياز Android Auto Compatibility Test Suite (CTS) والتحقق في Google Play Console.
لـ CarPlay — Swift مع أطر CarPlay (CPInterfaceController، CPTemplate، CPListItem) و SiriKit. لـ Android Auto — Kotlin مع Car App Library و MediaBrowserService.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.