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와 충돌


결론

댓글목록

등록된 댓글이 없습니다.

DX노트

Total 30건 1 페이지
  • RSS

몸은 아픈데, 마음은 더 지친 하루

오늘은 정말 짜증난다. 몸은 아프고, 마음은 지쳐 있는데, 이 합의금이라는 현실까지 신경 써야 하다니… 정말 답답하다. 손에 잡히는 건 아무 것도 없고, 개발도, 일도, 생각도 모두 멈춘 듯하다. 아… 그냥 숨만 쉬는 하루. 이런 나를 누가 이해해줄까, 에휴…

작성자: 관리자 댓글 0 조회 53

지도 api도 힘들구나.

정말 많이 변했네요.이거 프로그래밍 하는것보다 설정하는게 더 많은니. 점점 개발자가 다시 되는 느낌이 드는 것은 무엇일까요. ㅡㅡa그냥 재미가 좋은데...깊이가 깊어질수록 또 삽질이 되네요. 에효.

작성자: 관리자 댓글 0 조회 143

뻘짓하지 말자. CKEditor 4 개발 끝

역시 웹은 삼천포로 가는 지름길입니다.플러그인으로 배포할려고 했는데, 접어야 하겠네요. 너무 손이 많이 가서 여기서 끝입니다.현재까지 진행된것은 1. 멀티 이미지 업로드2. 이미지 드래그 에디터 삽입3. 코드블럭 3가지만 작업했습니다. 추후 개발이 진행되면 공지에 올리겠습니다.CKE..

작성자: 관리자 댓글 0 조회 148

웹 사용방법 매뉴얼 완료

서버와 연동하는 기술과 클라이언트에서 개발하는 곳을 별도 분리했습니다.음. 쉽고 깔끔한 분리 ^^이젠 좀 쉬자. !!!!!

작성자: 관리자 댓글 0 조회 162

그누보드 Jodit Editor 연동.

기능 추가는 멀티업로드, 코드블럭 등을 추가했고, 연동은 아주 잘되었슴.jodit 라이선스 때문에 배포를 해야할지 말아야 할지 모르겠음.

작성자: 관리자 댓글 0 조회 197

에디터 테스트

@tailwind base; @tailwind components; @tailwind utilities;  

작성자: 관리자 댓글 0 조회 175

개빡침!!

아 그누보드 정말 힘들다.홈피 리뉴얼 ㅋ 포기해야 되나 ㅡㅡa

작성자: 관리자 댓글 0 조회 208

워드프레스 설치

아 개고생 ㅡㅡ^PHP8.4로 올리고, iis 서버 셋팅하고, 윈도우 패치 업데이트하고.....에고고... 설치완료 http://wp.designonex.com/

작성자: 관리자 댓글 0 조회 247

독립형과 통합형 전략: 플러그인 업데이트 방향성 결정

현재 플러그인은 초기 개발 단계에서는 독립형 구조로 가볍게 설계되어 있습니다.그러나 기능이 확장되고 업데이트가 쌓이면, 독립형 구조도 점차 무거워지고 관리 부담이 커질 수 있습니다.이에 따라 선택지가 두 가지로 나뉘었습니다.독립형 유지 → 초기 장점은 가볍고 빠른 개발이 가능하지만, 확장 시 중복 개..

작성자: 관리자 댓글 0 조회 523

MessageBridge+ 통합버전 프로젝트

안녕하세요. 디자인원엑스입니다.현재 MessageBridge+ 통합 버전 기획을 준비하고 있습니다.이번 통합 버전은 단순히 기능을 묶는 형태가 아닌,장기적인 확장성과 지속 가능한 구조를 기반으로 하는 프로젝트입니다.완성 후 멈추는 고정형 제품이 아니라, 버전 업을 통해 지속적으로 진화하는 구조를 목표..

작성자: 관리자 댓글 0 조회 494

실시간 쪽지(메모2) 기능 기획서

핵심 기능(Core Features)✔ 1. 실시간 수신쪽지가 도착하면 WebSocket으로 즉시 표시화면 우측 아래 팝업 또는 알림 아이콘에 숫자 표시사운드 알림(선택)✔ 2. 쪽지 보내기사용자 검색(자동완성)사용자 클릭 → 쪽지 입력 → 보내기전송 성공/실패 즉시 안내✔ 3. 받은 쪽지함읽음/안읽..

작성자: 관리자 댓글 0 조회 567

검색


회원수
12,348
활성 게시글(30일)
1,842
커뮤니티에 기여하세요
새 글 작성
© 2025 Designonex. All rights reserved. · 이용약관 · 개인정보 처리방침