Advertising Data في BLE: ما هو، الهيكل وأنواع البيانات

المؤلف: IT Sectr نُشر: 2026-07-15 وقت القراءة: 10 دق

Advertising Data هي بيانات منظمة يرسلها جهاز BLE في حزم الإعلانات لتحديد هويته وخدماته. يحدد Bluetooth Core Specification 5.4 (2023) تنسيق AD Structure: كل عنصر يحتوي على طول (1 بايت) ونوع (1 بايت) وقيمة (حتى 29 بايت). يصف المواصفات أكثر من 30 نوع AD — من Flags و Local Name إلى Service UUID و Manufacturer Specific Data. التعبئة الصحيحة لـ advertising data ضرورية لتوافق الجهاز مع iOS وAndroid والمنصات الأخرى، كما تحدد سرعة الاكتشاف وكفاءة استهلاك الطاقة للإعلان.

النقاط الرئيسية

  • AD Structure هو تنسيق البيانات في حزمة إعلانات BLE: الطول (1 بايت)، النوع (1 بايت)، القيمة (حتى 29 بايت).
  • حزمة الإعلانات محدودة بـ 31 بايت، و scan response يوفر 31 بايت إضافية للبيانات الإضافية.
  • Flags (0x01) هو نوع AD إلزامي يحدد أوضاع LE Limited Discoverable و BR/EDR Not Supported.
  • يتم إرسال Service UUID بتنسيق مختصر (2 بايت) أو كامل (16 بايت).
  • Manufacturer Specific Data (0xFF) هو نوع مرن لأي بيانات مخصصة للشركة المصنعة.

ما هو Advertising Data؟

Advertising Data هي مجموعة منظمة من الحقول التي يرسلها جهاز BLE في حزم الإعلانات لتحديد هويته ووصف قدراته. يقوم الجهاز المركزي (Central)، بمسح الأثير، بقراءة هذه البيانات واتخاذ قرار: الاتصال بالجهاز، أو تجاهله، أو طلب معلومات إضافية عبر Scan Response.

يتم تنظيم البيانات وفق مبدأ TLV (Type-Length-Value): كل عنصر AD يتكون من ثلاثة حقول. Length (1 بايت) هو طول Value + Type (أي الطول الإجمالي للعنصر ناقص 1 بايت للطول). Type (1 بايت) هو معرف نوع البيانات من Bluetooth Assigned Numbers. Value (N بايت) هو المحتوى حسب النوع.

يمكن أن تحتوي حزمة الإعلانات القياسية على ما يصل إلى 31 بايت من بيانات AD. إذا لم يكن ذلك كافياً، يتم استخدام Scan Response (31 بايت أخرى) أو Extended Advertising (BLE 5.0، حتى 251 بايت). البايتات الأولى من حزمة الإعلانات محجوزة لرأس PDU وعنوان الجهاز — يبدأ حمولة AD من إزاحة.

تنسيق AD Structure

كل عنصر AD في حزمة الإعلانات يبدأ بحقل Length (1 بايت). تشير قيمة Length إلى عدد البايتات التالية بعد Length — أي Type + Value. على سبيل المثال، عنصر بطول 3 يعني أنه بعد Length يوجد 1 بايت من Type و 2 بايت من Value. تنتهي الحزمة عندما يصل مجموع أطوال جميع العناصر إلى حجم بيانات الإعلان.

الحقلالحجمالوصف
Length1 بايتطول Type + Value (باستثناء Length)
Type (AD Type)1 بايتمعرف نوع البيانات من Bluetooth SIG
Value0–29 بايتبيانات النوع المحدد

يقوم محلل Central بقراءة تسلسل عناصر AD بدءاً من أول بايت بعد الرأس. إذا كان Length=0، يتم تجاهل العنصر وينتقل المحلل إلى البايت التالي. أنواع AD المكررة — عدة عناصر بنفس النوع في حزمة واحدة — مسموح بها، لكن قد يعالج Central الأول أو الأخير فقط حسب تنفيذ المكدس.

