لقد كانت هذه مغامرة حتى الآن.. لقد تمكنت من إعداد تصحيح الأخطاء عن بُعد بين متصفح Chrome على جهاز Ubuntu الخاص بي ومتصفح Safari على iOS في هاتفي iPhone، رغم الكثير من الصعوبات. ومع ذلك، وبشكل مزعج، فإن تبويب الشبكة (Network tab) فارغ، وهو الأهم على الأرجح في هذه الحالة.
لقد اكتشفت أن تعيين preload="metadata" يجعل الصوت يعمل عند النقر الأول في متصفح Safari على iOS، بينما إذا تم تعيينه إلى preload="none"، فإن الأمر يتطلب تسلسلاً من التشغيل > الإيقاف المؤقت > التشغيل مرة أخرى لتشغيل الصوت فعليًا.
لقد جربت ذلك مع video ويبدو أن مشكلة مماثلة موجودة.
تم التغيير إلى preload="none" بسبب تقرير الخطأ الخاص بك هنا Secure media uploads expire. نحن الآن في منطقة غريبة ومزعجة نوعًا ما، لأن إعادة تعيين preload إلى metadata سيعيد إدخال المشكلة المذكورة أعلاه. لقد قمنا مؤخرًا بزيادة مدة صلاحية عناوين URL الموقعة مسبقًا إلى 5 دقائق https://github.com/discourse/discourse/pull/10160، لذا فإن الخطأ الأصلي سيكون أقل مشكلة الآن… لكنه لا يزال مشكلة.
ما زلت أفكر في هذا الأمر وأقوم بتجربة أشياء مختلفة… لست متأكدًا مما إذا كان بإمكاننا الجمع بين أفضل ما في العالمين هنا. إنه ليس تجربة مثالية للوسائط الآمنة التي تتطلب نقرات متعددة لعرضها.
تعديل: لقد نجحت في جعل تبويب الشبكة في أداة التصحيح الخاصة بي يعمل. مثال على مثيل Discourse الداخلي لدينا لوسم audio مع preload="none":
-
اضغط على التشغيل: GET /secure-media-uploads/dev/original/4X/6/1/8/618a6b19a07de18205cc9889cb604e414b30372b.mp3 والتي تعيد حالة Finished
-
اضغط على الإيقاف المؤقت.
-
اضغط على التشغيل مرة أخرى: GET
presigned_url_hereوالتي تعيد حالة 206 Partial Content، ويتم تحميل الصوت بشكل صحيح.
المثير للاهتمام هنا هو أنه مع preload=“metadata” نحصل على نفس تسلسل الطلبات تمامًا، مع نقر تشغيل واحدة فقط. يبدو أن Safari يجلب البيانات الوصفية عند النقر الأول على التشغيل، ثم يحتاج إلى إيقاف مؤقت وتشغيل مرة أخرى لتشغيل الصوت.
لست متأكدًا مما إذا كان هذا يحدث على أجهزة أخرى مثل Android؟ لا أملك جهازًا للتجربة هناك.