개발자

iOS 웹뷰에서 getUserMedia 호출 시 마이크 권한 관련 질문입니다.

2월 14일조회 25

안녕하세요 React를 이용하여 웹뷰 기반 애플리케이션을 제작 중입니다. 다름이 아니라 리액트 코드 내에서 마이크 권한 획득 및 녹음 기능이 있는데요, navigator.mediaDevices.getUserMedia 메소드로 권한 획득과 녹음을 진행하고 있습니다. 그런데 최초 접속 시에는 위 메소드를 사용하는 컴포넌트가 렌더링 될 때 애플리케이션 자체(네이티브)에서 마이크 권한 여부를 물어보는데요 "앱 이름"에서 마이크 권한을 요청합니다. 라고 노출이 됩니다. 그런데 문제는 여기서 허용을 했음에도 불구하고 녹음을 진행하려고 하면 "웹뷰 도메인"에서 마이크를 사용하도록 허용하겠습니까? 라고 이중으로 권한을 확인하게 됩니다. Safari 자체적으로 막는거라 정상적인 동작인지, 아니면 다른 옵션이 있는지 모르겠네요ㅠㅠ 해결 방법이 있을까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2월 14일

이 이슈는 iOS의 웹뷰에서 발생하는 것으로, 웹보기와 네이티브 앱 사이에 권한 체계가 분리되어 있기 때문입니다. 즉, 사용자가 마이크를 앱에 허용했다고 해도, 이 권한은 웹뷰에게 자동으로 전달되지 않습니다. 웹 컨텐트는 기본적으로 별도의 보안 샌드박스 내에서 실행되므로 웹 페이지에서 요청하는 권한(여기서는 마이크 접근)은 별도로 승인해야 합니다. 현재 상황을 해결하는 방법은 아래와 같이 두 가지가 있습니다: 1) **웹뷰대신 WKWebView를 사용하는 것:** WKWebView는 getUserMedia API를 지원합니다. 따라서 WKWebview를 사용하면 getUserMedia 호출 시 웹 컨텐트와 네이티브 앱 모두에서 한 번에 권한 요청을 처리할 수 있습니다. 2) **네이티브 코드 단계에서 권한 요청을 처리하는 것:** iOS 앱의 Info.plist 파일에 NSMicrophoneUsageDescription 항목을 추가하여 마이크 접근용 설명 문구를 제공하고, AVAudioSession 클래스를 이용하여 마이크 접근 권한을 요청하는 등, 네이티브 코드 수준에서 권한을 직접 관리하는 방법이 있습니다. 이렇게 하면 웹뷰나 웹 컨텐트가 별도로 권한을 요청하는 상황을 피할 수 있습니다. 다만, 이 접근법은 앱의 전반적인 아키텍처와 보안 요구사항에 따라 적절성이 달라질 수 있으므로 유의해야 합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!