콘텐츠로 건너뛰기

iOS 딥링킹 가이드

이 가이드는 iOS 앱에 적합한 딥링킹 전략을 선택하는 데 도움을 줍니다. 어떤 전략을 선택할지는 사용 중인 메시징 채널과 Branch 같은 타사 링크 제공업체 사용 여부에 따라 달라집니다.

구현 세부 사항은 딥링킹을 참조하세요. 문제 해결은 딥링킹 문제 해결을 참조하세요.

iOS 앱에서 Braze 메시지의 링크를 처리하는 방법은 세 가지입니다. 각 방법은 작동 방식이 다르며, 적합한 채널과 사용 사례도 서로 다릅니다.

링크 유형 예시 적합한 용도 앱이 설치되지 않은 경우에도 열리나요?
커스텀 스킴 myapp://products/123 푸시, 인앱 메시지, Content Cards, 배너 아니요 — 링크가 실패합니다
유니버설 링크 https://myapp.com/products/123 이메일, 단문 메시지 서비스(SMS), 클릭 추적을 사용하는 채널 예 — 웹으로 대체됩니다
Open Web URL Inside App 모든 https:// URL Modal WebView에 웹 콘텐츠 표시 해당 없음 — WebView에 표시됩니다

커스텀 스킴 딥링크(예: myapp://products/123)는 앱의 특정 화면을 바로 엽니다. 서드파티가 링크를 수정하지 않는 채널에서 가장 간단하게 사용할 수 있는 옵션입니다.

다음과 같은 경우 커스텀 스킴 딥링크를 사용하세요.

  • 푸시 알림, 인앱 메시지, Content Cards 또는 배너를 보내는 경우
  • 앱이 설치되지 않았을 때 링크가 작동하지 않아도 되는 경우
  • 클릭 추적(이메일 ESP 링크 래핑)이 필요하지 않은 경우

다음과 같은 경우에는 커스텀 스킴 딥링크를 사용하지 마세요.

  • 이메일을 보내는 경우 — ESP가 클릭 추적을 위해 링크를 래핑하므로 커스텀 스킴이 작동하지 않습니다.
  • 앱이 설치되지 않았을 때 링크가 웹 페이지로 대체되어야 하는 경우

유니버설 링크(예: https://myapp.com/products/123)는 iOS가 브라우저에서 여는 대신 앱으로 라우팅할 수 있는 표준 HTTPS URL입니다. 서버 측 구성(AASA 파일)과 앱 측 설정(Associated Domains 인타이틀먼트)이 필요합니다.

다음과 같은 경우 유니버설 링크를 사용하세요.

  • 이메일을 보내는 경우. ESP가 클릭 추적을 위해 링크를 래핑하므로 링크는 HTTPS여야 합니다.
  • 단문 메시지 서비스(SMS) 또는 링크가 래핑되거나 단축되는 기타 채널로 보내는 경우
  • 앱이 설치되지 않았을 때 링크가 웹 페이지로 대체되어야 하는 경우
  • Branch나 AppsFlyer 같은 서드파티 링크 제공업체를 사용하는 경우

다음과 같은 경우에는 유니버설 링크를 사용하지 마세요.

  • 푸시, 인앱 메시지, 배너 또는 Content Cards의 딥링크만 필요한 경우. 커스텀 스킴이 더 간단합니다.

“Open Web URL Inside App”

이 옵션은 앱 내의 Modal WebView에서 웹 페이지를 엽니다. Braze SDK가 Braze.WebViewController를 사용해 전부 처리하므로 URL 처리 코드를 따로 작성할 필요가 없습니다.

다음과 같은 경우 “Open Web URL Inside App”을 사용하세요.

  • 앱을 벗어나지 않고 웹 페이지(예: 프로모션 또는 아티클)를 표시하려는 경우
  • URL이 특정 앱 화면으로 연결되는 딥링크가 아닌 표준 HTTPS 웹 페이지인 경우

다음과 같은 경우에는 “Open Web URL Inside App”을 사용하지 마세요.

  • 앱의 특정 화면으로 이동해야 하는 경우. 대신 커스텀 스킴이나 유니버설 링크를 사용하세요.
  • 웹 페이지에 인증이 필요하거나, 임베딩을 차단하는 콘텐츠 보안 정책(Content Security Policy) 헤더가 있는 경우

커스텀 스킴 딥링크

요구 사항 세부 정보
AASA 파일 필요하지 않음
Info.plist CFBundleURLTypes에 스킴을 등록하고 LSApplicationQueriesSchemes에 추가합니다.
앱 델리게이트 메서드 커스텀 스킴 링크를 처리하려면 application(_:open:options:)을 구현하거나, 앱에서 씬을 사용하는 경우 scene(_:openURLContexts:)를 구현합니다. Braze 메시지에서 열리는 커스텀 스킴 링크도 여기에 포함됩니다.
Braze SDK 구성 없음. braze(_:shouldOpenURL:)이 false를 반환하지 않는 한 SDK는 기본적으로 커스텀 스킴 URL을 엽니다.

유니버설 링크

요구 사항 세부 정보
AASA 파일 필수. https://yourdomain.com/.well-known/apple-app-site-association에 호스팅합니다.
연결된 도메인 Xcode의 Signing & Capabilities에서 applinks:yourdomain.com을 추가합니다.
앱 델리게이트 메서드 NSUserActivity를 처리하려면 application(_:continue:restorationHandler:)를 구현합니다.
Braze SDK 구성 configuration.forwardUniversalLinks = true를 설정합니다.
BrazeDelegate(선택 사항) 커스텀 라우팅(예: Branch)을 위해 braze(_:shouldOpenURL:)을 구현합니다.

“앱 내에서 웹 URL 열기”

요구 사항 세부 정보
AASA 파일 필요하지 않음
앱 델리게이트 메서드 필요하지 않음. SDK가 자동으로 처리합니다.
Braze SDK 구성 없음. Campaign 작성기에서 앱 내에서 웹 URL 열기를 선택합니다.

AASA 파일이 필요한 경우

Apple App Site Association(AASA) 파일은 유니버설 링크를 사용할 때만 필요합니다. 이 파일은 앱이 처리할 수 있는 URL을 iOS에 알려줍니다.

다음과 같은 경우 AASA 파일이 필요합니다:

  • 이메일 Campaign에서 딥링크를 보내는 경우(이메일 서비스 공급자가 링크를 HTTPS 클릭 추적 URL로 래핑하기 때문입니다).
  • SMS Campaign에서 딥링크를 보내는 경우(링크가 HTTPS URL로 단축될 수 있기 때문입니다).
  • Branch, AppsFlyer 또는 다른 링크 제공업체를 사용하는 경우(해당 업체들이 자체 HTTPS 도메인을 사용하기 때문입니다).
  • 푸시, 인앱 메시지 또는 Content Cards에서 유니버설 링크를 사용하는 경우(흔하지는 않지만 forwardUniversalLinks = true로 가능합니다).

다음과 같은 경우에는 AASA 파일이 필요하지 않습니다:

  • 푸시, 인앱 메시지, Content Cards 또는 배너에서 커스텀 스킴 딥링크(예: myapp://)만 사용하는 경우.
  • 앱 내에서 웹 URL 열기 옵션을 사용하는 경우.

AASA 설정 방법은 유니버설 링크 및 앱 링크를 참조하세요.

앱 코드에서 링크를 처리해야 하는 경우

구현할 델리게이트 메서드는 사용하는 링크 유형과 커스텀 라우팅 로직이 필요한지 여부에 따라 달라집니다.

델리게이트 메서드 처리 대상 구현 시점
BrazeDelegate.braze(_:shouldOpenURL:) Braze SDK가 여는 모든 URL Braze 메시지에 커스텀 라우팅 로직(예: Branch, 조건부 처리, 분석)이 필요한 경우
application(_:open:options:) 또는 scene(_:openURLContexts:) 커스텀 스킴 딥링크(myapp://) Braze 메시지를 포함한 모든 채널에서 커스텀 스킴 딥링크를 사용하는 경우
application(_:continue:restorationHandler:) 유니버설 링크(https://) 이메일, SMS에서 유니버설 링크를 사용하거나 forwardUniversalLinks = true와 함께 사용하는 경우

BrazeDelegate.shouldOpenURL과 애플리케이션 URL 열기 메서드 비교

푸시 알림, 인앱 메시지, Content Cards, 배너의 경우 Braze SDK는 URL을 열기 전에 BrazeDelegate.braze(_:shouldOpenURL:)를 호출합니다. URL 컨텍스트에는 소스 채널이 포함됩니다. 이 메서드를 사용하면 다음을 수행할 수 있습니다.

  • Braze가 URL을 열기 전에 타사 제공업체(예: Branch 또는 AppsFlyer)로 URL 라우팅
  • 분석 로깅
  • Braze가 URL을 열지 않도록 false 반환

shouldOpenURL을 구현하지 않으면 SDK 기본값이 true를 반환하고 Braze가 URL을 엽니다. 커스텀 스킴 링크는 시스템을 통해 열리며, 시스템은 앱의 scene(_:openURLContexts:) 또는 application(_:open:options:)를 호출합니다. 웹 링크는 메시지 설정에 따라 WebView 또는 브라우저에서 열립니다.

shouldOpenURL을 구현하고 false를 반환하는 경우 해당 메서드에서 URL을 처리하세요. Braze는 URL을 열지 않으며, 애플리케이션 또는 씬 델리게이트 메서드로 URL을 전달하지도 않습니다.

Braze가 커스텀 스킴 링크를 열면 iOS는 application(_:open:options:)를 호출하며, 앱에서 씬을 사용하는 경우에는 scene(_:openURLContexts:)를 호출합니다. forwardUniversalLinks = true인 경우 Braze는 유니버설 링크를 scene(_:continue:) 또는 application(_:continue:restorationHandler:)에 직접 전달합니다. 두 메서드가 모두 구현되어 있으면 Braze는 씬 델리게이트 메서드만 호출합니다.

Braze에서 Branch 사용하기

Branch를 링크 제공업체로 사용하는 경우, 표준 유니버설 링크 구성 외에 몇 가지 추가 단계가 필요합니다.

  1. Branch SDK: Branch 설명서에 따라 Branch SDK를 통합하세요.
  2. Associated Domains: Xcode의 Signing & Capabilities 아래에 Branch 도메인(예: applinks:yourapp.app.link)을 추가하세요.
  3. BrazeDelegate: Branch 링크를 Branch SDK로 라우팅하도록 braze(_:shouldOpenURL:)를 구현하세요. 링크를 라우팅한 후 Braze가 URL을 열지 않도록 false를 반환하세요.
  4. 유니버설 링크 전달: Braze SDK 구성에서 configuration.forwardUniversalLinks = true를 설정하세요.

구현 세부 사항과 디버깅 안내는 딥링킹용 Branch를 참조하세요.

New Stuff!