قاعدة مهمة: يجب ألا يتجاوز مجموع Length(+1) في الحزمة حجم بيانات الإعلان (31 بايت لـ advertising PDU). إذا كانت البيانات لا تتسع، يجب تحديد الأولويات — أي أنواع AD ضرورية للاكتشاف الأولي وأيها يمكن نقلها إلى Scan Response.

Flags (0x01): نوع AD إلزامي

Flags (AD Type 0x01) هو عنصر إلزامي في حزمة الإعلانات لأي جهاز BLE. يشغل 3 بايتات: Length (0x02)، Type (0x01)، Value (1 بايت من الأعلام الثنائية). تحدد الأعلام أوضاع الاكتشاف وقدرات الجهاز. توصي Core Specification بتضمين Flags في كل حزمة إعلانات.

الأعلام الرئيسية: LE Limited Discoverable Mode (بت 0) — الجهاز قابل للاكتشاف لفترة محدودة، LE General Discoverable Mode (بت 1) — الجهاز قابل للاكتشاف دائماً، BR/EDR Not Supported (بت 2) — الجهاز يدعم LE فقط، Simultaneous LE and BR/EDR (بت 3) — يدعم كلا الوضعين. للأجهزة التي تعمل بـ BLE فقط، التركيبة الإلزامية هي LE General Discoverable + BR/EDR Not Supported.

قيمة Flags غير الصحيحة هي أحد الأسباب الشائعة لعدم اكتشاف الجهاز في iOS أو Android. على سبيل المثال، إذا لم يتم تعيين علم BR/EDR Not Supported، قد يحاول iOS الاتصال عبر Bluetooth الكلاسيكي بدلاً من BLE. تحقق من قيمة Flags عند تصحيح حزمة الإعلانات باستخدام محلل Bluetooth (nRF Connect, Wireshark).

Local Name: اسم الجهاز

Local Name (AD Type 0x08 أو 0x09) هو الاسم المعروض لجهاز BLE. النوع 0x08 (Shortened Local Name) — اسم مختصر، يُستخدم عندما لا يتسع الاسم الكامل في حزمة الإعلانات. النوع 0x09 (Complete Local Name) — الاسم الكامل للجهاز. الحد الأقصى لطول الاسم هو 248 بايت، لكن في حزمة الإعلانات القياسية يتوفر ما لا يزيد عن 28 بايت.

إذا تجاوز اسم الجهاز المساحة المتاحة في حزمة الإعلانات، يُوصى بوضع الاسم المختصر في advertising PDU (نوع 0x08)، والاسم الكامل في Scan Response (نوع 0x09). يعرض iOS الاسم من حزمة الإعلانات أثناء المسح، بينما يصبح الاسم الكامل متاحاً بعد الاتصال أو Scan Response.

عند اختيار اسم الجهاز، ضع في اعتبارك: الاسم الطويل جداً يشغل مساحة يمكن استخدامها لـ Service UUID أو بيانات مهمة أخرى. طول الاسم الموصى به هو 8–16 حرفاً. تجنب الأحرف غير القياسية والمسافات — قد تتعامل بعض مكدسات BLE معها بشكل غير صحيح.

Service UUID: تعريف الخدمات

Service UUID (AD Type 0x02–0x07) هو أحد أهم أنواع AD، حيث يسمح لـ Central بتحديد الخدمات التي يوفرها الجهاز دون الاتصال به. يحدد Bluetooth SIG عدة تنسيقات لإرسال UUID حسب الحجم: 0x02 (Incomplete 16-bit)، 0x03 (Complete 16-bit)، 0x04 (Incomplete 32-bit)، 0x05 (Complete 32-bit)، 0x06 (Incomplete 128-bit)، 0x07 (Complete 128-bit).

UUID 16 بت (2 بايت) — للخدمات القياسية من Bluetooth SIG، مثلاً 0x180F (Battery Service)، 0x180A (Device Information). UUID 128 بت (16 بايت) — للخدمات المخصصة التي يحددها المطور. UUID 16 بت يشغل فقط 4 بايتات في AD (Length + Type + 2 بايت UUID)، بينما UUID 128 بت يشغل 18 بايت. إذا كان يجب إرسال عدة UUID مخصصة في حزمة واحدة، فقد لا تتسع في 31 بايت.

