[iOS] URL Scheme

Seonhu Kim·2023년 5월 28일
0

iOS

목록 보기
15/16
post-thumbnail

오랜만에 쓰는 글
최근에 타 기업과 A2A 연동 방식으로 서로의 앱을 호출할 일이 있어서 관련 내용을 정리해보고자 한다.

딥링크 (Deep Link)는 모바일 앱에서 특정한 화면 또는 기능으로 바로 이동할 수 있게 해주는 링크이다. 일반적인 웹 링크는 웹 페이지로 이동하는데 사용되지만, 딥링크는 모바일 앱을 실행하고 특정한 앱 화면으로 바로 이동할 수 있다.

iOS에서는 딥 링크는 URL Scheme 방식과 유니버셜 Scheme 방식 두 가지가 존재한다. 오늘은 URL Scheme을 통해 본인의 앱에서 다른 앱을 호출하고, 다른 앱에서 나의 앱을 호출하는 방법을 정리했다.

1. 상대방의 앱에서 나의 앱을 호출하는 방법 : URL Types Scheme 등록

  • Xcode에서 앱의 Info.plist 파일을 연다.
  • "URL types" 배열을 찾는다. 만약 해당 배열이 없다면, 우클릭하여 "Add Row"를 선택한 후 "URL types"를 키로 추가한다.
  • "URL types"에서 identifier와 URL Schemes에 스킴 값을 추가해준다.

추가적으로 스킴을 타고 들어오는 URL의 쿼리 파라미터를 추출하여 앱을 타고 들어온 이후에 어떤 동작을 화면을 호출할 지, 앱 안에서 동작이 끝나면 다시 해당 앱으로 돌아갈 건 지 등의 처리를 해줄 수 있다.

2. 나의 앱에서 상대방 앱을 실행시키는 방법 : LSApplicationQueriesSchemes 등록

  • Xcode에서 앱의 Info.plist 파일을 연다.
  • LSApplicationQueriesSchemes 키를 찾고, 만약 해당 키가 없다면, 우클릭하여 "Add Row"를 선택한 후 "LSApplicationQueriesSchemes"를 키로 추가한다.
  • 배열에 상대방 앱의 스킴을 추가한다.
// 나의 앱에서 상대방의 앱을 실행시키는 함수
func openOtherApp() {
    guard let url = URL(string: "otherapp://") else {
        return
    }
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        // 상대방의 앱이 설치되지 않았을 경우 처리할 로직 추가
    }
}
profile
iOS Developer.

0개의 댓글