توفّر خدمة القياس عن بُعد "سجلّ الناشرين القابل للإعداد" كوسيلة ثانوية لجمع البيانات. يمكن للتطبيقات والخدمات تسجيل نفسها كناشرين للقياس عن بُعد في قاعدة بيانات المسجّلين، ما يتيح لخدمة القياس عن بُعد استخدامها. لمزيد من المعلومات عن أنواع مصادر البيانات التي نتيحها، يُرجى الاطّلاع على مقالة مصادر البيانات.
المكتبة
تتواصل خدمة القياس عن بُعد مع الناشرين في "سجلّ الناشرين القابل للإعداد" من خلال Binder. بدلاً من تنفيذ واجهات AIDL يدويًا، ننصحك بشدة باستخدام مكتبة "سجلّ الناشرين القابل للإعداد" التجريبية التي تشكّل جزءًا من حزمة Telemetry SDK. تجرّد المكتبة واجهات AIDL وتوفّر واجهة برمجة تطبيقات نظيفة وآمنة من ناحية النوع لتحديد الناشرين ونشر بيانات القياس عن بُعد وإدارة عملية تحويل رسائل Protobuf إلى تنسيقها السلكي.
لمزيد من المعلومات عن استخدام المكتبة، يُرجى الاطّلاع على مقالة مكتبة "سجلّ الناشرين القابل للإعداد ".
تنفيذ الناشر وتسجيله يدويًا
إذا كنت تفضّل عدم استخدام المكتبة المتوفّرة، يمكنك تنفيذ واجهات Binder الضرورية يدويًا. تقدّم الأقسام التالية نظرة عامة على الخطوات اللازمة لتنفيذ ناشر وتسجيله في "سجلّ الناشرين القابل للإعداد".
التسجيل
على عكس خدمات SDV التي يتم تحديد بياناتها الوصفية، مثل بنية الرسالة، في VSIDL وتكون متاحة للنظام، يجب أن يقدّم الناشرون الذين يستخدمون "سجلّ الناشرين القابل للإعداد" بياناتهم الوصفية بشكل صريح. يمكنك تقديم هذه البيانات الوصفية من خلال عنصر PublisherInfo أثناء التسجيل.
يمكنك تسجيل هؤلاء الناشرين باستخدام واجهة IConfigurablePublisherRegistry
AIDL. وبالتالي، يمكنك كتابة الناشرين بأي لغة تتيحها AIDL، بما في ذلك Java وC++ وRust. توفّر الواجهة طريقتَين:
استخدِم طريقة
registerPublisherلتسجيل ناشر جديد في خدمة القياس عن بُعد:void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)استخدِم طريقة
unregisterPublisherلإلغاء تسجيل ناشر تم تسجيله سابقًا من خدمة القياس عن بُعد:void unregisterPublisher(in @utf8InCpp String serviceName)
يحدّد عنصر PublisherInfo المعلومات الأساسية للناشر:
| الحقل | الوصف |
|---|---|
serviceName |
اسم يحدّده المستخدم للناشر استخدِم هذا الاسم للإشارة إليه من إعدادات المقاييس. |
fileDescriptorSet |
سلسلة google.protobuf.FileDescriptorSet (راجِع مقالة الرسائل التي تصف نفسها لمزيد من المعلومات) تحتوي على واصف الرسالة (الذي يحمل الاسم الذي يحدّده حقل messageTypeName) للرسالة التي ينشرها هذا الناشر وجميع التبعيات الضرورية لها تستخدم خدمة القياس عن بُعد واصف الرسالة لإلغاء تسلسل البيانات التي يرسلها الناشر. لمزيد من المعلومات عن إنشاء هذا الخيار في مدّة التصميم، يُرجى الاطّلاع على مقالة أداة إنشاء واصفات Java Protobuf. |
messageTypeName |
الاسم الكامل لرسائل Protobuf التي ينشرها الناشر يجب تعريف واصف الرسالة هذه في fileDescriptorSet. |
supportsGet |
يشير إلى ما إذا كان بإمكان الناشر تقديم أحدث رسالة بدون الاشتراك فيها |
التنفيذ
يجب أن ينفّذ الناشر المخصّص واجهة IConfigurablePublisher من خلال توفير الطريقتَين التاليتَين:
تستدعي خدمة القياس عن بُعد طريقة
createSubscriptionللاشتراك في ناشر إذا تم ضبطconnection_typeلمصدر البيانات لهذا الناشر في إعدادات المقاييس علىSUBSCRIPTION. توفّر وسيطةISubscriberالتي يتم تمريرها إلى الناشر طريقةsendData(in byte[] data)، التي يمكنك استخدامها لبثّ رسائل Protobuf إلى خدمة القياس عن بُعد.IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)تستدعي خدمة القياس عن بُعد طريقة
getLatestMessageلجلب أحدث رسالة من ناشر إذا تم ضبطconnection_typeلمصدر البيانات لهذا الناشر في إعدادات المقاييس علىON_DEMAND. لا تستخدم خدمة القياس عن بُعد هذه الطريقة إلا إذا أشارتPublisherInfoللناشر إلىsupportsGet = true.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
تضبط خدمة القياس عن بُعد وسيطة configuration على خيار configuration لمصدر البيانات في إعدادات المقاييس.