iOS에서는 링크나 특정 방식을 통해 다른 애플리케이션을 열 수 있습니다. 예를 들어 전화번호를 탭하면 바로 통화 화면이 열리거나, 미리 작성된 본문으로 메일을 보내거나, SMS 작성 화면을 띄우는 기능 등이 대표적입니다.
하지만 모든 앱을 내 앱 안에서 실행할 수 있는 것은 아닙니다. 이는 URL 스킴(URL Scheme)이 시스템에 등록된 앱에만 해당됩니다. 예를 들어 앱에서 SMS 화면을 열고 싶다면, 등록된 URL 스킴을 사용하면 손쉽게 구현할 수 있습니다.
URL 스킴으로 전화 걸기
앱에서 특정 번호로 전화를 걸려면 tel:// 스킴 뒤에 전화번호를 붙인 URL을 생성하면 됩니다. 이 동작이 실행되면 iOS가 자동으로 전화 앱(다이얼러)을 열어줍니다.
URL(string: "tel://\(number)"), UIApplication.shared.canOpenURL(url)
전화를 거는 함수의 예시는 다음과 같습니다.
func callNumber(number: String) {
if let url = URL(string: "tel://\(number)"),
UIApplication.shared.canOpenURL(url) {
if #available(iOS 10, *) {
UIApplication.shared.open(url)
} else {
UIApplication.shared.openURL(url)
}
}
}주요 앱별 URL 스킴 목록
같은 방식으로 다른 앱들도 URL 스킴을 통해 실행할 수 있습니다. 자주 사용되는 앱들의 URL 스킴은 다음과 같습니다.
- WhatsApp – https://api.whatsapp.com/send?phone=\(mobile_number)
- 연락처(Contacts) – contacts://
- iBooks – ibooks://
- iTunes U – itms-itunesu://
- 사진(Photos) – photos-redirect://
- Safari 검색 – x-web-search://
- Facebook – fb://
- Google Chrome – googlechrome://
- Messenger – fb-messenger://
- Skype – skype://
- Twitter(X) – twitter://
참고: canOpenURL 사용 시 주의사항
iOS 9 이상에서는 canOpenURL(_:)로 특정 앱의 설치 여부를 확인하려면, Info.plist의 LSApplicationQueriesSchemes 키에 해당 URL 스킴을 미리 등록해야 합니다. 등록하지 않으면 스킴 확인이 실패하며, 등록 가능한 스킴은 최대 50개라는 점도 유의해야 합니다. 반대로 이미 알고 있는 유효한 URL을 단순히 여는 open(_:)에는 이러한 사전 등록이 필요하지 않습니다.