تشخيص الإعلامات المسقطة في مراكز الإعلام الخاصة بـ Azure

أحد الأسئلة الشائعة حول مراكز الإعلام الخاصة بـ Azure هو كيفية استكشاف الأخطاء وإصلاحها عندما لا تظهر الإعلامات من تطبيق ما على أجهزة العميل. يريد العملاء معرفة مكان وسبب إسقاط الإعلامات، وكيفية إصلاح المشكلة. تحدد هذه المقالة سبب إسقاط الإعلامات أو عدم تلقيها على الأجهزة. كما يشرح كيفية تحديد السبب الجذري.

من الضروري أولاً فهم كيف تقوم مراكز الإعلام بإرسال الإعلامات إلى جهاز.

Notification Hubs architecture

في تدفق إعلام الإرسال النموذجي، يتم إرسال الرسالة من الواجهة الخلفية للتطبيق إلى مراكز الإعلام. تعالج مراكز الإعلام جميع التسجيلات. يُوضع في الاعتبار العلامات المكونة وتعبيرات العلامات لتحديد الأهداف. الأهداف هي عبارة عن التسجيلات التي تحتاج إلى تلقي إعلام منبثق. يمكن أن تمتد هذه التسجيلات إلى أي من الأنظمة الأساسية المدعومة لدينا: Android وBaidu (أجهزة Android في الصين) وFire OS (Amazon) iOS وWindows وWindows Phone.

مع تحديد الأهداف، ترسل مراكز الإعلام الإعلامات إلى خدمة إعلام منبثق للنظام الأساسي للجهاز. تتضمن الأمثلة خدمة Apple Push Notification (APNs) لنظامي التشغيل iOS وmacOS، وFirebase Cloud Messaging (FCM) لأجهزة Android. ترسل مراكز الإعلام الإعلامات مقسمة عبر دُفعات متعددة من التسجيلات. تقوم بالمصادقة مع خدمة الإعلامات المنبثقة المعنية، استنادًا إلى بيانات الاعتماد التي قمت بتعيينها في مدخل Microsoft Azure، ضمن تكوين مركز الإعلام. ثم تقوم خدمة الإعلامات المنبثقة بإعادة توجيه الإعلامات إلى أجهزة العميل المعنية.

المرحلة الأخيرة من تسليم الإعلامات تكون بين خدمة الإعلامات المنبثقة للنظام الأساسي والجهاز. يمكن أن يفشل تسليم الإعلامات في أي مرحلة من المراحل الأربع في عملية الإعلام المنبثق (العميل، والواجهة الخلفية للتطبيق، ومراكز الإعلام، وخدمة الإعلامات المنبثقة للنظام الأساسي). لمزيد من المعلومات حول بنية مراكز الإعلام، راجع نظرة عامة على مراكز الإعلام.

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

يبحث القسم التالي في السيناريوهات التي قد يتم فيها إسقاط الإعلامات، بدءًا من الشائعة إلى النادرة.

التكوين الخاطئ لمراكز الإعلام

لإرسال إعلامات إلى خدمة الإعلامات المنبثقة المعنية، يجب على مراكز الإعلام المصادقة في ما بينها في سياق التطبيق الخاص بك. يجب عليك إنشاء حساب مطور باستخدام خدمة الإعلامات للنظام الأساسي المستهدف (Microsoft وApple وGoogle وما إلى ذلك). ثم، يجب تسجيل التطبيق الخاص بك باستخدام نظام التشغيل حيث تحصل على رمز مميز أو مفتاح تستخدمه للعمل مع PNS الهدف.

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

للحصول على الإرشادات التفصيلية لإكمال هذه العملية، راجع بدء استخدام مراكز الإعلام الخاصة بـ Azure.

فيما يلي بعض التكوينات الخاطئة الشائعة للتحقق منها:

موقع اسم مركز الإعلام

تأكد من أن اسم مركز الإعلام (بدون أخطاء إملائية) هو نفسه في كل موقع من هذه المواقع:

  • مكان التسجيل من العميل
  • المكان الذي ترسل منه الإعلامات في الواجهة الخلفية
  • المكان الذي قمت فيه بتكوين بيانات اعتماد خدمة الإعلامات المنبثقة

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

تكوين APN

