투케이2K

531. (ios/swift5) [간단 소스] IOS 웹뷰 브릿지 통신 수행 시 멀티 파라미터 전송 방법 - App To Web Multi Param 본문

IOS

531. (ios/swift5) [간단 소스] IOS 웹뷰 브릿지 통신 수행 시 멀티 파라미터 전송 방법 - App To Web Multi Param

투케이2K 2024. 7. 13. 09:17

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[Swift : 소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [SEARCH FAST] : [자바스크립트 통신 브릿지 경로 설정]
    // -----------------------------------------------------------------------------------------
    // MARK: Call : [Ios] >> [JavaScript]
    // -----------------------------------------------------------------------------------------
    // MARK: [브릿지 호출 처리]
    // ---------------------------------------------------------
    // [웹 코드] function receiveMulti(one, two);
    // ---------------------------------------------------------
    func iosToJs_receiveMulti(one: String, two: String) {
        S_Log._F_(description: S_FinalData.LOG_Webview_Ios_To_Js, data: [
            "설 명 :: 멀티 파라미터 정보 전송",
            "Send Data [one] :: \(one)",
            "Send Data [two] :: \(two)"
        ])


        // -----------------------------------
        // [멀티 파라미터 전송 : 자바스크립트 에서는 다중 파라미터 형식으로 받는다]
        // -----------------------------------
        self.main_webview!.evaluateJavaScript("receiveMulti(\"\(one)\",\"\(two)\")") { (success, error) in
            if error != nil {
                S_Log._F_(description: "[receiveMulti] :: JavaScript Function Call Result", data: [
                    "Error :: \(String(describing: error))"
                ])
            }
            else {
                S_Log._F_(description: "[receiveMulti] :: JavaScript Function Call Result", data: [
                    "Result :: Success"
                ])
            }
        }

    }
 

[Web : 소스 코드]

        // [모바일 >> 자바스크립트 호출]
        function receiveMulti(one, two){
            console.log("");
            console.log("=========================================");
            console.log("[MOBILE >> JS] : [receiveMulti] : [start]");
            console.log("----------------------------------------");
            console.log("[설명] : 파라미터 함수 호출");
            console.log("----------------------------------------");
            console.log("[TYPE] : " + one);
            console.log("----------------------------------------");
            console.log("[INPUT] : " + two);
            console.log("=========================================");
            console.log("");


            // [로직 처리 실시]
            try {

                // [사전 인풋 값 널 체크 수행 실시]
                if (one != null && String(typeof one).toLowerCase() != "undefined" && JSON.stringify(one) != "null" 
                    && two != null && String(typeof two).toLowerCase() != "undefined" && JSON.stringify(two) != "null") {
                }
                else {
                    console.log("");
                    console.log("=========================================");
                    console.log("[MOBILE >> JS] : [receiveMulti] : [Error] : 인풋 값 널 데이터 에러");
                    console.log("=========================================");
                    console.log("");

                    alert("[receiveMulti] : [ERROR] : [INPUT DATA IS NULL]");
                    return;
                }


                // [전달 받은 데이터 확인]
                var result = "\n\n";
                result += "One : " + String(one) + "\n\n";
                result += "Two : " + String(two) + "\n\n";

                // [팝업창 표시]
                alert(result);

            }
            catch (error){

                // [에러 발생 내용 확인]
                console.error("");
                console.error("=========================================");
                console.error("[MOBILE >> JS] : [receiveMulti] : [Exception]");
                console.error("--------------------------------------");
                console.error("[all error] : " + error);
                console.error("--------------------------------------");
                console.error("[error stack] : " + error.stack);
                console.error("=========================================");
                console.error("");


                // [에러 팝업창 표시]
                alert("[MOBILE >> JS] : [receiveMulti] :: [Exception] :: " + error);

            }

        };
 

[결과 출력]

 

 
반응형
Comments