Adjust SDK에는 짧은 브랜드 링크를 사용하지 않는 경우 딥링크 클릭에서 어트리뷰션을 기록할 수 있는 appWillOpen(_:) 메서드가 있습니다.
메서드 서명
+ (void)appWillOpenUrl:(nonnull NSURL*)url;
그러나 processDeeplink(_:completionHandler:) 메서드는 이 레거시 메서드의 기능을 대체하므로, 이 새로운 메서드를 사용하는 것이 권장됩니다.
중요 구현 참고 사항
다음 딥링크 처리 모범 사례를 따르세요.
링크 처리 요구사항
귀하의 앱은 Adjust 브랜드 링크(brandname.go.link)와 유니버설 링크(example.com)를 동일하게 처리해야 합니다. 앱에서 도메인 허용 리스트를 사용하는 경우 Adjust 브랜드 도메인이 포함되어 있는지 확인하세요. 예를 들어, 다음 두 링크는 모두 동일한 화면으로 이동해야 합니다.
Adjust 브랜드 링크: https://brandname.go.link/summer-clothes?promo=beach
귀하의 앱은 Adjust 브랜드 링크와 앱 스킴 딥링크를 동일하게 처리해야 합니다. iOS가 유니버설 링크를 지원하지 않는 경우, Adjust는 이를 해당 앱 스킴 형식으로 변환합니다. 예를 들어, 다음 두 링크는 모두 동일한 화면으로 이동해야 합니다.
Adjust 브랜드 링크: https://brandname.go.link/summer-clothes?promo=beach
앱 스킴 딥링크: example://summer-clothes?promo=beach
앱 상태 고려사항
앱이 어떤 상태에서든(‘실행 중이 아님’, 백그라운드, 또는 해당되는 경우 포그라운드) 링크를 올바르게 처리하는지 확인하세요.
사용자가 아직 인증되지 않은 경우와 같이 즉시 처리할 수 없는 경우 딥링크를 저장했다가 앱이 탐색할 준비가 되면 처리하는 것을 고려하세요.
인앱 탐색
앱이 UIApplication.open(_:options:completionHandler:) 또는 SwiftUI의 openURL을 호출하여 자체 유니버설 링크를 열려고 할 때, iOS는 이를 앱이 아닌 Safari에서 엽니다. 이러한 메서드를 내부 탐색을 위해 사용하려면 앱 스킴 딥링크만 전달할 수 있습니다. 또는 앱 내에 유니버설 링크를 배치하고 딥링크 처리 로직을 사용하여 이를 파싱하고 적절한 화면으로 이동할 수 있습니다.
// Send deep link to Adjust's servers for attribution.
83
// If short branded link, receive long link.
84
// Otherwise, receive original link.
85
[Adjust processDeeplink:incomingLink
86
completionHandler:^(NSString*resolvedLink){
87
// TO DO: Handle resolvedLink by parsing its components
88
// (example: path, query parameters) and
89
// navigating to the appropriate screen.
90
}];
91
}
AppDelegate 라이프사이클을 사용하는 SwiftUI 앱
아직 만들지 않았다면 아래 App.swift 파일 예시와 같이 프로젝트의 기본 디렉터리에 AppDelegate.swift 파일을 만들고 기본 애플리케이션 파일에서 이 파일을 참조하세요. 이는 앱 라이프사이클 이벤트 및 Adjust SDK 연동을 처리하는 데 필요합니다. 또한 앱이 설치되면 유니버설 링크와 앱 스킴 딥링크를 수신하는 onOpenURL SwiftUI 수정자를 구현하세요.
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
7
8
var body: some Scene {
9
WindowGroup {
10
ContentView()
11
// Receive universal link or app scheme deep link when app is installed
12
// and link opens app from "not running",
13
// background, or foreground state.
14
.onOpenURL { incomingLink in
15
// Send deep link to Adjust's servers for attribution.
16
// If short branded link, receive long link.
17
// Otherwise, receive original link.
18
Adjust.processDeeplink(incomingLink) { resolvedLink in
19
// TO DO: Handle resolvedLink by parsing its components
20
// (example: path, query parameters) and
21
// navigating to the appropriate screen.
22
}
23
}
24
}
25
}
26
}
SceneDelegate 라이프사이클을 사용하는 SwiftUI 앱
AppDelegate 라이프사이클을 사용하는 SwiftUI 앱 섹션의 지침을 따르세요. onOpenURL SwiftUI 수정자는 앱이 설치된 상태에서 링크가 백그라운드 또는 포그라운드 상태에서 앱을 열 때 유니버설 링크와 앱 스킴 딥링크를 수신합니다.
또한 SceneDelegate 라이프사이클을 사용하는 UIKit 앱 섹션에서 scene(_:willConnectTo:options:) 메서드를 구현합니다. 이 메서드는 앱이 설치되어 있고 링크가 ‘실행되지 않는’ 상태에서 앱을 열 때 유니버설 링크 및 앱 스킴 딥링크를 수신합니다.