يجب الاحتفاظ بمركزين مختلفين: أحدهما للإنتاج والآخر للاختبار. ينبغي تحميل الشهادة التي تستخدمها في بيئة الاختبار المعزولة إلى مركز منفصل عن الشهادة/المركز الذي ستستخدمه في الإنتاج. لا تحاول تحميل أنواع مختلفة من الشهادات إلى نفس المركز. سوف يؤدي ذلك إلى فشل الإعلام.

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

تكوين FCM

إشعار

للحصول على معلومات حول إيقاف Firebase Cloud Messaging وخطوات الترحيل، راجع ترحيل Google Firebase Cloud Messaging.

  1. تأكد من أن مفتاح الخادم الذي حصلت عليه من Firebase يتطابق مع مفتاح الخادم الذي سجلته في مدخل Microsoft Azure.

    Firebase server key

  2. تأكد من أنك قمت بتكوين معرّف المشروع على العميل. يمكنك الحصول على قيمة معرّف المشروع من لوحة معلومات Firebase.

    Firebase Project ID

مشكلات التطبيق

العلامات وتعبيرات العلامات

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

راجع تسجيلاتك للتأكد من تطابق العلامات عند إرسال إعلام. بعد ذلك، تحقق من إيصال الإعلام من العملاء الذين لديهم تلك التسجيلات فقط.

على سبيل المثال، افترض أن جميع التسجيلات الخاصة بك مع مراكز الإعلام تستخدم العلامة "Politics". إذا قمت بعد ذلك بإرسال إعلام بالعلامة "Sports"، فلن يتم إرسال الإعلام إلى أي جهاز. قد تتضمن الحالة المعقدة تعبيرات العلامات حيث قمت بالتسجيل باستخدام "العلامة أ" أو "العلامة ب"، ولكنك استهدفت "العلامة أ والعلامة ب". يوضح لك قسم تلميحات التشخيص الذاتي لاحقا في المقالة كيفية مراجعة تسجيلاتك وعلاماتها.

مشاكل القالب

إن كنت تستخدم القوالب، فتأكد من اتباع الإرشادات الموضحة في القوالب.

تسجيلات غير صالحة

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

إشعار

نظرًا إلى أن مراكز الإعلام تعالج الدفعات بالتوازي، فإن الترتيب الذي يتم به تسليم الإعلامات غير مضمون.

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

يتم إرسال كل دفعة إلى خدمة الإعلامات المنبثقة، والتي بدورها تقبل التسجيلات وتتحقق من صحتها. أثناء هذه العملية، من الممكن أن تكتشف خدمة الإعلامات المنبثقة خطأ مع تسجيل واحد أو أكثر في دفعة. ثم تقوم خدمة الإعلامات المنبثقة بإرجاع خطأ إلى مراكز الإعلام وتتوقف العملية. تسقط خدمة الإعلامات المنبثقة تلك الدُفعة بأكملها. وينطبق ذلك بصفة خاصة على APNs، والذي يستخدم بروتوكول دفق TCP.

في هذه الحالة، تتم إزالة التسجيل المعيب من قاعدة البيانات. بعد ذلك، نقوم بإعادة محاولة تسليم الإعلامات لبقية الأجهزة في تلك الدفعة.

للحصول على مزيد من المعلومات عن الخطأ حول محاولة التسليم الفاشلة مقابل التسجيل، يمكنك استخدام REST APIs الخاصة بمراكز الإعلام لكل بيانات تتبع استخدام الرسائل: الحصول على بيانات تتبع الاستخدام لرسالة الإعلام وملاحظات PNS. للحصول على نموذج التعليمات البرمجية، راجع إرسال مثال REST.

مشكلات خدمة الإعلامات المنبثقة

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

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

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

يخزن كل تطبيق إعلامًا حديثًا واحدًا فقط. إذا تم إرسال إعلامات متعددة أثناء عدم اتصال أحد الأجهزة، فإن كل إعلام جديد يؤدي إلى تجاهل الإعلام الذي يسبقه. يطلق على الاحتفاظ بأحدث إعلام فقط الدمج في APNs والطي في FCM. (يستخدم FCM مفتاح طي.) عندما يظل الجهاز غير متصل لفترة طويلة، يتم تجاهل الإعلامات التي تم تخزينها للجهاز. لمزيد من المعلومات، راجع نظرة عامة على APNs وحول رسائل FCM.

باستخدام مراكز الإعلام، يمكنك تمرير مفتاح دمج عبر عنوان HTTP باستخدام واجهة برمجة تطبيقات SendNotification العامة. على سبيل المثال، بالنسبة إلى .NET SDK، يمكنك استخدام SendNotificationAsync. تأخذ واجهة برمجة تطبيقات SendNotification أيضًا عناوين HTTP التي يتم تمريرها كما هي إلى خدمة الإعلامات المنبثقة المعنية.

