موقعك الإلكتروني يمكنه الاهتزاز الآن... (Web Haptics)

BBetter Stack
Computing/SoftwareCell PhonesInternet Technology

Transcript

00:00:00لقد عثرت للتو على مكتبة برمجية رائعة تضيف تفصيلاً صغيراً ولكنه مذهل لمواقعكم
00:00:04لم أكن أعلم حتى أنني أريده إلا الآن.
00:00:07تقوم WebHaptics بما تعد به تماماً، حيث تسمح لمواقعكم باستخدام
00:00:11ردود الفعل اللمسية (haptic feedback) سواء على أندرويد أو iOS، مما يجعلها
00:00:15تبدو كأنها تطبيق أصلي (native) وبطريقة نظيفة وبسيطة للغاية، فهي حرفياً مجرد
00:00:20دالة واحدة فقط.
00:00:21ويبدو أنني لست الوحيد الذي يرى هذا رائعاً، فهي رائجة بشكل كبير
00:00:24على تويتر، ويبدو أن Polymarket قد بدأت بالفعل في استخدام هذه المكتبة.
00:00:29لذا دعونا نتعمق ونرى سبب كل هذا الضجيج، ونتحدث أيضاً قليلاً عن كيفية
00:00:33عملها، حيث أن المكتبة تستخدم حيلة ذكية جداً لتشغيلها على نظام iOS.
00:00:43الآن، من الصعب عليّ طبعاً أن أريكم ما تفعله هذه المكتبة بالضبط لأنها
00:00:46اهتزاز فيزيائي لهواتفكم، لكنها تشبه تماماً تلك التي تشعرون بها عند النقر
00:00:50على زر الاشتراك في تطبيق يوتيوب، ولكن إذا كنتم مشتركين بالفعل وما زلتم تودون
00:00:54تجربتها، فإن موقع WebHaptics هو مكان ممتع جداً للقيام بذلك، لذا بعد مشاهدة
00:00:59هذا الفيديو، أوصي بشدة بالاطلاع عليه لأنه يعرض لكم بعض اللمسات الشائعة
00:01:02مثل حالات النجاح والخطأ، وبالطبع الاهتزاز عند النقر على الأزرار.
00:01:06كما يحتوي الموقع على محرّر رائع جداً لإنشاء أنماط اهتزاز خاصة بكم سنعود له
00:01:10بعد قليل.
00:01:11أما الآن فلنبدأ بكتابة الكود، وكما ترون فهي مكتبة npm بسيطة جداً ولديها
00:01:15حتى أدوات مساعدة لـ React و Vue و Svelte، ولكن يمكنكم طبعاً استخدام نسخة
00:01:19JavaScript التقليدية إذا أردتم، ودالة الـ trigger هذه ستكون هي نفسها في الجميع.
00:01:23في حالتي، سأستخدم React وكما ترون الكود بسيط للغاية، فكل ما علينا
00:01:24فعله هو استخدام الـ hook المسمى useWebHaptics ومنه نحصل على دالة trigger
00:01:28والتي يمكننا ربطها بشيء مثل الزر لتشغيل رد فعل لمسي.
00:01:32يمكنكم أيضاً أن تروا أننا نحصل من هذا الـ hook على دالة cancel لإلغاء أي
00:01:36رد فعل لمسي قيد التشغيل، وأيضاً قيمة boolean لـ isSupported حتى تتحققوا
00:01:39مما إذا كان المتصفح يدعم ردود الفعل اللمسية أم لا.
00:01:44بهذا الكود البسيط، هذا يعني أنه عندما أنقر على هذا الزر على جهاز أندرويد
00:01:45أو iOS، سيعطي اهتزازاً بسيطاً، لكنني حالياً أستخدم لابتوب لذا
00:01:48لن يحدث أي شيء.
00:01:53هناك طريقة بسيطة لنعرف أنها تعمل أثناء قيامنا بالتطوير
00:01:54وهي ضبط debug على true داخل الـ hook هنا، وهذا يعني ببساطة أنه عندما
00:01:57أنقر على الزر، سيصدر صوتاً يحاكي شكل رد الفعل اللمسي.
00:02:00وعندما يتعلق الأمر بتخصيص نمط الاهتزاز، فذلك أيضاً سهل للغاية ويمكننا
00:02:04القيام به في دالة الـ trigger.
00:02:05الطريقة الأولى هي استخدام بعض القوالب الجاهزة التي تأتي مع المكتبة، حيث يمكنك
00:02:09استيراد الأنماط الافتراضية، وستجد هناك قوالب مثل buzz، وerror، وheavy
00:02:10وغيرها الكثير، ويمكنك بالفعل تجربتها ومعرفة شعورها عبر الموقع الإلكتروني.
00:02:14أما الطريقة الثانية فهي عندما تريد نمط اهتزاز مخصصاً بالكامل، فكل ما عليك
00:02:18فعله هو تمرير مصفوفة (array) لدالة الـ trigger وتحديد اهتزازاتك فيها.
00:02:21حالياً لدي أربعة اهتزازات في هذا النمط، وكما ترون يمكنكم تعريف
00:02:22الاهتزاز بكائن (object) حيث نحدد التأخير (delay) وهو الوقت من آخر اهتزاز
00:02:25بالملي ثانية، ثم نحدد المدة (duration) بالملي ثانية لطول مدة الاهتزاز،
00:02:29وأيضاً قيمة الكثافة (intensity) حيث أن القيمة 1 هي أقوى اهتزاز.
00:02:33بهذا النمط الذي وضعته هنا، عندما أنقر على الزر، يمكنكم سماع ما سيصدر منه
00:02:37ولكن تخيلوا طبعاً أن هذا سيكون اهتزازاً في هاتف المستخدم.
00:02:41هناك حيلة جيدة لإنشاء أنماط اهتزاز مخصصة وهي استخدام الموقع الإلكتروني
00:02:46لأن لديهم محرراً رائعاً هنا حيث يمكنك النقر لإضافة اهتزاز جديد للمصفوفة،
00:02:49ويمكنك السحب لتغيير مدته، والسحب للأعلى والأسفل لتغيير الكثافة، وأيضاً النقر
00:02:53على تشغيل لسماع صوته، ويمكنكم استخدامه على الهاتف لتشعروا به فعلياً.
00:02:57كما قلت، من الصعب قليلاً عرض هذا في فيديو، ولكن أتمنى أن تكونوا قد
00:03:02أخذتم فكرة، إنها مكتبة بسيطة، ولكن ما أريد أن أريكم إياه الآن هو كيفية عملها
00:03:06لأن نظام iOS لم يجعل الأمر سهلاً.
00:03:09أول شيء يجب معرفته هو أن هناك بالفعل واجهة برمجة تطبيقات (API) من المفترض أن تتيح وظيفة
00:03:11الاهتزاز في الهاتف ببساطة عبر استخدام navigator.vibrate.
00:03:14لكن المشكلة هي أن هذا يعمل بشكل رائع على أندرويد، أما iOS فلا يدعمه مطلقاً.
00:03:19لكن لحسن الحظ، هناك طريقة أخرى للحصول على رد فعل لمسي على iOS وهي
00:03:21استخدام حقل إدخال (input) من نوع switch، فعندما ينقر المستخدم عليه في iOS يعطي رد فعل لمسياً.
00:03:24ما تفعله هذه المكتبة للاستفادة من ذلك هو أنه عندما نقوم بتشغيل الاهتزاز
00:03:27فإنها تقوم أساساً بالنقر على مفتاح (switch) غير مرئي يحاكي نمط الاهتزاز الخاص بنا،
00:03:32ونرى ذلك هنا في الأسفل مع خانة الاختيار هذه، فعندما أقوم بتشغيل رد الفعل
00:03:36فإنها تتحول بين التفعيل والإلغاء عدة مرات تماماً كما يفعل المفتاح في iOS.
00:03:41إذا أردت رؤية هذا المفتاح بنفسك أثناء تصحيح أخطاء تطبيقك، فكل ما عليك
00:03:44فعله في الـ hook هنا هو إضافة showSwitch في الإعدادات وضبطه على true.
00:03:49إذا ألقينا نظرة سريعة على كود المكتبة نفسها، ستتمكنون من رؤية ما تفعله.
00:03:53إذا كانت ردود الفعل مدعومة، فستستخدم دالة navigator.vibrate ببساطة
00:03:56لتشغيل نمط الاهتزاز، أما إذا لم تكن مدعومة، فستقوم هنا في الأسفل
00:03:59بالنقر على ذلك المفتاح، ولدينا أيضاً هذه الدالة هنا المسؤولة عن إنشاء
00:04:03نمط الاهتزاز فعلياً حيث تنقر على المفتاح عدة مرات كما نرى هنا.
00:04:06رأيت أن هذا حل ذكي جداً يستحق العرض، وأتمنى ألا تجد آبل
00:04:11طريقة لإغلاق هذه الثغرة، أو على الأقل إذا فعلوا ذلك أن يضيفوا دعماً
00:04:15لدالة vibrate.
00:04:19هذا كل ما يتعلق بهذه المكتبة تقريباً، لذا أخبروني في التعليقات بالأسفل إذا
00:04:23كان هذا شيئاً قد تستخدمونه، واشتركوا في القناة، وكما هو الحال دائماً نلتقي
00:04:27في الفيديو القادم.
00:04:31[موسيقى]