يُوصى باستخدام النوع Incomplete (0x02/0x04/0x06) إذا لم يتم إرسال جميع UUID للجهاز، بل فقط الأكثر أهمية للتصفية. يتم إرسال القائمة الكاملة لـ UUID عبر Scan Response أو GATT Discovery بعد الاتصال. هذا يوفر مساحة في حزمة الإعلانات لأنواع AD الأخرى.

Manufacturer Specific Data

Manufacturer Specific Data (AD Type 0xFF) هو أكثر أنواع AD مرونة، مصمم لنقل البيانات المخصصة للشركة المصنعة. أول 2 بايت من Value هما Company Identifier Code المعين من Bluetooth SIG (مثلاً 0x004C لـ Apple، 0x0075 لـ Samsung). البايتات المتبقية هي بيانات عشوائية بتنسيق تحدده الشركة المصنعة.

تستخدم Apple Manufacturer Data لـ iBeacon: Company ID (0x004C)، نوع المنارة (0x0215)، UUID (16 بايت)، Major (2 بايت)، Minor (2 بايت)، TX Power (1 بايت). تستخدم Google تنسيقاً مشابهاً لـ Eddystone. غالباً ما يضع مصنعو أجهزة إنترنت الأشياء قراءات المستشعرات أو حالة الجهاز في Manufacturer Data.

js
// Parse Manufacturer Specific Data on Central
function parseManufacturerData(data) {
    const view = new DataView(data.buffer);

    // Company Identifier Code (first 2 bytes)
    const companyId = view.getUint16(0, true);

    // Check for Apple iBeacon
    if (companyId === 0x004C) {
        return parseIBeacon(view);
    }

    return null;
}

عند استخدام Manufacturer Data، من المهم مراعاة الحد الأقصى للحجم: 31 بايت لحزمة الإعلانات بأكملها مطروحاً منها أنواع AD الإلزامية. بالنسبة لـ Apple iBeacon، تشغل الحزمة بأكملها 30 بايت، تاركة مساحة فقط لـ Flags (3 بايت). بالنسبة لـ Eddystone — حتى 31 بايت. يمكن أن تتضمن التنسيقات المخصصة المدمجة درجة الحرارة أو الرطوبة أو الضغط في 4–8 بايت.

استراتيجية حزم البيانات

التعبئة الصحيحة لـ advertising data هي فن وضع أقصى قدر من المعلومات المفيدة في المساحة المحدودة البالغة 31 بايت. تعتمد الاستراتيجية على غرض الجهاز: المنارة تحتاج إلى معرف، مستشعر إنترنت الأشياء يحتاج إلى قراءات، متتبع اللياقة البدنية يحتاج إلى اسم و UUID للخدمات. المبدأ العام: كلما كان على Central اتخاذ قرار أسرع، كلما كانت البيانات更需要 تواجدها في advertising PDU.

الاستراتيجية الموصى بها: advertising PDU (أول 31 بايت) — Flags (3 بايت) + Service UUID واحد 16 بت (4 بايت) + اسم مختصر (حتى 12 حرفاً = 14 بايت) + Manufacturer Data (حتى 10 بايت). Scan Response (ثاني 31 بايت) — الاسم الكامل (المتبقي) + Service UUID إضافية + TX Power Level (3 بايت). هذا التوزيع يسمح لـ Central بتصفية الأجهزة بسرعة حسب UUID.

الأولويةنوع ADالحجميوضع في
1 (إلزامي)Flags (0x01)3 بايتAdvertising PDU
2 (تصفية)Service UUID (0x02–0x03)4+ بايتAdvertising PDU
3 (تعريف)Local Name (0x08–0x09)2+ بايتAdvertising PDU (مختصر)
4 (إضافي)TX Power Level (0x0A)3 بايتScan Response
5 (مخصص)Manufacturer Data (0xFF)4+ بايتAdvertising PDU / Scan Response
6 (بيانات كاملة)UUID المتبقيةحسب الحجمScan Response

