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 13건 1 페이지
  • RSS

사용자 중심 환경에서의 실질적 보안 대응

클라이언트 측에 모든 보안 책임을 전가하는 방식은, 서비스 제공자의 관점에서 본질적으로 지속 가능하지 않으며 상당히 위험한 접근입니다. 실제 서비스 환경에서는 사용자마다 기술적 역량이 크게 다르고, 심지어 기술적 배경이 전혀 없는 일반 사용자도 포함됩니다. 즉, 클라이언트에 지나치게 의존한 보안 구조..

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

에디터 테스트

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

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

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

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

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

MessageBridge+ 통합버전 프로젝트

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

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

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

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

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

실시간 접속자 기능 기획서

실시간 접속자 기능 기획서1 비회원(Guest)목적현재 접속자 수 확인사이트 활동 참여 유도필수 기능기능 설명전체 접속자 수 확인 사이트에 접속한 총 사용자 수페이지별 접속자 수 확인 현재 보고 있는 페이지에 접속 중인 사람 수실시간 활동 표시 “지금 이 글을 보는 사람 3명” 등 표시접속자 상태 표..

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

메시지 브릿지 + 폴더

메시지 브릿지 message_bridge/│├── core/                          # 메시지 브릿지의 핵심 기능(JS)│   ├── m..

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

MessageBridge+

회원1. 실시간 접속자(회원)2. 메모23. 1:1 채팅admin1. 전체 접속자 모니터링2. 랭크 페이지 index 제외공통(비회원 포함) 1, 신규, 인기글 (실시간으로 가능할까?)

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

통합 vs 독립에 대한 결정

사실 서비스가 시작되고 나면, 여러 가지 문제들이 생길 수 있다는 건 누구나 예상할 수 있는 일입니다.그런 걸 다 따지기 시작하면, 아예 시작조차 못할 수도 있죠.그래도 여러 번 고민하고 또 고민해본 끝에, 결론은 독립으로 가는 것이 맞겠다는 생각이 들었습니다.통합으로 진행하면 관리가 쉽지 않을 것 ..

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

통합판인가? 아니면, 독립 플러그인가?

개발을 하다 보면, 딱 갈림길 하나가 생기더군요.지금 방향을 잘못 잡으면, 나중에 다시 되돌아와서처음부터 구조를 다시 뜯어고쳐야 할 수도 있겠다는 생각이 듭니다.바로,“플러그인을 개별로 독립시켜 만들 것인가?”아니면“통합형으로 한 번에 묶어서 제공할 것인가?”이 고민입니다.독립 플러그인 방식누구는 A..

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

메시지 브릿지를 활용한 그누보드 미니 채팅!!

안녕하세요, 디자인원엑스입니다!많은 분들이 요청해주셨던 ‘미니 채팅’ 기능을 메시지 브릿지를 활용하여 개발 시작합니다.이 기능이 완성되면, 회원 간 실시간 소통이 훨씬 자연스러워지고사이트 전반의 활동성도 크게 높아질 것으로 기대됩니다.개발 진행 상황은 지속적으로 공유드리겠습니다.많은 관심 부탁드립니다..

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

첫번째 메시지 브릿지 버그 및 패치 작업

생각지 못했던 부분이 나를 괴롭혔다. 물론, 지금 패치가 완료되어서 다행이지.서비스를 괜히 시작하는 것은 아닐까? 하는 생각도 들었다.앞으로 수많은 패치가 기다리겠지만, 첫 고비부터 이런 생각을 하다니 ㅠㅠ지금 앱을 만드는데, 두가지르 같이 할 수 있을까?시간 땜방씩으로 만든 이 프로젝트 과연, 결과..

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

검색


© 2025 Designonex. All rights reserved. · 이용약관 · 개인정보 처리방침