Key Takeaway

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

Highlights

مكتبة WebHaptics هي أداة برمجية بسيطة تتيح للمطورين إضافة اهتزازات لمسية للمواقع الإلكترونية.

تتميز المكتبة بدعمها لكل من نظامي أندرويد و iOS، مما يعطي شعور التطبيقات الأصلية للمتصفح.

تستخدم المكتبة حيلة تقنية ذكية لتفعيل الاهتزاز على iOS عبر محاكاة النقر على مفتاح switch غير مرئي.

توفر المكتبة أدوات مساعدة متوافقة مع أشهر إطارات العمل مثل React و Vue و Svelte.

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

تسمح خاصية debug للمطورين بسماع صوت يحاكي الاهتزاز أثناء العمل على أجهزة لا تدعم اللمس.

Timeline

مقدمة عن WebHaptics وأهميتها

يبدأ المتحدث بالتعريف بمكتبة WebHaptics التي اكتشفها مؤخراً، واصفاً إياها بأنها تضيف تفاصيل مذهلة لواجهة المستخدم. يوضح الفيديو أن هذه المكتبة تهدف إلى توفير ردود فعل لمسية (haptic feedback) نظيفة وبسيطة عبر دالة برمجية واحدة فقط. يتم الإشارة إلى أن منصات شهيرة مثل Polymarket بدأت بالفعل في تبني هذه التقنية نظراً لرواجها الكبير على منصة إكس (تويتر سابقاً). يركز هذا القسم على أن الميزة الأساسية هي جعل مواقع الويب تبدو وتشعر كأنها تطبيقات native بجهد برمجي بسيط جداً. يمهد المتحدث أيضاً للحديث عن الحيلة التقنية التي تستخدمها المكتبة للالتفاف على قيود نظام تشغيل iOS الخاص بشركة آبل.

