اختَر واجهة برمجة التطبيقات المناسبة للتواصل مع جهاز من اختيارك.
يهدف هذا الدليل إلى مساعدتك في اختيار أفضل واجهة برمجة تطبيقات للتواصل مع جهاز (مثل كاميرا الويب والميكروفون وما إلى ذلك) على الويب. أعني بكلمة "الأفضل" أنه يمنحك كل ما تحتاجه بأقل قدر من العمل. بعبارة أخرى، أنت تعرف حالة الاستخدام العامة التي تريد حلّها (مثل الوصول إلى الفيديو) ولكنك لا تعرف واجهة برمجة التطبيقات التي يجب استخدامها أو تتساءل عما إذا كانت هناك طريقة أخرى لتحقيق ذلك.
من المشاكل الشائعة التي يقع فيها مطوّرو تطبيقات الويب هي الانتقال إلى واجهات برمجة التطبيقات ذات المستوى المنخفض بدون التعرّف على واجهات برمجة التطبيقات ذات المستوى الأعلى التي يسهل تنفيذها وتوفّر تجربة مستخدم أفضل. لذلك، يبدأ هذا الدليل باقتراح واجهات برمجة التطبيقات ذات المستوى الأعلى أولاً، ولكنه يذكر أيضًا واجهات برمجة التطبيقات ذات المستوى الأدنى في حال تبيّن لك أنّ واجهة برمجة التطبيقات ذات المستوى الأعلى لا تلبي احتياجاتك.
🕹 تلقّي أحداث الإدخال من هذا الجهاز
جرِّب الاستماع إلى أحداث لوحة المفاتيح والمؤشر. إذا كان هذا الجهاز عبارة عن ذراع تحكّم في الألعاب، استخدِم Gamepad API لمعرفة الأزرار التي يتم الضغط عليها والمحاور التي يتم تحريكها.
إذا لم تنجح أي من هذه الخيارات، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحل. يمكنك الاطّلاع على التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
📸 الوصول إلى الصوت والفيديو من هذا الجهاز
استخدِم MediaDevices.getUserMedia() للحصول على أحداث بث مباشر للصوت والفيديو من هذا الجهاز والتعرّف على تسجيل الصوت والفيديو. يمكنك أيضًا التحكّم في تحريك الكاميرا وإمالتها وتكبيرها، وإعدادات الكاميرا الأخرى مثل السطوع والتباين، وحتى التقاط صور ثابتة. يمكن استخدام Web Audio لإضافة تأثيرات إلى الصوت أو إنشاء مؤثرات بصرية صوتية أو تطبيق تأثيرات مكانية (مثل التحريك). يمكنك أيضًا الاطّلاع على كيفية تحليل أداء تطبيقات Web Audio في Chrome.
إذا لم تنجح أي من هذه الخيارات، قد تكون واجهة برمجة التطبيقات ذات المستوى المنخفض هي الحل. يمكنك الاطّلاع على التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🖨 الطباعة على هذا الجهاز
استخدِم window.print() لفتح مربّع حوار في المتصفّح يتيح للمستخدم اختيار هذا الجهاز كوجهة لطباعة المستند الحالي.
إذا لم تنجح هذه الطريقة، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحل. يمكنك الاطّلاع على مقالة التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🔐 المصادقة باستخدام هذا الجهاز
استخدِم WebAuthn لإنشاء بيانات اعتماد مفتاح عام قوية وموثوقة ومحدّدة المصدر باستخدام جهاز الأمان هذا لمصادقة المستخدمين. تتيح هذه الواجهة استخدام أدوات المصادقة التي تعمل بتقنية البلوتوث أو NFC أو USB-roaming U2F أو FIDO2، والمعروفة أيضًا باسم مفاتيح الأمان، بالإضافة إلى أداة مصادقة النظام الأساسي التي تتيح للمستخدمين المصادقة باستخدام بصمات أصابعهم أو أقفال الشاشة. يمكنك الاطّلاع على إنشاء أول تطبيق WebAuthn.
إذا كان هذا الجهاز نوعًا آخر من أجهزة الأمان (مثل محفظة العملات المشفّرة)، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحلّ. يمكنك الاطّلاع على كيفية التواصل مع جهازك لبدء رحلتك.
🗄 الوصول إلى الملفات على هذا الجهاز
استخدِم File System Access API لقراءة التغييرات وحفظها مباشرةً في الملفات والمجلدات على جهاز المستخدم. إذا لم تكن متاحة، استخدِم File API لطلب اختيار ملفات محلية من مربّع حوار في المتصفّح من المستخدم، ثم قراءة محتوى هذه الملفات.
إذا لم تنجح أي من هذه الخيارات، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحل. يمكنك الاطّلاع على التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🧲 الوصول إلى أدوات الاستشعار على هذا الجهاز
استخدِم Generic Sensor API لقراءة قيم أجهزة الاستشعار الأولية من أجهزة استشعار الحركة (مثل مقياس التسارع أو الجيروسكوب) وأجهزة الاستشعار البيئية (مثل الضوء المحيط ومقياس المغناطيسية). وإذا لم تكن متاحة، استخدِم أحداث DeviceMotion وDeviceOrientation للوصول إلى مقياس التسارع والجيروسكوب والبوصلة المضمّنة في الأجهزة الجوّالة.
إذا لم تنجح هذه الطريقة، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحل. يمكنك الاطّلاع على مقالة التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🛰 الوصول إلى إحداثيات نظام تحديد المواقع العالمي (GPS) على هذا الجهاز
استخدِم Geolocation API للحصول على خطوط العرض والطول للموقع الجغرافي الحالي للمستخدم على هذا الجهاز.
إذا لم تنجح هذه الطريقة، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحل. يمكنك الاطّلاع على مقالة التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🔋 التحقّق من بطارية هذا الجهاز
استخدِم Battery API للحصول على معلومات المضيف حول مستوى شحن البطارية وتلقّي إشعارات عند تغيُّر مستوى البطارية أو حالة الشحن.
إذا لم تنجح هذه الطريقة، قد تكون واجهة برمجة التطبيقات المنخفضة المستوى هي الحل. يمكنك الاطّلاع على مقالة التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
📞 التواصل مع هذا الجهاز عبر الشبكة
في الشبكة المحلية، استخدِم Remote Playback API لبث الصوت و/أو الفيديو على جهاز تشغيل عن بُعد (مثل تلفزيون ذكي أو مكبّر صوت لاسلكي) أو استخدِم Presentation API لعرض صفحة ويب على شاشة ثانية (مثل شاشة ثانوية متصلة بكابل HDMI أو تلفزيون ذكي متصل لاسلكيًا).
إذا كان هذا الجهاز يعرض خادم ويب، استخدِم واجهة برمجة التطبيقات Fetch API و/أو WebSockets لجلب بعض البيانات من هذا الجهاز من خلال الوصول إلى نقاط النهاية المناسبة. على الرغم من أنّ مآخذ TCP وUDP غير متاحة على الويب، يمكنك الاطّلاع على WebTransport للتعامل مع اتصالات الشبكة التفاعلية والثنائية الاتجاه والمتعددة. يُرجى العِلم أنّه يمكن أيضًا استخدام WebRTC لنقل البيانات في الوقت الفعلي مع المتصفّحات الأخرى باستخدام بروتوكول الند للند.
🧱 تعرَّف على كيفية التواصل مع جهازك
يتم تحديد واجهة برمجة التطبيقات المنخفضة المستوى التي يجب استخدامها حسب طبيعة اتصالك الفعلي بالجهاز. إذا كان الجهاز لاسلكيًا، يمكنك الاطّلاع على Web NFC للاتصالات اللاسلكية القصيرة المدى، وWeb Bluetooth أو Web Serial للأجهزة اللاسلكية القريبة.
باستخدام Web NFC، يمكنك القراءة والكتابة على هذا الجهاز عندما يكون قريبًا من جهاز المستخدم (عادةً من 5 إلى 10 سم أو من 2 إلى 4 بوصات). تتيح لك أدوات مثل NFC TagInfo من NXP تصفُّح محتوى هذا الجهاز لأغراض الهندسة العكسية.
باستخدام Web Bluetooth، يمكنك الاتصال بهذا الجهاز عبر اتصال بلوتوث منخفض الطاقة. من المفترض أن يكون من السهل جدًا التواصل مع الجهاز عندما يستخدم خدمات GATT العادية التي تتوافق مع تقنية البلوتوث (مثل خدمة البطارية) لأنّ سلوكها موثَّق جيدًا. إذا لم يكن الأمر كذلك، فعليك في هذه المرحلة إما العثور على بعض وثائق الأجهزة لهذا الجهاز أو إجراء هندسة عكسية له. يمكنك استخدام أدوات خارجية، مثل nRF Connect for Mobile، وأدوات المتصفّح المضمّنة، مثل الصفحة الداخلية
about://bluetooth-internalsفي المتصفّحات المستندة إلى Chromium. يمكنك الاطّلاع على الهندسة العكسية لمصباح بلوتوث من Uri Shaked. يُرجى العِلم أنّ الأجهزة التي تتضمّن بلوتوث قد تستخدم أيضًا بروتوكولات HID أو بروتوكولات التسلسل.باستخدام المنفذ التسلسلي عبر البلوتوث، يمكنك التواصل مع خدمات RFCOMM على الأجهزة المقترنة التي تتضمّن تقنية Bluetooth Classic، مثل ملف المنفذ التسلسلي (SPP) الموحّد. أما بالنسبة إلى الخدمات المخصّصة المستندة إلى RFCOMM، فعليك الرجوع إلى مستندات مورّد الجهاز للحصول على معرّف UUID للخدمة من أجل تمريره إلى
requestPort().
إذا كان الجهاز سلكيًا، اطّلِع على واجهات برمجة التطبيقات هذه بالترتيب التالي:
باستخدام WebHID، يمكنك فهم تقارير HID وأدوات وصف التقارير من خلال المجموعات، وهو أمر أساسي لفهم هذا الجهاز. قد يكون هذا صعبًا بدون وثائق المورد لهذا الجهاز. يمكن أن تساعدك أدوات مثل Wireshark في إجراء هندسة عكسية له. يمكنك أيضًا استخدام تطبيق الويب HID Explorer لتفريغ معلومات أجهزة HID بتنسيق يمكن لشخص عادي قراءته.
باستخدام Web Serial، وبدون مستندات المورّد لهذا الجهاز والأوامر التي يتيحها هذا الجهاز، يكون الأمر صعبًا ولكن لا يزال ممكنًا من خلال التخمين المحظوظ. يمكن إجراء هندسة عكسية لهذا الجهاز من خلال التقاط حركة مرور USB الأولية باستخدام أدوات مثل Wireshark. يمكنك أيضًا استخدام تطبيق الويب Serial Terminal لتجربة هذا الجهاز إذا كان يستخدم بروتوكولاً يمكن لشخص عادي قراءته.
باستخدام WebUSB، وبدون مستندات واضحة لهذا الجهاز وأوامر USB التي يتيحها، سيكون الأمر صعبًا ولكنّه ممكن من خلال التخمين. شاهِد فيديو استكشاف WebUSB وإمكاناته الرائعة من سوز هينتون. يمكنك أيضًا إجراء هندسة عكسية لهذا الجهاز من خلال تسجيل حركة بيانات USB الأولية وفحص أوصاف USB باستخدام أدوات خارجية مثل Wireshark وأدوات المتصفّح المضمّنة، مثل الصفحة الداخلية
about://usb-internalsفي المتصفّحات المستندة إلى Chromium.
الإقرارات
نشكر رايلي غرانت وتوماس شتاينر وكايسي باسك على مراجعة هذه المقالة.