إذن تشغيل الإشعارات

يتوافق Android 13 (المستوى 33) والإصدارات الأحدث مع إذن التشغيل لإرسال إشعارات غير المستثناة (بما في ذلك إشعارات الخدمات التي تعمل في المقدّمة (FGS) من التطبيق: POST_NOTIFICATIONS يساعد هذا التغيير المستخدمين في التركيز على الإشعارات الأكثر أهمية معهم.

ننصحك بشدة باستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث في أسرع وقت ممكن. الاستفادة قدر الإمكان من التحكم والمرونة الإضافيين في الجديدة. في حال الاستمرار في استهداف 12L (المستوى 32 لواجهة برمجة التطبيقات) أو مستوى أقل، عليك إذا فقدت بعض المرونة من خلال طلب الإذن ضمن سياق وظيفتها.

بيان الإذن

لطلب إذن إرسال الإشعارات الجديد من تطبيقك، حدِّث التطبيق إلى استهداف Android 13 وإكمال عملية مشابهة مقارنةً طلب أذونات أخرى لوقت التشغيل، مثل كما هو موضح في الأقسام التالية.

الإذن الذي تحتاج إلى التوضيح في ملف البيان لتطبيقك يظهر في مقتطف الرمز التالي:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

تعتمد إمكانات التطبيق على خيار المستخدم في مربّع حوار الأذونات

في مربع الحوار هذا، يحصل المستخدمون على الإجراءات التالية المتاحة له:

توضّح الأقسام التالية سلوك تطبيقك، استنادًا إلى الإجراء الذي يستغرقه المستخدم.

يختار المستخدم "السماح"

إذا اختار المستخدم الخيار allow، يمكن لتطبيقك إجراء ما يلي:

تحديد المستخدم "عدم السماح"

إذا اختار المستخدم الخيار عدم السماح، لن يتمكّن تطبيقك من إرسال ما لم تكن مؤهَّلة للإعفاء. الكل يتم حظر قنوات الإشعارات، باستثناء بعض القنوات الأدوار. ويُعد هذا مشابهًا للسلوك الذي يحدث عندما يحول المستخدم يدويًا إيقاف كل الإشعارات لتطبيقك في إعدادات النظام.

تنبيه: إذا كان تطبيقك يستهدف 12L أو أقل ينقر المستخدم على عدم السماح، ولو مرة واحدة فقط، لا يتم مطالبته بذلك مرة أخرى إلى أن يحدث أي مما يلي:

  • يلغي المستخدم تثبيت تطبيقك ثم أعاد تثبيته.
  • يجب تحديث تطبيقك لاستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث.

تمرير المستخدم سريعًا بعيدًا عن مربع الحوار

إذا اندفع المستخدم بعيدًا عن مربع الحوار - وهذا يعني أنه لا يحدد أيًا السماح أو عدم السماح: لا تتيح حالة إذن الإشعار التغيير.

التأثيرات على التطبيقات المثبَّتة حديثًا

في حال ثبَّت أحد المستخدمين تطبيقك على جهاز يعمل بنظام التشغيل Android 13 أو الإصدارات الأحدث، تكون إشعارات تطبيقك متوقفة تلقائيًا. يجب أن ينتظر التطبيق إلى إرسال الإشعارات إلا بعد طلب الإذن الجديد ومطالبة المستخدم يمنح تطبيقك هذا الإذن.

يعتمد الوقت الذي يظهر فيه مربّع حوار الأذونات على الهدف الذي يستهدفه تطبيقك. إصدار حزمة SDK:

  • إذا كان تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، يعني ذلك أنّ تطبيقك قد اكتمل. التحكم في وقت عرض مربع حوار الأذونات. اغتنم هذه الفرصة ليشرح للمستخدمين سبب احتياج التطبيق إلى هذا الإذن، ويشجعهم على منحها.
  • إذا كان تطبيقك يستهدف 12L (المستوى 32 لواجهة برمجة التطبيقات) أو أقل، سيعرض النظام واجهة برمجة التطبيقات. مربّع حوار الأذونات في المرة الأولى التي يبدأ فيها تطبيقك نشاطًا بعد إنشاء قناة للإشعارات، أو عندما يبدأ التطبيق نشاطًا ثم يُنشئ أوّل قناة إشعارات له. هذا النمط عادة عند بدء تشغيل التطبيق.

التأثيرات على تحديثات التطبيقات الحالية

للحدّ من حالات انقطاع الخدمة المرتبطة بإذن إرسال الإشعارات، يُرجى اتّباع الخطوات التالية: يمنح النظام الإذن تلقائيًا لجميع التطبيقات المؤهَّلة عندما يُجري المستخدم ترقية لجهازه إلى الإصدار 13 من نظام التشغيل Android أو إصدار أحدث بمعنى آخر، يمكن لهذه التطبيقات الاستمرار في إرسال إشعارات إلى المستخدمين، ولا يظهر للمستخدمين مطالبة بإذن وقت التشغيل.

الأهلية للحصول على الإذن مسبقًا

لكي يكون تطبيقك مؤهَّلاً للحصول على مِنح مسبقة تلقائية، يجب أن يتضمّن قناة إشعارات حالية وعدم إيقاف إشعاراتها بشكل صريح المستخدم على جهاز يعمل بسعة 12 لتر أو أقل

إذا أوقف المستخدم الإشعارات لتطبيقك على جهاز يعمل 12L أو أقل، يستمر هذا الرفض عندما يتم تشغيل الجهاز الترقيات إلى Android 13 أو الإصدارات الأحدث.

الإعفاءات

يحتوي هذا القسم على مجموعة من الإشعارات والتطبيقات المستثناة من تغيير في سلوك إذن إرسال الإشعارات في نظام التشغيل Android 13 (المستوى 33) أو الإصدارات الأحدث، إذا رفض المستخدم إذن إرسال الإشعار، ستظلّ تظهر له الإشعارات ذات الصلة إلى الخدمات التي تعمل في المقدّمة في إدارة المهام ولكن لا تراها في درج الإشعارات.

جلسات الوسائط

الإشعارات ذات الصلة بـ جلسات الوسائط هي والإعفاء من هذا التغيير في السلوك.

التطبيقات التي تم ضبطها لإدارة المكالمات الهاتفية ذاتيًا

إذا ضبط تطبيقك نفسه لإدارة المكالمات الهاتفية ذاتيًا، يمكنك إجراء ما يلي: لا يحتاجون إلى إذن POST_NOTIFICATIONS حتى يتمكّن تطبيقك من الإرسال. الإشعارات التي تستخدم Notification.CallStyle نمط الإشعار.

يعتبر النظام أنّ تطبيقك قد ضبط نفسه للإدارة الذاتية للهاتف. إذا كان يؤدي أيًا مما يلي:

  1. يعلِن MANAGE_OWN_CALLS إذن.
  2. لتنفيذ ConnectionService من واجهة pyplot.
  3. يتم التسجيل لدى مقدِّم خدمات الاتصالات الخاص بالجهاز من خلال الاتصال registerPhoneAccount()

اختبار تطبيقك

يمكنك تقييم مدى تأثير إذن إرسال الإشعارات في تطبيقك عندما يكون يُستخدم لأول مرة على جهاز يعمل بنظام التشغيل Android 13 أو إصدار أحدث. تشير رسالة الأشكال البيانية يتابع تسمح مجموعات أوامر Android Debug Bridge (ADB) بالأمر لمحاكاة التسلسلات الأكثر شيوعًا لخيارات المستخدمين وترقيات الأجهزة بدون الحاجة إلى إعادة ضبط جهاز الاختبار:

  • تم تثبيت التطبيق مؤخرًا على جهاز يعمل الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • يحافظ المستخدم على تفعيل الإشعارات عند تثبيت التطبيق على جهاز يعمل بسعة 12 لتر أو أقل، ثم الترقيات إلى Android 13 أو الإصدارات الأحدث:

    adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • يُعطل المستخدم الإشعارات يدويًا عند تثبيت التطبيق على جهاز يعمل بسعة 12 لتر أو أقل، ثم الترقيات إلى Android 13 أو الإصدارات الأحدث:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed

أفضل الممارسات

يوضّح هذا القسم عدة طرق يمكنك من خلالها استخدام الإشعار الجديد. الأكثر فعالية في تطبيقك.

تحديث إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك

لمنح تطبيقك المزيد من المرونة عند ظهور مربّع حوار الأذونات، حدِّث تطبيقك لكي يستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث.

الانتظار حتى يتم عرض طلب الحصول على إذن إرسال الإشعارات

قبل أن تطلب من المستخدمين منح أي أذونات، اجعلهم يتعرفون على مع تطبيقك.

قد يرغب المستخدمون الجدد في استكشاف التطبيق وإدراك وفوائد كل طلب إشعار فردي. يمكنك تشغيل طلب الأذونات من إجراء المستخدم. توضح القائمة التالية عدة أمثلة على متى يكون الوقت المناسب لعرض طلب الحصول على إذن إرسال الإشعارات:

  • ينقر المستخدم على "جرس تنبيه" .
  • يختار المستخدم متابعة حساب أحد الأشخاص على وسائل التواصل الاجتماعي.
  • يقدم المستخدم طلبًا لتوصيل الطعام.

يعرض الشكل 1 سير العمل المقترَح لطلب الإشعار إذن. إلا shouldShowRequestPermissionRationale() تعرض الخطأ true، فلن يحتاج تطبيقك إلى عرض الشاشة الوسطى على نص العنوان "الحصول على إشعار!".

وبدلاً من ذلك، يمكنك ضبط طلب للظهور بعد منح المستخدمين فرصة والتعرّف على تطبيقك. على سبيل المثال، يمكنك الانتظار حتى المرة الثالثة أو الرابعة التي يشغِّل فيها المستخدم تطبيقك

بعد أن يسجّل المستخدم الدخول، سيظهر له رمز
   دعوة لتلقي إشعارات بتحديثات الرحلة. بعد أن يضغط المستخدم على مفتاح
   أنا في الزر، يطلب التطبيق الإذن الجديد، مما يتسبب في جعل النظام
   لإظهار مربع الحوار
الشكل 1. سير عمل مقترَح مستند إلى المستخدم لتقديم الطلب إذن إرسال الإشعارات. لا تكون الشاشة الوسطى ضرورية إلا إذا تُرجع shouldShowRequestPermissionRationale() مبلغ true.

طلب الإذن حسب السياق

عند طلب أذونات إرسال الإشعارات داخل تطبيقك، عليك إجراء ذلك في السياق، لكي يتضح بوضوح الغرض من استخدام الإشعارات السبب الذي يدفع المستخدم إلى الموافقة على سبيل المثال، قد يتضمن تطبيق البريد الإلكتروني خيارات إرسال إشعارات عن كل رسالة إلكترونية جديدة، أو فقط الرسائل الإلكترونية التي يكون المستخدم المستلم فقط.

استغل هذه الفرصة لمنح الشفافية إلى نواياك، ويزداد تفاعل المستخدمين منح التطبيق إذن الإشعار.

التحقّق مما إذا كان بإمكان تطبيقك إرسال إشعارات

قبل أن يرسل تطبيقك إشعارًا، تأكَّد مما إذا كان المستخدم قد فعّله. الخاصة بتطبيقك. لإجراء ذلك، اتصل areNotificationsEnabled()

استخدام الإذن بمسؤولية

بعد الحصول على الموافقة على إرسال الإشعارات، تذكّر استخدام الإذن بمسؤولية. يمكن للمستخدمين الاطّلاع على عدد الإشعارات اليومية التي يرسلها تطبيقك. ويرسلها يمكنه إبطال الإذن في أي وقت.