لمساعدة المطوّرين في أن يكونوا أكثر وعيًا بتعريف الخدمات التي تعمل في المقدّمة الموجَّهة للمستخدمين، قدّم نظام التشغيل Android 10 السمة android:foregroundServiceType
ضمن العنصر <service>
.
إذا كان تطبيقك يستهدف الإصدار 14 من نظام التشغيل Android، يجب أن يحدّد أنواع الخدمات التي تعمل في المقدّمة مناسبة. كما في الإصدارات السابقة من Android، يمكن دمج أنواع متعدّدة. تعرض هذه القائمة أنواع الخدمات التي تعمل في المقدّمة للاختيار من بينها:
camera
connectedDevice
dataSync
health
location
mediaPlayback
mediaProjection
microphone
phoneCall
remoteMessaging
shortService
specialUse
systemExempted
إذا لم تكن حالة الاستخدام في تطبيقك مرتبطة بأي من هذه الأنواع، ننصحك بشدة بنقل منطقك لاستخدام WorkManager أو مهام نقل البيانات التي يبدأها المستخدم.
النوعان health, remoteMessaging, shortService, specialUse
وsystemExempted
جديدان في نظام Android 14.
يقدّم مقتطف الرمز التالي مثالاً على بيان نوع الخدمة التي تعمل في المقدّمة في ملف البيان:
<manifest ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
إذا لم يحدِّد التطبيق الذي يستهدف الإصدار 14 من نظام التشغيل Android أنواع خدمة معيّنة في البيان، سيرفع النظام قيمة MissingForegroundServiceTypeException
عند طلب الوصول إلى startForeground()
لتلك الخدمة.
طلب الحصول على إذن جديد لاستخدام أنواع الخدمات التي تعمل في المقدّمة
إذا كانت التطبيقات التي تستهدف الإصدار 14 من نظام التشغيل Android تستخدم خدمة تعمل في المقدّمة، عليها تقديم بيان عن إذن محدّد، استنادًا إلى نوع الخدمة التي تعمل في المقدّمة، الذي يقدّمه Android 14. تظهر هذه الأذونات في الأقسام بعنوان "الإذن الذي يجب الإفصاح عنه في ملف البيان" ضمن قسم حالات الاستخدام المقصودة وإجراءات التنفيذ لكل نوع من أنواع الخدمات التي تعمل في المقدّمة على هذه الصفحة.
يتم تعريف جميع الأذونات على أنها أذونات عادية ويتم منحها بشكل افتراضي. ولا يمكن للمستخدمين إبطال هذه الأذونات.
تضمين نوع الخدمة التي تعمل في المقدّمة في وقت التشغيل
من أفضل الممارسات بالنسبة إلى التطبيقات التي تبدأ الخدمات التي تعمل في المقدّمة هي استخدام
إصدار ServiceCompat
من startForeground()
(المتوفّر في الإصدار 1.12 والإصدارات الأحدث من androidx-core) حيث ترسل عددًا صحيحًا من أنواع الخدمات التي تعمل في المقدّمة. يمكنك اختيار تمرير قيمة أو أكثر
من قيم النوع.
وفي العادة، عليك الإفصاح فقط عن الأنواع المطلوبة لحالة استخدام معيّنة. ويُسهِّل ذلك تلبية توقعات النظام لكل نوع من أنواع الخدمات التي تعمل في المقدّمة. في الحالات التي تبدأ فيها الخدمة التي تعمل في المقدّمة باستخدام أنواع متعدّدة، يجب أن تلتزم الخدمة التي تعمل في المقدّمة بمتطلبات تنفيذ النظام الأساسي لجميع الأنواع.
ServiceCompat.startForeground(0, notification, FOREGROUND_SERVICE_TYPE_LOCATION)
إذا لم يتم تحديد نوع الخدمة التي تعمل في المقدّمة في الطلب، يتم ضبط النوع تلقائيًا على القيم المحدَّدة في البيان. إذا لم تحدّد نوع الخدمة في ملف البيان، سيطرح النظام MissingForegroundServiceTypeException
.
إذا كانت الخدمة التي تعمل في المقدّمة تحتاج إلى أذونات جديدة بعد تشغيلها،
عليك الاتصال بـ startForeground()
مرة أخرى وإضافة أنواع الخدمات الجديدة. على سبيل المثال، لنفترض أنّ تطبيق لياقة بدنية يشغّل خدمة لتتبُّع الجري تحتاج دائمًا إلى معلومات location
، ولكنه قد يحتاج أو لا يحتاج إلى أذونات media
. وعليك توضيح السمتَين location
وmediaPlayback
في البيان. إذا بدأ المستخدم عملية البحث وأردت فقط تتبُّع موقعه الجغرافي، يجب أن يتصل التطبيق بـ startForeground()
وأن يستخدم نوع الخدمة location
فقط. بعد ذلك، إذا أراد المستخدم بدء تشغيل الصوت، اتّصِل بـ startForeground()
مرة أخرى ومرِّر location|mediaPlayback
.
عمليات التحقّق في وقت تشغيل النظام
يتحقّق النظام من الاستخدام السليم لأنواع الخدمات التي تعمل في المقدّمة، ويتأكّد من أنّ التطبيق قد طلب أذونات التشغيل المناسبة أو أنّه يستخدم واجهات برمجة التطبيقات المطلوبة.
على سبيل المثال، يتوقع النظام أن تطلب التطبيقات التي تستخدم نوع الخدمة التي تعمل في المقدّمة FOREGROUND_SERVICE_TYPE_LOCATION
إما ACCESS_COARSE_LOCATION
أو ACCESS_FINE_LOCATION
.
وهذا يعني أنّ التطبيقات يجب أن تتبع ترتيبًا محددًا جدًا للعمليات عند طلب أذونات من المستخدم وبدء الخدمات التي تعمل في المقدّمة. يجب طلب الأذونات ومنحها قبل محاولة التطبيق لطلب startForeground()
. على التطبيقات التي تطلب الأذونات المناسبة بعد بدء الخدمة التي تعمل في المقدّمة تغيير ترتيب العمليات التالي وطلب الإذن قبل بدء الخدمة التي تعمل في المقدّمة.
تظهر تفاصيل فرض السياسة على النظام الأساسي في الأقسام التي تحمل تصنيف "متطلبات وقت التشغيل" ضمن قسم حالات الاستخدام المقصودة وإجراءات التنفيذ لكل نوع من أنواع الخدمات التي تعمل في المقدّمة في هذه الصفحة.
حالات الاستخدام المقصودة وإجراءات التنفيذ لكل نوع من أنواع الخدمات التي تعمل في المقدّمة
لاستخدام نوع معيّن من الخدمات التي تعمل في المقدّمة، يجب الإفصاح عن إذن معيّن في ملف البيان، كما يجب استيفاء متطلبات محدّدة لوقت التشغيل، كما يجب أن يستوفي تطبيقك إحدى مجموعات حالات الاستخدام المقصودة لهذا النوع. توضح الأقسام التالية الإذن الذي يجب تعريفه والمتطلبات الأساسية لوقت التشغيل وحالات الاستخدام المقصودة لكل نوع.
الكاميرا
- نوع الخدمة التي تعمل في المقدّمة سيتم الإفصاح عنها في ملف البيان بموجب
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 أو IR أو USB أو اتصال بالشبكة.
- الحلول البديلة
إذا كان تطبيقك يحتاج إلى نقل البيانات باستمرار إلى جهاز خارجي، يمكنك استخدام أداة إدارة الأجهزة المصاحبة بدلاً من ذلك. استخدِم واجهة برمجة التطبيقات لتواجد الجهاز المصاحب للمساعدة في استمرار تشغيل تطبيقك عندما يكون الجهاز المصاحب داخل النطاق.
إذا كان تطبيقك يحتاج إلى البحث عن أجهزة تتضمّن بلوتوث، يمكنك استخدام واجهة برمجة التطبيقات للمسح الضوئي عبر البلوتوث بدلاً من ذلك.
مزامنة البيانات
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
android:foregroundServiceType
dataSync
- إذن التعريف في بيانك
FOREGROUND_SERVICE_DATA_SYNC
- تمرير مستمر إلى
startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
- المتطلبات الأساسية لوقت التشغيل
- لا شيء
- الوصف
عمليات نقل البيانات مثل ما يلي:
- تحميل البيانات أو تنزيلها
- عمليات النسخ الاحتياطي والاستعادة
- عمليات الاستيراد أو التصدير
- استرجاع البيانات
- معالجة الملفات المحلية
- نقل البيانات بين جهاز والسحابة الإلكترونية عبر إحدى الشبكات
- الحلول البديلة
راجِع بدائل الخدمات التي تعمل في المقدّمة لمزامنة البيانات للحصول على معلومات مفصّلة.
الحالة
- نوع الخدمة التي تعمل في المقدّمة ليتم الإفصاح عنها في ملف البيان بموجب
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
- المتطلّبات الأساسية لبيئة التشغيل
يجب أن يكون المستخدم قد فعّل خدمات الموقع الجغرافي، ويجب منح التطبيق إذنًا واحدًا على الأقل من أذونات التشغيل التالية:
ملاحظة: للتأكّد من أنّ المستخدم قد فعّل خدمات الموقع الجغرافي ومنحه إذن الوصول إلى أذونات التشغيل، استخدِم
PermissionChecker#checkSelfPermission()
ملاحظة: تخضع أذونات تشغيل الموقع الجغرافي لقيود أثناء الاستخدام. لهذا السبب، لا يمكنك إنشاء خدمة "
location
" التي تعمل في المقدّمة أثناء تشغيل تطبيقك في الخلفية، ما لم يتم منحك إذن تشغيلACCESS_BACKGROUND_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
.- الحلول البديلة
وإذا كنت بحاجة إلى إجراء مكالمات هاتفية أو مكالمات فيديو أو مكالمات عبر بروتوكول VoIP، يمكنك استخدام مكتبة
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، يمكنك الاطّلاع على المقالة التعرّف على متطلبات الخدمة التي تعمل في المقدّمة والعرض بملء الشاشة.