일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 개발
- 설치
- Java
- 웹개발
- 연산자
- 자바
- SWIFT
- JavaScript
- vue2.0
- objective-c
- C
- forntend
- HTML
- tmap연동
- 리액트
- 스위프트
- c언어
- 프론트엔드
- 자바스크립트
- 다른앱호출
- ios
- tmapAPI
- react
- 상수
- 조건문
- Vue.js
- 티맵연동
- const
- 코딩
- UIApplication
- Today
- Total
스펜서 개발블로그
[iOS/Swift] 휴대폰에 다른앱 설치여부 확인하기 본문
안녕하세요.
오늘은 iOS 환경에서 해당 기기에 다른앱이 설치되었는지 확인하고 여는 방법까지 확인해보려고 합니다.
iOS 환경에서 동작하는 앱을 제어할 때는 UIApplication을 사용합니다.
앱이 시작하면 시스템은 UIApplicationMain(_:_:_:_:) 함수를 실행하고, 이 함수의 역할 중 하나는 UIApplication 객체를 싱글톤 형식으로 만드는 것 입니다. 이를 사용하기 위해서는 shared로 접근이 가능합니다.
이와 관련된 자세한 내용은 공식 문서를 확인해주세요. (https://developer.apple.com/documentation/uikit/uiapplication)
우선 다른 앱이 설치되었는지 확인하기 위해서는 canOpenURL을 통해 확인할 수 있습니다.
canOpenUrl()은 Boolean 타입으로 true, false를 리던하며 아래와 같이 사용할 수 있습니다.
우선 Info.plist에서 Scheme을 추가해줍니다.
Array타입의 LSApplicationQueriesSchemes을 만들고 그 아래 구분할 앱을 등록해줍니다.
저는 프로젝트 내에서 내비게이션 앱 호출을 위해 위와 같이 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)를 붙여봤습니다.
오늘은 다른 앱 설치 여부를 확인하는 코드를 작성해봤는데요, 해당 코드를 사용하면 유저들이 많이 사용하는 앱을 열기 전 확인을 하거나 특정 앱의 설치 여부를 보여주고 유동적인 화면 구성이 가능합니다.
읽어주셔서 감사합니다.