지금까지 꽤 모험적인 과정이었네요. 결국에는 Ubuntu 기기의 Chrome과 iPhone의 iOS Safari 간 원격 디버깅을 설정하는 데 성공했지만, 그 과정은 험난했습니다. 그러나 안타깝게도 Network 탭이 비어 있는데, 이 경우 가장 중요한 부분이 바로 이 탭이라 좀 짜증스럽습니다.
preload="metadata"로 설정하면 iOS Safari에서 첫 번째 클릭 시 오디오가 재생되는 것을 확인했습니다. 반면 preload="none"으로 설정하면 실제로 오디오를 재생하려면 Play > Pause > Play 순서를 거쳐야 합니다.
video 태그로도 테스트해 보았는데, 비슷한 문제가 존재하는 것으로 보입니다.
preload="none"으로 변경한 이유는 여기 있는 버그 보고서(Secure media uploads expire) 때문입니다. 지금은 preload를 metadata로 되돌리면 위에서 언급한 문제가 다시 발생하기 때문에, 다소 번거로운 회색 지대에 놓여 있습니다. 최근 presigned URL 만료 시간을 5분으로 늘렸습니다(FIX: Increase time of DOWNLOAD_URL_EXPIRES_AFTER_SECONDS to 5 minutes - Pull Request #10160 - discourse/discourse - GitHub) 덕분에 원래의 버그는 덜 심각한 문제가 되었지만… 여전히 문제입니다.
아직 이 문제에 대해 고민하고 이것저것 시도해 보고 있습니다. 두 가지 모두를 만족시킬 수 있을지 확신이 서지 않습니다. 보안 미디어를 보기 위해 여러 번 클릭해야 하는 것은 이상적인 경험이 아닙니다.
수정: 디버거의 Network 탭을 작동시키는 데 성공했습니다. 내부 Discourse 인스턴스에서 preload="none"이 설정된 audio 태그에 대한 예시입니다:
-
재생 버튼 누름: GET /secure-media-uploads/meta/dev/original/4X/6/1/8/618a6b19a07de18205cc9889cb604e414b30372b.mp3 요청이 Finished 상태로 반환됩니다.
-
일시정지 버튼 누름.
-
재생 버튼 누름: GET
presigned_url_here요청이 206 Partial Content 상태로 반환되고, 오디오가 정상적으로 로드됩니다.
여기서 이상한 점은 preload="metadata"인 경우에도 동일한 요청 시퀀스가 발생한다는 것입니다. 단, 재생 클릭은 한 번만 하면 됩니다. Safari가 첫 번째 재생 클릭 시 메타데이터를 가져오고, 오디오를 재생하려면 다시 일시정지 후 재생을 해야 하는 것처럼 보입니다.
이것이 Android 등 다른 기기에서도 발생하는지 확신이 서지 않습니다. 해당 기기로 테스트할 장치가 없기 때문입니다.