تجربة المستخدم واستعراض أنماط الاهتزاز

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

التطبيق البرمجي والدمج مع React

ينتقل الفيديو إلى الجانب العملي حيث يشرح كيفية تثبيت المكتبة عبر npm واستخدامها في مشاريع React و Vue و Svelte. يستعرض المتحدث كوداً بسيطاً باستخدام hook يسمى useWebHaptics للحصول على دالة trigger المسؤولة عن تشغيل الاهتزاز. يتم شرح الدوال الإضافية مثل cancel لإيقاف الاهتزاز و isSupported للتحقق من توافق المتصفح قبل التنفيذ. يشرح المطور أيضاً ميزة debug التي تطلق صوتاً يحاكي الاهتزاز، مما يساعد المبرمجين الذين يعملون على أجهزة الكمبيوتر المحمول (Laptops) في اختبار منطق الكود. هذا القسم يثبت مدى سهولة دمج المكتبة في أي مشروع ويب حديث دون تعقيدات.

تخصيص الأنماط واستخدام المحرر

يشرح المتحدث طريقتين لتخصيص الاهتزاز، الأولى عبر استخدام قوالب جاهزة مثل buzz و heavy، والثانية عبر تعريف مصفوفة مخصصة. في المصفوفة المخصصة، يمكن للمطور تحديد زمن التأخير (delay)، ومدة الاهتزاز (duration)، والكثافة (intensity) حيث تمثل القيمة 1 القوة القصوى. يتم استعراض المحرر المرئي على الموقع الذي يسمح بسحب العناصر لتعديل المدة أو الكثافة وسماع النتيجة فوراً. يوضح المتحدث أن هذا المستوى من التحكم يسمح بخلق هوية بصرية وحسية فريدة لكل موقع إلكتروني. ينتهي القسم بالتأكيد على أن التجربة الفعلية على الهاتف هي أفضل وسيلة لتقدير دقة هذه الإعدادات.

كيفية العمل والحيلة التقنية لنظام iOS

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

Community Posts

No posts yet. Be the first to write about this video!

Write about this video