iPhone Safari / 크롬(=Safari WebView)에서 동작이 안 되는 핵심 원인들 > DX노트

본문 바로가기

사이트 내 전체검색

뒤로가기 DX노트


생각 iPhone Safari / 크롬(=Safari WebView)에서 동작이 안 되는 핵심 원인들

본문

iPhone Safari / 크롬(=Safari WebView)에서 동작이 안 되는 핵심 원인들


아이폰에서는 안드로이드/PC와 달리 WebRTC·오디오·WS 규칙이 매우 엄격합니다.


1. 아이폰은 <audio autoplay> + Web Audio 동시 사용이 매우 제한적

remoteAudio.autoplay = true;
audioCtx = new AudioContext();


iOS Safari는 사용자 제스처가 없으면 오디오 재생·AudioContext 생성 자체가 불가능합니다.


  • btnJoin 클릭 전에는 AudioContext 생성 불가
  • remoteAudio.play()도 사용자 제스처 전에는 실패
  • 심지어 getDisplayMedia도 사용자 제스처 필요
  • 하지만 현재 구조는 소켓 연결 → 시각화 초기화 → 스트림 수신 시 자동 재생 → iOS 금지


2. iOS는 createMediaStreamSource() 를 <audio srcObject> 와 함께 사용할 때 문제가 많음

<audio>.srcObject → 재생
AudioContext.createMediaStreamSource(stream) → 시각화


이 조합이 있을 경우 소리는 나오지만 Visualizer는 동작하지 않거나, 반대로 소리가 소멸되고 무음 상태가 되어버리는 버그가 있습니다.

“소스 스트림을 AudioContext로 두 번 연결하면 무음이 되거나 재생 실패” 이는 WebKit의 알려진 버그입니다.


3. iPhone에서는 system audio 공유(캡처) 제한

navigator.mediaDevices.getDisplayMedia({
   video: true,
   audio: { ... }
})


iOS Safari는 system audio capture 자체를 지원하지 않습니다.

기능 iOS Safari 지원 여부
화면 캡처 지원
탭 오디오 캡처 불가
시스템 전체 오디오 캡처 불가
getDisplayMedia audio: true 무조건 audio 없음

그래서 DJ 기능은 아이폰에서는 절대 작동할 수 없습니다.


4. AudioContext + silent oscillator(1Hz tone) iOS 정책과 충돌

silenceOsc.frequency.setValueAtTime(1);
gainNode.gain.value = 0.0001;
gainNode.connect(audioCtx.destination);


  • 아주 작은 gain의 oscillator는 “유해한 오디오 패턴”으로 분류
  • 절전방지 오디오 트릭 자체를 대부분 차단
  • AudioContext가 “silent → active” 상태로 유지되는 것도 일부 차단
  • 따라서 절전 방지용 오실레이터가 iOS에서 소리 재생을 방해하는 경우가 매우 많습니다.


5. WebRTC 자체가 iOS에서 오디오 트랙만 송출할 경우 문제가 많음


여러 콘텐츠 제약 때문에 iOS는:


  • 오디오 단독 트랙 WebRTC → 불안정
  • PeerConnection이 트랙을 받았어도 audio 태그 재생 실패
  • 특히 offer.sdp 수정(stereo, bitrate 변경)이 Safari와 충돌


결론

댓글목록 0

등록된 댓글이 없습니다.

전체 32건 1 페이지
게시물 검색


Copyright © 소유하신 도메인. All rights reserved.

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

PC 버전으로 보기