بدءًا من Android 14 (المستوى 34 لواجهة برمجة التطبيقات)، عليك تحديد نوع خدمة مناسب لكل خدمة تعمل في المقدّمة. وهذا يعني أنّه عليك الإفصاح عن نوع الخدمة في بيان التطبيق، وأن تطلب أيضًا الإذن المناسب
للخدمة التي تعمل في المقدّمة لهذا النوع (بالإضافة إلى طلب إذن FOREGROUND_SERVICE
). بالإضافة إلى ذلك، قد تحتاج إلى طلب أذونات التشغيل قبل إطلاق الخدمة، وذلك حسب نوع الخدمة التي تعمل في المقدّمة.
الكاميرا
- نوع الخدمة الأمامية الذي سيتم تحديده في البيان ضمن
android:foregroundServiceType
camera
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_CAMERA
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_CAMERA
- المتطلبات الأساسية لوقت التشغيل
طلب إذن وقت تشغيل
CAMERA
ومنحهملاحظة: يخضع إذن وقت التشغيل
CAMERA
لقيود أثناء الاستخدام. لهذا السبب، لا يمكنك إنشاء خدمة تعمل في المقدّمة فيcamera
عندما يكون تطبيقك قيد التشغيل في الخلفية، مع بعض الاستثناءات. وللحصول على مزيد من المعلومات، يُرجى الاطِّلاع على القيود المفروضة على بدء الخدمات التي تعمل في المقدّمة والتي تحتاج إلى أذونات أثناء الاستخدام.- الوصف
مواصلة الوصول إلى الكاميرا من الخلفية، مثل تطبيقات محادثات الفيديو التي تتيح تنفيذ مهام متعددة
جهاز متّصل
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
connectedDevice
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_CONNECTED_DEVICE
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
- المتطلبات الأساسية لوقت التشغيل
يجب استيفاء واحد على الأقل من الشروط التالية:
يُرجى تحديد إذن واحد على الأقل من الأذونات التالية في البيان:
اطلب الحصول على إذن واحد على الأقل من أذونات وقت التشغيل التالية واحصل على إذنٍ واحد:
الاتصال بالرقم
UsbManager.requestPermission()
- الوصف
التفاعلات مع الأجهزة الخارجية التي تتطلب اتصالاً عبر البلوتوث أو NFC أو الأشعة تحت الحمراء أو USB أو الشبكة
- الخيارات البديلة
إذا كان تطبيقك يحتاج إلى نقل البيانات باستمرار إلى جهاز خارجي، يمكنك استخدام مدير الجهاز المصاحب بدلاً من ذلك. استخدِم واجهة برمجة التطبيقات لحضور الجهاز المصاحب للمساعدة في استمرار تشغيل تطبيقك عندما يكون الجهاز المصاحب ضمن النطاق.
إذا كان تطبيقك بحاجة إلى البحث عن أجهزة تتضمّن بلوتوث، يمكنك استخدام واجهة برمجة التطبيقات لمسح البلوتوث بدلاً من ذلك.
مزامنة البيانات
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
dataSync
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_DATA_SYNC
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
- المتطلبات الأساسية لوقت التشغيل
- بدون
- الوصف
عمليات نقل البيانات، مثل ما يلي:
- تحميل البيانات أو تنزيلها
- عمليات النسخ الاحتياطي والاستعادة
- عمليات الاستيراد أو التصدير
- استرجاع البيانات
- معالجة الملفات المحلية
- نقل البيانات بين جهاز والسحابة الإلكترونية عبر الشبكة
- الخيارات البديلة
يمكنك إنشاء مهام نقل البيانات التي يبدأها المستخدم للسماح للمستخدمين ببدء تحميل البيانات أو تنزيلها لفترة طويلة.
استخدم واجهة برمجة تطبيقات إدارة التنزيل لتنزيل البيانات من معرّف موارد منتظم (URI).
يمكنك استخدام
BackupManager
للاحتفاظ بنسخة احتياطية من البيانات أو استعادتها.بالنسبة إلى حالات الاستخدام الأخرى، يمكنك استخدام WorkManager.
صحة
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
android:foregroundServiceType
health
- إذن التعريف في بيانك
FOREGROUND_SERVICE_HEALTH
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_HEALTH
- المتطلبات الأساسية لوقت التشغيل
يجب أن يكون أحد الشروط التالية صحيحًا على الأقل:
يُرجى تقديم بيان عن إذن
HIGH_SAMPLING_RATE_SENSORS
في البيان.عليك طلب إذن واحد على الأقل من أذونات التشغيل التالية والحصول عليه:
ملاحظة: يخضع إذن التشغيل "
BODY_SENSORS
" للقيود المفروضة أثناء الاستخدام. لهذا السبب، لا يمكنك إنشاء خدمةhealth
تعمل في المقدّمة تستخدم أجهزة استشعار الجسم عندما يكون تطبيقك مفعّلاً في الخلفية، مع بعض الاستثناءات. لمزيد من المعلومات، يمكنك الاطّلاع على مقالة القيود المفروضة على تشغيل الخدمات التي تعمل في المقدّمة والتي تحتاج إلى أذونات أثناء الاستخدام.- الوصف
أي حالات استخدام طويلة الأمد لدعم التطبيقات في فئة اللياقة البدنية، مثل أجهزة تتبُّع التمارين الرياضية
الموقع الجغرافي
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
location
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_LOCATION
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_LOCATION
- المتطلبات الأساسية لوقت التشغيل
اطلب الحصول على إذن واحد على الأقل من أذونات وقت التشغيل التالية واحصل على إذنٍ واحد:
ملاحظة: تخضع أذونات وقت التشغيل للموقع الجغرافي لقيود أثناء الاستخدام. لهذا السبب، لا يمكنك إنشاء خدمة تعمل في المقدّمة في
location
عندما يكون تطبيقك قيد التشغيل في الخلفية، مع بعض الاستثناءات. وللحصول على مزيد من المعلومات، يُرجى الاطِّلاع على القيود المفروضة على بدء الخدمات التي تعمل في المقدّمة والتي تحتاج إلى أذونات أثناء الاستخدام.- الوصف
حالات الاستخدام طويلة الأمد التي تتطلب الوصول إلى الموقع الجغرافي، مثل التنقّل ومشاركة الموقع الجغرافي.
- الخيارات البديلة
إذا كان يلزم تشغيل تطبيقك عند وصول المستخدم إلى مواقع جغرافية محددة، يمكنك استخدام geofence API بدلاً من ذلك.
الوسائط
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
mediaPlayback
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_MEDIA_PLAYBACK
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- المتطلبات الأساسية لوقت التشغيل
- بدون
- الوصف
- يمكنك مواصلة تشغيل الصوت أو الفيديو من الخلفية. إتاحة وظيفة تسجيل الفيديوهات الرقمية (DVR) على Android TV
- الخيارات البديلة
- إذا كنت تعرض فيديو "نافذة ضمن النافذة"، استخدِم وضع "نافذة ضمن النافذة".
عرض الوسائط
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
mediaProjection
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_MEDIA_PROJECTION
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- المتطلبات الأساسية لوقت التشغيل
عليك طلب طريقة
createScreenCaptureIntent()
قبل بدء الخدمة التي تعمل في المقدّمة. يؤدي ذلك إلى عرض إشعار بالإذن للمستخدم؛ يجب أن يمنحه المستخدم الإذن قبل أن تتمكن من إنشاء الخدمة.بعد إنشاء الخدمة التي تعمل في المقدّمة، يمكنك طلب الرقم
MediaProjectionManager.getMediaProjection()
.- الوصف
يمكنك عرض المحتوى على شاشة غير أساسية أو جهاز خارجي باستخدام واجهات برمجة تطبيقات
MediaProjection
. ليس بالضرورة أن يكون هذا المحتوى محتوى وسائط فقط.- الخيارات البديلة
لبث الوسائط إلى جهاز آخر، يمكنك استخدام Google Cast SDK.
الميكروفون
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
microphone
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_MICROPHONE
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_MICROPHONE
- المتطلبات الأساسية لوقت التشغيل
اطلب إذن تشغيل
RECORD_AUDIO
واحصل عليه.ملاحظة: يخضع إذن وقت التشغيل
RECORD_AUDIO
لقيود أثناء الاستخدام. لهذا السبب، لا يمكنك إنشاء خدمة تعمل في المقدّمة فيmicrophone
عندما يكون تطبيقك قيد التشغيل في الخلفية، مع بعض الاستثناءات. وللحصول على مزيد من المعلومات، يُرجى الاطِّلاع على القيود المفروضة على بدء الخدمات التي تعمل في المقدّمة والتي تحتاج إلى أذونات أثناء الاستخدام.- الوصف
استمر في التقاط الميكروفون من الخلفية، مثل مسجلات الصوت أو تطبيقات التواصل.
مكالمة هاتفية
- نوع الخدمة الأمامية الذي سيتم تعريفه في البيان بموجب
android:foregroundServiceType
phoneCall
- الإذن الذي يجب الإفصاح عنه في ملف البيان
FOREGROUND_SERVICE_PHONE_CALL
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- المتطلبات الأساسية لوقت التشغيل
يجب أن يكون أحد الشروط التالية على الأقل صحيحًا:
- أعلن التطبيق عن إذن
MANAGE_OWN_CALLS
في ملف البيان الخاص به.
- أعلن التطبيق عن إذن
- التطبيق هو تطبيق "برنامج الاتصال" التلقائي من خلال دور
ROLE_DIALER
.
- التطبيق هو تطبيق "برنامج الاتصال" التلقائي من خلال دور
- الوصف
متابعة مكالمة جارية باستخدام واجهات برمجة تطبيقات
ConnectionService
.- الخيارات البديلة
إذا كنت بحاجة إلى إجراء مكالمات هاتفية أو مكالمات فيديو أو مكالمات عبر بروتوكول الصوت على الإنترنت، يمكنك استخدام مكتبة
android.telecom
.يمكنك استخدام
CallScreeningService
لفحص المكالمات.
المراسلة عن بُعد
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
android:foregroundServiceType
remoteMessaging
- إذن التعريف في بيانك
FOREGROUND_SERVICE_REMOTE_MESSAGING
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
- المتطلبات الأساسية لوقت التشغيل
- لا شيء
- الوصف
- يمكنك نقل الرسائل النصية من جهاز إلى آخر. يساعد في استمرار مهام المراسلة للمستخدم عند تبديل الأجهزة.
خدمة قصيرة
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
android:foregroundServiceType
shortService
- إذن التعريف في بيانك
- لا شيء
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- المتطلبات الأساسية لوقت التشغيل
- لا شيء
- الوصف
إنهاء العمل المهم الذي لا يمكن مقاطعته أو تأجيله بسرعة.
يتميز هذا النوع ببعض الخصائص الفريدة:
- لا يمكن عرضها إلا لفترة زمنية قصيرة (حوالي 3 دقائق).
- ما مِن دعم للخدمات التي تعمل في المقدّمة الثابتة.
- يتعذّر بدء الخدمات الأخرى التي تعمل في المقدّمة.
- ولا يتطلّب ذلك إذنًا خاصًا بالنوع، ولكنّه لا يزال
يتطلب إذن
FOREGROUND_SERVICE
. - ولا يمكن تغيير "
shortService
" إلى نوع خدمة آخر إلا إذا كان التطبيق مؤهّلًا حاليًا لبدء خدمة جديدة تعمل في المقدّمة. - يمكن للخدمة التي تعمل في المقدّمة تغيير نوعها إلى
shortService
في أي وقت، عند بدء فترة المهلة.
تبدأ مهلة ShortService من لحظة استدعاء
Service.startForeground()
. ومن المتوقّع أن يطلب التطبيق الرمزService.stopSelf()
أوService.stopForeground()
قبل انتهاء المهلة. وبخلاف ذلك، سيتم تسميةService.onTimeout()
الجديد، ما يمنح التطبيقات فرصة قصيرة للاتصال بـstopSelf()
أوstopForeground()
لإيقاف الخدمة.بعد فترة قصيرة من استدعاء
Service.onTimeout()
، يدخل التطبيق حالة ذاكرة التخزين المؤقت ولا يتم اعتباره في المقدّمة، ما لم يتفاعل المستخدم بشكل نشط مع التطبيق. وبعد فترة قصيرة من تخزين التطبيق مؤقتًا وعدم توقف الخدمة، يتلقّى التطبيق خطأ ANR. وتشير رسالة ANR إلىFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
. ولهذه الأسباب، يُعتبر تنفيذService.onTimeout()
معاودة الاتصال بالاستناد إلى أفضل الممارسات.لا تتوفّر ميزة معاودة الاتصال بـ "
Service.onTimeout()
" على نظام التشغيل Android 13 والإصدارات الأقدم. في حال تشغيل الخدمة نفسها على مثل هذه الأجهزة، لن تتلقى مهلة أو خطأ ANR. يجب التأكّد من إيقاف الخدمة فور انتهاء عملية المعالجة، حتى إذا لم تتلقَّ معاودة الاتصال بـ "Service.onTimeout()
" بعد.يُرجى العِلم أنّه في حال عدم الالتزام بانتهاء مهلة
shortService
، سيحدث خطأ ANR حتى في حال تشغيل خدمات أخرى صالحة تعمل في المقدّمة أو غير ذلك من عمليات مراحل نشاط التطبيق.إذا كان التطبيق مرئيًا للمستخدم أو يستوفي أحد الاستثناءات التي تسمح ببدء الخدمات التي تعمل في المقدّمة من الخلفية، سيؤدي استدعاء
Service.StartForeground()
مرة أخرى باستخدام معلَمةFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
إلى تمديد المهلة بمقدار 3 دقائق أخرى. إذا لم يكن التطبيق مرئيًا للمستخدم ولم يستوفِ أحد الاستثناءات، ستؤدي أي محاولة لبدء خدمة أخرى تعمل في المقدّمة، بغض النظر عن نوعها، إلى حدوثForegroundServiceStartNotAllowedException
.إذا أوقف أحد المستخدمين ميزة تحسين البطارية لتطبيقك، سيظلّ متأثّرًا بانتهاء مهلة ShortService FGS.
إذا بدأت خدمة تعمل في المقدّمة تتضمّن النوع
shortService
ونوعًا آخر من هذه الخدمات، يتجاهل النظام تعريف النوعshortService
. ومع ذلك، يجب أن تلتزم الخدمة بالمتطلبات الأساسية للأنواع الأخرى المعلَن عنها. لمزيد من المعلومات، راجع مستندات الخدمات التي تعمل في المقدّمة.
استخدام خاص
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
android:foregroundServiceType
specialUse
- إذن التعريف في بيانك
FOREGROUND_SERVICE_SPECIAL_USE
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
- المتطلبات الأساسية لوقت التشغيل
- لا شيء
- الوصف
وتشمل أي حالات استخدام صالحة للخدمة التي تعمل في المقدّمة ولا تغطيها الأنواع الأخرى من الخدمات التي تعمل في المقدّمة.
بالإضافة إلى تعريف
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
بنوع الخدمة التي تعمل في المقدّمة، على المطوّرين توضيح حالات الاستخدام في البيان. ولإجراء ذلك، يحدّد العنصر<property>
داخل العنصر<service>
. تتم مراجعة هذه القيم وحالات الاستخدام المقابلة عند إرسال تطبيقك في Google Play Console. تتميّز حالات الاستخدام التي تقدّمها بنموذج حرّ، وعليك التأكّد من تقديم معلومات كافية ليتمكّن المراجع من معرفة سبب حاجتك إلى استخدام النوعspecialUse
.<service android:name="fooService" android:foregroundServiceType="specialUse"> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="explanation_for_special_use"/> </service>
تم استثناء النظام
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
android:foregroundServiceType
systemExempted
- إذن التعريف في بيانك
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
- المتطلبات الأساسية لوقت التشغيل
- لا شيء
- الوصف
محجوزة لتطبيقات النظام وعمليات تكامل النظام المحدّدة لمواصلة استخدام الخدمات التي تعمل في المقدّمة.
لاستخدام هذا النوع، يجب أن يستوفي التطبيق معيارًا واحدًا على الأقل من المعايير التالية:
- الجهاز في حالة الوضع التجريبي
- التطبيق مالك الجهاز
- التطبيق مالك ملف شخصي
- تطبيقات الأمان التي لها الدور
ROLE_EMERGENCY
- تطبيقات مشرف الجهاز
- التطبيقات التي تحمل إذن
SCHEDULE_EXACT_ALARM
أوUSE_EXACT_ALARM
تطبيقات الشبكة الافتراضية الخاصة (يتم ضبطها باستخدام الإعدادات > الشبكة والإنترنت > الشبكة الافتراضية الخاصة)
وإلا، سيؤدي تعريف هذا النوع إلى عرض النظام للسمة
ForegroundServiceTypeNotAllowedException
.
فرض سياسات Google Play في ما يتعلّق باستخدام أنواع الخدمات التي تعمل في المقدّمة
إذا كان تطبيقك يستهدف الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث، عليك توضيح أنواع الخدمات التي تعمل في المقدّمة لتطبيقك في صفحة محتوى التطبيق ضمن Play Console (السياسة > محتوى التطبيق). لمزيد من المعلومات حول كيفية تحديد أنواع الخدمات التي تعمل في المقدّمة في Play Console، يمكنك الاطّلاع على المقالة التعرّف على متطلبات الخدمة التي تعمل في المقدّمة والعرض بملء الشاشة.