L'audio dei media protetti non viene riprodotto su Safari al primo clic

Finora è stata un’avventura… sono riuscito a configurare il debug remoto tra Chrome sulla mia macchina Ubuntu e Safari iOS sul mio iPhone, con molte difficoltà. Tuttavia, in modo fastidioso, la scheda Rete è vuota, il che è piuttosto la più importante in questo caso.

Ho scoperto che impostare preload="metadata" fa sì che l’audio venga riprodotto al primo clic in Safari iOS, mentre se è impostato su preload="none" è necessaria una sequenza di Riproduci > Pausa > Riproduci per far partire effettivamente l’audio.

Ho provato anche con il tag video e sembra che esista un problema simile.

Il passaggio a preload="none" è stato effettuato a causa del tuo rapporto di bug qui: Secure media uploads expire. Ci troviamo ora in una sorta di zona crepuscolare fastidiosa, perché riportare preload a metadata reintrodurrebbe il problema sopra descritto. Abbiamo recentemente aumentato la scadenza delle URL firmate a 5 minuti: FIX: Increase time of DOWNLOAD_URL_EXPIRES_AFTER_SECONDS to 5 minutes by martin-brennan · Pull Request #10160 · discourse/discourse · GitHub, quindi il bug originale sarà meno problematico ora… ma rimarrà comunque un problema.

Sto ancora riflettendo e sperimentando… non sono sicuro che possiamo avere il meglio da entrambi i mondi. Non è un’esperienza ideale per i media sicuri richiedere più clic per essere visualizzati.

Modifica: sono riuscito a far funzionare la scheda Rete del mio debugger. Un esempio sulla nostra istanza interna di Discourse per un tag audio con preload="none":

  1. Premi Riproduci: GET /secure-media-uploads/dev/original/4X/6/1/8/618a6b19a07de18205cc9889cb604e414b30372b.mp3 che restituisce uno stato di Completato

  2. Premi Pausa.

  3. Premi Riproduci: GET presigned_url_here che restituisce uno stato di 206 Partial Content, e l’audio viene caricato correttamente.

La cosa strana è che con preload=“metadata” otteniamo esattamente la stessa sequenza di richieste, ma con un solo clic su Riproduci. È come se Safari recuperasse i metadati al primo clic su Riproduci, per poi aver bisogno di una pausa e di un nuovo clic su Riproduci per far partire l’audio.

Non sono sicuro che questo accada anche su altri dispositivi, ad esempio Android? Non ho un dispositivo con cui fare test lì.