투케이2K

178. (ios/swift) 카카오 맵 (kakao map) http 외부 링크 이동 및 위도, 경도, 마커 설정 실시 본문

IOS

178. (ios/swift) 카카오 맵 (kakao map) http 외부 링크 이동 및 위도, 경도, 마커 설정 실시

투케이2K 2022. 9. 1. 11:07

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[호출 : 소스 코드]

    // MARK: - [테스트 함수 정의]
    func testMain() {
        print("")
        print("===============================")
        print("[ViewController >> testMain() :: 테스트 함수 수행]")
        print("===============================")
        print("")
        
        /**
         * // --------------------------------------
         * TODO [http 주소 사용해 외부 링크로 이동 및 카카오 맵 위도, 경도, 마커 좌표 표시]
         * // --------------------------------------
         * 1. 지도 바로가기 : https://map.kakao.com/link/map/marker,37.402056,127.108212
         * // --------------------------------------
         * 2. 로드뷰 바로가기 : https://map.kakao.com/link/roadview/37.402056,127.108212
         * // --------------------------------------
         * */

        // [브라우저 사용해 외부 링크 이동 실시]
        self.goSafariBrowserOuter(_url: "https://map.kakao.com/link/map/marker,37.402056,127.108212")
        
    }
 

[링크 이동 : 소스 코드]

    // MARK: - [사파리 기반 : 외부 브라우저 링크 이동 실시]
    func goSafariBrowserOuter(_url : String){
        
        /*
        // -----------------------------------------
        [goSafariBrowserOuter 메소드 설명]
        // -----------------------------------------
        1. 필요 info plist : App Transport Security Settings >> Allow Arbitrary Loads >> YES
        // -----------------------------------------
        2. 필요 import : import SafariServices
        // -----------------------------------------
        3. 호출 방법 : self.goSafariBrowserOuter(_url: "https://www.naver.com")
        // -----------------------------------------
        */
        
        // [주소 널 체크 및 http 주소를 포함하는지 확인]
        if _url != nil && _url.count>0 && _url != ""
            && _url.hasPrefix("http") == true || _url.hasPrefix("https") == true {
            print("")
            print("====================================")
            print("[C_MoveApp >> goSafariBrowserOuter() :: [외부 이동] 사파리 기반 브라우저 링크 이동 실시]")
            print("-------------------------------")
            print("url :: ", _url)
            print("====================================")
            print("")

            // [방어 로직 추가 실시]
            if C_Util().stringIsUrlParsing(string: _url) == false {
                print("")
                print("====================================")
                print("[C_MoveApp >> goSafariBrowserOuter() :: [외부 이동] 사파리 기반 브라우저 링크 이동 실패]")
                print("error :: URL 주소 형식 아님 >> 한글 인코딩 , 이스케이프 문자 체크 필요")
                print("====================================")
                print("")

                // [종료 실시]
                return
            }
            
            // [외부로 사파리 기반 브라우저 링크 열기 실시]
            DispatchQueue.main.async{
                UIApplication.shared.open(URL(string: _url)!, options: [:])
            }
        }
        else {
            print("")
            print("====================================")
            print("[C_MoveApp >> goSafariBrowserOuter() :: [외부 이동] 사파리 기반 브라우저 링크 이동 실패]")
            print("-------------------------------")
            print("설명 :: 접속 주소를 다시 확인해주세요")
            print("-------------------------------")
            print("url :: ", _url)
            print("====================================")
            print("")
        }
    }
 

[결과 출력]

 

 

반응형
Comments