نصائح التشخيص الذاتي

فيما يلي مسارات لتشخيص السبب الجذري الإعلامات المُسقطة في مراكز الإعلام.

التحقق من صحة بيانات الاعتماد

مدخل مطور خدمة الإعلامات المنبثقة

تحقق من صحة بيانات الاعتماد في مدخل مطور خدمة الإعلامات المنبثقة (APNs وFCM وWindows Notification Service وما إلى ذلك). لمزيد من المعلومات، راجع البرنامج التعليمي: إرسال إعلامات إلى تطبيقات النظام الأساسي العام لـ Windows باستخدام مراكز الإعلام الخاصة بـ Azure.

مدخل Azure

لمراجعة بيانات الاعتماد ومطابقتها مع تلك التي حصلت عليها من مدخل مطور خدمة الإعلامات المنبثقة، انتقل إلى علامة التبويب Access Policies في مدخل Microsoft Azure.

Azure portal Access Policies

التحقق من التسجيلات

Visual Studio

في Visual Studio، يمكنك الاتصال بـ Azure من خلال Server Explorer لعرض وإدارة خدمات Azure المتعددة، بما في ذلك مراكز الإعلام. هذا الاختصار مفيد في المقام الأول لبيئة التطوير / الاختبار الخاصة بك.

Visual Studio Server Explorer

Server Explorer

يمكنك عرض جميع التسجيلات وإدارتها في مركزك. يمكن تصنيف التسجيلات حسب النظام الأساسي، والتسجيل الأصلي أو القالب، والعلامة ومعرف خدمة الإعلامات المنبثقة ومعرف التسجيل وتاريخ انتهاء الصلاحية. كما يمكنك أيضًا تحرير تسجيل على هذه الصفحة. وهو مفيد بشكل خاص لتحرير العلامات.

انقر بزر الماوس الأيمن فوق مركز الإعلام في Server Explorer، وحدد Diagnose.

Visual Studio Server Explorer: Diagnose menu

سيظهر لك الصفحة التالية:

Visual Studio: Diagnose page

التبديل إلى صفحة Device Registrations:

Visual Studio: Device Registrations

يمكنك استخدام صفحة Test Send لإرسال رسالة إعلام اختبار:

Visual Studio: Test Send

إشعار

استخدم Visual Studio لتحرير التسجيلات فقط أثناء التطوير/الاختبار، ومع عدد محدود من التسجيلات. إن كنت بحاجة إلى تحرير التسجيلات بالجملة، ففكر في استخدام وظيفة تسجيل التصدير والاستيراد الموضحة في كيفية: تصدير التسجيلات وتعديلها بالجملة.

مستكشف Service Bus

يستخدم العديد من العملاء مستكشف ناقل خدمة Microsoft Azure لعرض مراكز الإعلام الخاصة بهم وإدارتها. مستكشف ناقل خدمة Microsoft Azure هو مشروع مفتوح المصدر.

التحقق من صحة إعلامات الرسائل

مدخل Azure

لإرسال إعلام إلى عملائك لإجراء اختبار دون الحاجة إلى وجود واجهة خلفية للخدمة قيد التشغيل، ضمن SUPPORT + TROUBLESHOOTING، قم بتحديد Test Send.

Test Send functionality in Azure

Visual Studio

كما يمكنك أيضًا إرسال إعلامات الاختبار من Visual Studio.

Test Send functionality in Visual Studio

تتبع أخطاء الإعلامات الفاشلة ومراجعة نتيجة الإعلام

خاصية EnableTestSend

عند إرسال إعلام عبر مراكز الإعلام، يتم وضع الإعلام في قائمة الانتظار في البداية. تحدد مراكز الإعلام الأهداف الصحيحة، ثم يرسل الإعلام إلى خدمة الإعلامات المنبثقة. إذا كنت تستخدم واجهة برمجة تطبيقات REST أو أي من حزم SDK للعميل، فإن إرجاع استدعاء الإرسال يعني فقط أن الرسالة في قائمة الانتظار في مراكز الإعلام. لا يوفر تفاصيل حول ما حدث عندما أرسلت مراكز الإعلام في نهاية المطاف الإعلام إلى خدمة الإعلامات المنبثقة.

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

