اختَر واجهة برمجة التطبيقات المناسبة للتواصل مع جهاز من اختيارك.
يهدف هذا الدليل إلى مساعدتك في اختيار أفضل واجهة برمجة تطبيقات للتواصل مع جهاز أجهزة (مثل كاميرا الويب والميكروفون وما إلى ذلك) على الويب. نقصد بكلمة "أفضل" أنّه يمنحك كل ما تحتاجه بأقل قدر من العمل. بعبارة أخرى، أنت تعرف حالة الاستخدام العامة التي تريد حلّها (مثل الوصول إلى الفيديو) ولكنك لا تعرف واجهة برمجة التطبيقات التي تريد استخدامها أو تتساءل عما إذا كانت هناك طريقة أخرى لتحقيق ذلك.
من المشاكل الشائعة التي يواجهها مطوّرو الويب هي الانتقال إلى استخدام واجهات برمجة التطبيقات ذات المستوى الأدنى بدون التعرّف على واجهات برمجة التطبيقات ذات المستوى الأعلى التي يسهل تنفيذها وتوفير تجربة مستخدم أفضل. لذلك، يبدأ هذا الدليل باقتراح واجهات برمجة التطبيقات ذات المستوى الأعلى أولاً، ولكنه يشير أيضًا إلى واجهات برمجة التطبيقات ذات المستوى الأدنى في حال تحديد أنّ واجهة برمجة التطبيقات ذات المستوى الأعلى لا تلبي احتياجاتك.
🕹 تلقّي أحداث الإدخال من هذا الجهاز
حاوِل الاستماع إلى أحداث لوحة المفاتيح والمؤشر. إذا كان هذا الجهاز جهاز التحكّم في الألعاب، استخدِم Gamepad API لمعرفة الأزرار التي يتم الضغط عليها والمحاور التي تم تحريكها.
إذا لم تنجح أي من هذه الخيارات، قد تكون واجهة برمجة تطبيقات من المستوى الأدنى هي الحلّ. اطّلِع على التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
📸 الوصول إلى الصوت والفيديو من هذا الجهاز
استخدِم MediaDevices.getUserMedia() للحصول على بث مباشر للصوت والفيديو من هذا الجهاز والتعرّف على تسجيل الصوت والفيديو. يمكنك أيضًا التحكّم في العرض الشامل للصورة في الكاميرا وإمالتها وتكبيرها/تصغيرها وإعدادات الكاميرا الأخرى، مثل السطوع و التباين، بالإضافة إلى التقاط صور ثابتة. يمكن استخدام Web Audio لإضافة تأثيرات إلى الصوت أو إنشاء عروض مرئية للصوت أو تطبيق تأثيرات مكانية (مثل التمويه). يمكنك أيضًا الاطّلاع على كيفية تحليل أداء تطبيقات Web Audio في Chrome.
إذا لم ينجح أيّ من هذه الخيارات، قد تكون واجهة برمجة تطبيقات من المستوى الأدنى هي الحلّ. اطّلِع على التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🖨 الطباعة على هذا الجهاز
استخدِم window.print() لفتح مربّع حوار في المتصفّح يتيح للمستخدم اختيار هذا الجهاز كوجهة لطباعة المستند الحالي.
إذا لم تنجح هذه الطريقة، قد يكون الحلّ هو استخدام واجهة برمجة تطبيقات منخفضة المستوى. اطّلِع على مقالة التعرّف على كيفية التواصل مع جهازك لبدء رحلتك.
🔐 المصادقة باستخدام هذا الجهاز
استخدِم WebAuthn لإنشاء اعتماد مفتاح عام قوي وموثوق به على مستوى المصدر باستخدام جهاز الأمان هذا للمصادقة على المستخدمين. تتيح هذه الميزة استخدام مصادقة U2F أو FIDO2 عبر البلوتوث وNFC وUSB، والتي تُعرف أيضًا باسم مفاتيح الأمان، بالإضافة إلى مصادقة النظام الأساسي التي تتيح للمستخدمين المصادقة باستخدام بصمات أصابعهم أو قفل الشاشة. راجِع مقالة إنشاء تطبيق 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 لهذا الغرض. اطّلِع على مقالة الهندسة العكسية لمصباح بلوتوث من penned 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 وإمكانياته المثيرة من Suz Hinton. يمكنك أيضًا إجراء هندسة عكسية لهذا الجهاز من خلال تسجيل ملفات بيانات USB الأوّلية وفحصها باستخدام أدوات خارجية مثل Wireshark وأدوات المتصفّح المضمّنة، مثل الصفحة الداخلية
about://usb-internals
في المتصفّحات المستندة إلى Chromium.
الشكر والتقدير
نشكر Reilly Grant وThomas Steiner وKayce Basques على مراجعة هذه المقالة.
الصورة مقدمة من Darya Tryfanava على Unsplash.