투케이2K

348. (ios/swift5) [iOS 15 이상] requestMediaCapturePermissionFor 사용해 WKWebview 웹뷰 카메라, 오디오 권한 부여 수행 본문

IOS

348. (ios/swift5) [iOS 15 이상] requestMediaCapturePermissionFor 사용해 WKWebview 웹뷰 카메라, 오디오 권한 부여 수행

투케이2K 2023. 10. 14. 10:04

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[Web 웹 : 소스 코드]

        // [html 최초 로드 및 이벤트 상시 대기 실시]
        window.onload = async function() {
            console.log("");
            console.log("=========================================");
            console.log("[window onload] : [start]");
            console.log("=========================================");
            console.log(""); 
            
            // [퍼미션 요청] : [async 비동기 함수 내에서 권한 호출 필요]
            const localStream = await navigator.mediaDevices.getUserMedia({
                 video: { width: { ideal: 1280 }, height: { ideal: 720 } },
                 audio: true,
            }); // [웹 카메라 권한 요청]
        };
 

[Xcode 설정 : info plist]

 

[Swift : 소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [웹뷰 getUserMedia 퍼미션 확인]
    // -----------------------------------------------------------------------------------------
    // 필요 설정 : webView.uiDelegate = self
    // -----------------------------------------------------------------------------------------
    // 필요 설정 : webView.uiDelegate = webViewConfiguration.allowsInlineMediaPlayback = true
    // -----------------------------------------------------------------------------------------
    // 조 건 : 해당 퍼미션 콜백 확인 함수는 ios 15 이상 사용 가능
    // -----------------------------------------------------------------------------------------
    // 설 명 : 최초 퍼미션 권한 확인 팝업창 호출 된 이후 >> 권한 부여 시 >> 같은 origin 주소인 경우 중복 팝업창 자동 허용
    // -----------------------------------------------------------------------------------------
    @available(iOS 15.0, *)
    func webView(_ webView: WKWebView,
        requestMediaCapturePermissionFor
        origin: WKSecurityOrigin,initiatedByFrame
        frame: WKFrameInfo,type: WKMediaCaptureType,
        decisionHandler: @escaping (WKPermissionDecision) -> Void){
        S_Log._D_(description: "웹뷰 getUserMedia 퍼미션 권한 자동 부여 수행", data: [ "URL :: \(String(describing: webView.url?.description ?? ""))" ])
        
        decisionHandler(.grant)
     }
 

[결과 출력]

 

================================================================
LOG :: CLASS PLACE :: A_Webview.swift :: webView(_:requestMediaCapturePermissionFor:initiatedByFrame:type:decisionHandler:) :: 1032
-------------------------------------------------
LOG :: NOW TIME :: 2023-10-14 09:42:06
-------------------------------------------------
LOG :: DESCRIPTION :: 웹뷰 getUserMedia 퍼미션 권한 자동 부여 수행
-------------------------------------------------
LOG :: URL :: file:///private/var/containers/Bundle/Application/696FAEEE-BF1E-4C59-9A33-9DB2767FDA72/swiftProject.app/javaScriptBridge.html
================================================================

 

반응형
Comments