للحصول على تفاصيل حول أخطاء خدمة الإعلامات المنبثقة، يمكنك استخدام الخاصية EnableTestSend. يتم تمكين هذه الخاصية تلقائيًا عند إرسال رسائل اختبار من المدخل أو عميل Visual Studio. يمكنك استخدام هذه الخاصية لمشاهدة معلومات تصحيح الأخطاء المفصلة وأيضًا عبر واجهات برمجة التطبيقات. حاليًا، يمكنك استخدامها في .NET SDK. ستتم إضافتها إلى جميع مجموعات SDK للعميل في نهاية المطاف.

لاستخدام خاصية EnableTestSend مع استدعاء REST، قم بإلحاق معلمة سلسلة استعلام تسمى test بنهاية استدعاء الإرسال. على سبيل المثال:

https://mynamespace.servicebus.windows.net/mynotificationhub/messages?api-version=2013-10&test

مثال .NET SDK

فيما يلي مثال على استخدام .NET SDK لإرسال إعلام منبثق أصلي (منبثق):

NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName);
var result = await hub.SendWindowsNativeNotificationAsync(toast);
Console.WriteLine(result.State);

في نهاية التنفيذ، تشيرresult.State ببساطة إلى Enqueued. لا توفر النتائج أي تفاصيل حول ما حدث للإعلام المنبثق.

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

    bool enableTestSend = true;
    NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName, enableTestSend);

    var outcome = await hub.SendWindowsNativeNotificationAsync(toast);
    Console.WriteLine(outcome.State);

    foreach (RegistrationResult result in outcome.Results)
    {
        Console.WriteLine(result.ApplicationPlatform + "\n" + result.RegistrationId + "\n" + result.Outcome);
    }

عينة الإخراج

DetailedStateAvailable
windows
7619785862101227384-7840974832647865618-3
The Token obtained from the Token Provider is wrong

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

إشعار

يتم تقييد استخدام خاصية EnableTestSend بشكل كبير. لا تستخدم هذا الخيار إلا في بيئة التطوير/الاختبار ومع مجموعة محدودة من التسجيلات. لا يتم إرسال إعلامات تتبع الأخطاء إلا إلى 10 أجهزة فقط. هناك أيضًا حد لمعالجة عمليات إرسال تتبع الأخطاء، بمعدل 10 في الدقيقة. يتم أيضا استبعاد إعلامات تتبع الأخطاء من اتفاقية مستوى الخدمة لمراكز إعلامات Azure.

مراجعة بيانات تتبع الاستخدام

مدخل Azure

في المدخل، يمكنك الحصول على نظرة عامة سريعة على جميع الأنشطة في مركز الإعلام.

  1. في علامة التبويب Overview، يمكنك مشاهدة عرض مجمع للتسجيلات والإعلامات والأخطاء حسب النظام الأساسي.

    Notification Hubs overview dashboard

  2. في علامة التبويب سجل النشاط، يمكنك إضافة مقاييس أخرى خاصة بالنظام الأساسي للحصول على نظرة أعمق. يمكنك إلقاء نظرة خاصة على الأخطاء التي يتم إرجاعها عندما تحاول مراكز الإعلام إرسال الإعلام إلى خدمة الإعلامات المنبثقة.

    Azure portal activity log

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

  4. إذا كانت إعدادات المصادقة لمركز الإعلام غير صحيحة، فستظهر الرسالة PNS Authentication Error. يعد التحقق من بيانات اعتماد خدمة الإعلامات المنبثقة مؤشرًا جيدًا.

الوصول البرمجي

لمزيد من المعلومات حول الوصول البرمجي، راجع الوصول البرمجي.

إشعار

تتوفر العديد من الميزات المتعلقة ببيانات تتبع الاستخدام، مثل تصدير واستيراد التسجيلات والوصول إلى بيانات تتبع الاستخدام عبر واجهات برمجة التطبيقات، فقط على مستوى الخدمة القياسي. إن حاولت استخدام هذه الميزات من مستوى الخدمة المجاني أو الأساسي، فستتلقى رسالة استثناء إن كنت تستخدم SDK. ستحصل على خطأ HTTP 403 (ممنوع) إن كنت تستخدم الميزات مباشرة من واجهات برمجة تطبيقات REST.

لاستخدام الميزات المتعلقة ببيانات تتبع الاستخدام، تأكد أولاً من أنك تستخدم مستوى الخدمة القياسي في مدخل Microsoft Azure.