김니은 
KimN's Blog
김니은 
  • 분류 전체보기
    • Algorithm
      • Programmers
    • Develop
      • Swift
      • Flask
      • RubyonRails
      • AWS
      • Ardunio
      • Vue
      • Node.js
      • Infra
      • CS
    • IT Story
      • Hackintosh
      • GitHub
      • IT Review

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • TOAST
  • Ruby
  • 카카오 챗봇
  • SWIFTUI
  • 항상 맨 위
  • SWIFT
  • Code Snippet
  • Ruby on Rails

최근 댓글

최근 글

티스토리

반응형
hELLO
김니은 
Develop/Swift

[iOS] 무음모드 상태에서 WebView 음원 출력하기

Develop/Swift

[iOS] 무음모드 상태에서 WebView 음원 출력하기

2022. 5. 2. 16:17
반응형

 

 

최근 무음모드로 여러가지 시도를 많이 해봤습니다.

 

현재 나의 기기가 무음모드인지 판단하는거부터 시작해서.. 전화 수신 후의 음원 재생 등등..

 

이번에는 무음모드에서 WebView 내의 음원 출력하는 문제도 해결해야 했습니다..

 

먼저 왜 소리가 안나는지 공부해본 결과!

무음모드 일 때 iOS의 웹 오디오 기능이 정상적으로 작동되지 않는 원인이 safari 와 관련되어 있는 것을 확인하였습니다.

 

 


 

 

해결방안

 

기존 무음모드를 판단할 때, 무음 음원을 재생시켜 소리 음량으로 비교했던 방식을 기반으로 WebView 상에서 무음 음원을 재생시키는 방향으로 진행했습니다.

 

확인 결과, audio 또는 video 요소를 재생시키면 WKWebView 오디오 세션 범주가 Ambient라는 default에서 Playback으로 변경된다는 것을 알게 되었습니다.

 

재생시키기 위해서는 우선 음원을 인코딩 해야합니다.

 

 

https://base64.online/encoders/encode-audio-to-base64

 

Encode Audio File to Base64 Data (MP3, WAV, OGG, AAC, MIDI, WEBA, OPUS)

Encode Audio File to Base64 Data. Convert Audio file to Base64 Text. Use encoded base64 Audio in HTML

base64.online

 

 

위의 주소를 통해 무음 음원을 인코딩하여 data 값을 받아왔습니다.

 

해당 인코딩 값을 이용하여 무음모드에서도 음성이 나오도록 모드를 변경할 수 있었습니다.

 

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    let jsInject = "var slience=new Audio('인코딩 값');" +
                   "slience.id='wkwebviewAudio';" +
                   "slience.play();" +
                   "slience.loop=true;" +
                   "document.body.appendChild(slience);"
        
    webView.evaluateJavaScript(jsInject) { [weak self] (obj, error) in
        // 이후 동작할 코드
    }
}
 

 

위처럼 코드를 작성하면 정상적으로 작동되는 것을 확인했습니다.

 

 

반응형
저작자표시

'Develop > Swift' 카테고리의 다른 글

[Swift] 토스트(Toast) Message WindowScene 연구  (0) 2022.05.07
[SwiftUI] TabView PageStyle 회전 연구 (iPad 기준)  (0) 2022.05.03
[SwiftUI] ViewModifier 사용해보기  (0) 2022.05.03
[SwiftUI] fullScreenCover 고찰  (0) 2022.05.02
[iOS] 코드 문서화 도와주는 Jazzy 도전기  (0) 2022.05.02
    'Develop/Swift' 카테고리의 다른 글
    • [SwiftUI] TabView PageStyle 회전 연구 (iPad 기준)
    • [SwiftUI] ViewModifier 사용해보기
    • [SwiftUI] fullScreenCover 고찰
    • [iOS] 코드 문서화 도와주는 Jazzy 도전기
    김니은 
    김니은 

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.