스펜서 개발블로그

[iOS/Swift] 휴대폰에 다른앱 설치여부 확인하기 본문

카테고리 없음

[iOS/Swift] 휴대폰에 다른앱 설치여부 확인하기

스펜서 2023. 2. 24. 14:53

안녕하세요.

오늘은 iOS 환경에서 해당 기기에 다른앱이 설치되었는지 확인하고 여는 방법까지 확인해보려고 합니다.

 

iOS 환경에서 동작하는 앱을 제어할 때는 UIApplication을 사용합니다.

앱이 시작하면 시스템은 UIApplicationMain(_:_:_:_:) 함수를 실행하고, 이 함수의 역할 중 하나는 UIApplication 객체를 싱글톤 형식으로 만드는 것 입니다. 이를 사용하기 위해서는 shared로 접근이 가능합니다.

 

애플 개발자 사이트 문서 내 UIApplication

이와 관련된 자세한 내용은 공식 문서를 확인해주세요. (https://developer.apple.com/documentation/uikit/uiapplication)

 

 

우선 다른 앱이 설치되었는지 확인하기 위해서는 canOpenURL을 통해 확인할 수 있습니다.

애플 개발자 사이트 내 canOpenURL()

canOpenUrl()은 Boolean 타입으로 true, false를 리던하며 아래와 같이 사용할 수 있습니다.

 

우선 Info.plist에서 Scheme을 추가해줍니다.

Array타입의 LSApplicationQueriesSchemes을 만들고 그 아래 구분할 앱을 등록해줍니다.

LSApplicationQueriesScheme 내 등록한 외부앱

저는 프로젝트 내에서 내비게이션 앱 호출을 위해 위와 같이 3개의 내비게이션을 설치하고 등록했습니다. (티맵, 네이버지도, 카카오내비)

 

그리고 코드는 아래와 같이 작성해줍니다.

    func naviInstallCheck() {
        // naver map 체크
        if !(UIApplication.shared.canOpenURL(URL(string: "nmap://test")!)) {
            // 설치가 안 되어있을때
        } else {
            // 설치가 되어있을때
        }
        // tmap 체크
        if !(UIApplication.shared.canOpenURL(URL(string: "tmap://test")!)) {
            // 설치가 안 되어있을때
        }
        // 카카오내비 체크
        if !(UIApplication.shared.canOpenURL(URL(string: "kakaonavi-sdk://test")!)) {
            // 설치가 안 되어있을때
        }
    }

UIApplication에서 앱 설치 여부를 확인할 때는 URL 호출 결과를 통해 확인하는 걸 알 수 있습니다.

URL은 string: 안에 "nmap://" 같은 방식으로 작성해주시면 되고, 테스트 문구(test)를 붙여봤습니다.

 

오늘은 다른 앱 설치 여부를 확인하는 코드를 작성해봤는데요, 해당 코드를 사용하면 유저들이 많이 사용하는 앱을 열기 전 확인을 하거나 특정 앱의 설치 여부를 보여주고 유동적인 화면 구성이 가능합니다.

 

읽어주셔서 감사합니다.

 

 

 

Comments