تصحيح advertising data هو مرحلة إلزامية في تطوير أجهزة BLE. استخدم nRF Connect (Nordic Semiconductor) أو Wireshark مع محلل Bluetooth لعرض البيانات الخام للحزمة. تحقق من أن جميع أنواع AD لها Length صحيح، وأن مجموع الأطوال لا يتجاوز 31 بايت، وأن Flags مضبوطة بشكل صحيح لحالة الاستخدام الخاصة بك.

الأسئلة الشائعة

ماذا يحدث إذا تجاوز مجموع عناصر AD 31 بايت؟

سيقوم مكدس Bluetooth Controller بتجاهل البيانات التي تتجاوز الحد أو لن يرسل الحزمة. تحقق من الطول الإجمالي لعناصر AD عند تجميع حزمة الإعلانات. إذا كانت البيانات لا تتسع، انقل جزءاً منها إلى Scan Response أو استخدم Extended Advertising (BLE 5.0) بحد 251 بايت.

هل يمكن إرسال قراءات المستشعرات في حزمة إعلانات؟

نعم، عبر Manufacturer Specific Data (0xFF). قم بتغليف القراءات في 4–8 بايت: مثلاً درجة الحرارة (2 بايت بتنسيق fixed-point)، الرطوبة (2 بايت)، جهد البطارية (2 بايت). هذا النهج يسمح لـ Central بقراءة البيانات دون اتصال، مما يوفر الطاقة.

ما نوع AD الذي يجب استخدامه للخدمات المخصصة؟

للخدمات المخصصة، استخدم UUID 128 بت (AD Type 0x06–0x07). إذا كان UUID لا يتسع في advertising PDU (16 بايت لكل UUID)، انقله إلى Scan Response أو استخدم التنسيق المختصر Incomplete (0x06) لتحديد أول UUID أو اثنين فقط.

ما الفرق بين أنواع Complete و Incomplete لـ Service UUID؟

Complete — في الحزمة يتم إدراج جميع UUID لخدمات الجهاز. Incomplete — جزء فقط من UUID (عادةً الأكثر أهمية). لا يمكن لـ Central الاعتماد على Incomplete كقائمة كاملة، لكنه يستخدمها للتصفية السريعة. القائمة الكاملة متاحة بعد GATT Discovery.

لماذا لا يرى iOS جهاز BLE الخاص بي؟

سبب شائع هو Flags (0x01) غير صحيح. تأكد من تعيين بت BR/EDR Not Supported. السبب الثاني هو عدم وجود Service UUID في حزمة الإعلانات (iOS يقوم بالتصفية حسب UUID). السبب الثالث هو أن الجهاز يعلن بشكل نادر جداً (iOS يتوقع فاصل زمني لا يزيد عن 1000 مللي ثانية).

الملخص

  • Advertising Data هي بيانات منظمة بتنسيق AD Structure (Length-Type-Value)، تُرسل في حزم إعلانات BLE.
  • تحتوي حزمة الإعلانات القياسية على ما يصل إلى 31 بايت من البيانات، ويوفر Scan Response 31 بايت إضافية للمعلومات الإضافية.
  • Flags (0x01) هو نوع AD إلزامي يحدد أوضاع الاكتشاف. BR/EDR Not Supported إلزامي لأجهزة BLE.
  • يتم إرسال Service UUID بتنسيق 16 بت (2 بايت) أو 128 بت (16 بايت)، Complete أو Incomplete حسب المساحة المتاحة.
  • Manufacturer Specific Data (0xFF) هو نوع مرن للبيانات المخصصة، يُستخدم في منارات iBeacon و Eddystone وأجهزة إنترنت الأشياء.
  • استراتيجية التعبئة: أنواع AD الإلزامية (Flags، Service UUID، الاسم المختصر) في advertising PDU، والإضافية في Scan Response.
  • تصحيح advertising data باستخدام nRF Connect أو Wireshark — مرحلة تطوير إلزامية للتحقق من صحة بنية AD.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا