투케이2K

16. (ios/swift) 외부 앱 실행 및 앱 스토어 이동 실시 - 스키마 scheme 본문

IOS

16. (ios/swift) 외부 앱 실행 및 앱 스토어 이동 실시 - 스키마 scheme

투케이2K 2021. 10. 21. 10:04

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[방법 설명 : LSApplicationQueriesSchemes]


[소스 코드]

    // [외부 앱 실행 실시]
    /*
    1. https://www.apple.com/kr/ 사이트에 접속해서 특정 앱 주소를 확인합니다
    2. 크롬 앱 id 확인 : https://apps.apple.com/kr/app/google-chrome/id535886823 [id535886823 부분을 사용해서 외부앱을 실행합니다]
    3. 크롬 스키마 확인 : googlechrome://
    4. 로직 : 외부앱 설치되었을 경우 >> 외부앱 실행 (스키마) / 외부앱이 설치되지 않은 경우 앱 스토어 이동 (앱 id)
    5. 호출 예시 : goOutApp(_scheme: "googlechrome://", _id: "id535886823")
    */
    func goOutApp(_scheme : String, _id : String) {
        let _appSchme = _scheme
        let _storeUrl =  "itms-apps://itunes.apple.com/app/" + _id
        print("")
        print("====================================")
        print("[goOutApp : 외부 앱 실행 실시]")
        print("_appSchme : ", _appSchme)
        print("_storeUrl : ", _storeUrl)
        print("====================================")
        print("")
        
        //스키마명을 사용해 외부앱 실행 실시
        if let openApp = URL(string: _appSchme), UIApplication.shared.canOpenURL(openApp) {
            print("")
            print("====================================")
            print("[goOutApp : 외부 앱 열기 수행]")
            print("====================================")
            print("")
            // 버전별 처리 실시
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(openApp, options: [:], completionHandler: nil)
            }
            else {
                UIApplication.shared.openURL(openApp)
            }
        }
        //스키마명을 사용해 외부앱 실행이 불가능한 경우 (외부앱이 설치되지 않은 경우)
        else {
            // 외부앱 이동 로직 처리 실시
            if let openStore = URL(string: _storeUrl), UIApplication.shared.canOpenURL(openStore) {
                print("")
                print("====================================")
                print("[goOutApp : 앱 스토어 이동 실시]")
                print("====================================")
                print("")
                // 버전별 처리 실시
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(openStore, options: [:], completionHandler: nil)
                }
                else {
                    UIApplication.shared.openURL(openStore)
                }
            }
        }
    }

[결과 출력]


 

반응형
Comments