투케이2K

375. (ios/swift5) facetime: 페이스 타임 스키마 명칭 사용해 openURL 연결 수행 - UIApplication.shared.open 본문

IOS

375. (ios/swift5) facetime: 페이스 타임 스키마 명칭 사용해 openURL 연결 수행 - UIApplication.shared.open

투케이2K 2023. 11. 12. 07:48

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [Face Time 연결]
    // -----------------------------------------------------------------------------------------
    func goFaceTimeIntent(_url : String) {
        
        /*
        // -----------------------------------------
        [goFaceTimeIntent 메소드 설명]
        // -----------------------------------------
        1. FaceTime 스키마 사용해 open 연결 수행
        // -----------------------------------------
        2. 호출 예시 : self.goFaceTimeIntent(_url: "facetime:14085551234")
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            
            // [사전 인풋 값 널 데이터 체크 수행 실시]
            if _url != nil && _url.count>0 && _url != "" && _url.hasPrefix("facetime"){
            }
            else {
                S_Log._D_(description: "Face Time 연결 실패", data: [
                    "error :: 사전 인풋 데이터 체크 에러",
                    "_url :: \(_url)"
                ])

                // [리턴 종료]
                return
            }
            
            // [스키마명을 사용해 외부앱 실행 실시 [사용가능한 url 확인]]
            if let openApp = URL(string: _url), UIApplication.shared.canOpenURL(openApp) {
                S_Log._D_(description: "Face Time 연결 수행", data: [
                    "_url :: \(_url)"
                ])
                
                // [버전별 처리 실시]
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(openApp, options: [:], completionHandler: nil)
                }
                else {
                    UIApplication.shared.openURL(openApp)
                }
            }
            //스키마명을 사용해 외부앱 실행이 불가능한 경우
            else {
                S_Log._D_(description: "Face Time 연결 실패", data: [
                    "_url :: \(_url)"
                ])
            }
        }
    }

[결과 출력]

 

 

반응형
Comments