iOS 개인 릴레이를 통한 iOS 디퍼드 딥링킹
iOS 15의 출시로 Apple은 iCloud와 함께 사용자에게 개인 릴레이라고 하는 기능을 제공합니다. 이 기능은 사용자들에게 웹 브라우징 트래픽을 암호화하고 정확한 위치와 IP 주소 및 브라우징 트래픽 콘텐츠를 숨기는 옵션을 제공합니다. 사용자가 개인 릴레이에 가입하는 경우, 어트리뷰션과 딥링킹에 간섭할 수 있습니다. 즉, 앱이 없는 새 사용자가 앱 스토어로 이동해 앱을 설치하고 실행하면 개인 릴레이가 앱의 특정 페이지로 전송되지 못하게 할 수 있습니다.
딥링킹(DDL)이 예상대로 계속 작동하도록 하려면 다음 앱스플라이어 솔루션 중 하나를 구현해야 합니다.
- [권장] 앱 클립 기반 솔루션: 사용자 어트리뷰션 데이터를 제공하는 앱 클립을 작성하고, 사용자에게 DDL이 달성하고자 하는 것과 유사한 사용자정의 앱 클립 환경을 안내합니다. 앱 클립에는 앱 클립에서 전체 앱으로 사용자를 안내하는 흐름도 포함될 수 있습니다.
- 클립보드 기반 솔루션: URL에서 디퍼드 딥링킹 데이터를 복사하고 사용자를 앱으로 올바르게 리디렉트하는 웹 랜딩 페이지를 작성합니다. 참고: 이 솔루션은 어트리뷰션에 도움이 되지 않습니다.
앱 클립 기반 솔루션
전제 조건: 앱스플라이어 SDK V6.4.0 이상
앱 클립 기반 DDL 솔루션을 설정하는 방법:
- Apple 지침에 따라 원하는 사용자 여정을 제공하는 앱 클립(App Clip)을 개발합니다.
- 앱 클립-투-전체 앱 어트리뷰션을 포함하여 앱 클립에 앱스플라이어를 통합합니다.
- 앱 클립에서
sceneDelegate
:- 교체
scene
continue userActivity
다음 기능으로:
- 교체
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
// Must for AppsFlyer attrib
AppsFlyerLib.shared().continue(userActivity, restorationHandler: nil)
//Get the invocation URL from the userActivity in order to add it to the shared user default
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let invocationURL = userActivity.webpageURL else {
return
}
addDlUrlToSharedUserDefaults(invocationURL)
}
⇲ Github 링크: Swift
- 다음 메서드를 추가합니다:
func addDlUrlToSharedUserDefaults(_ url: URL){
guard let sharedUserDefaults = UserDefaults(suiteName: "group.<your_app>.appClipToFullApp") else {
return
}
//Add invocation URL to the app group
sharedUserDefaults.set(url, forKey: "dl_url")
//Enable sending events
sharedUserDefaults.set(true, forKey: "AppsFlyerReadyToSendEvents")
}
⇲ Github 링크: Swift
- 전체 앱에서:
- In
appDelegate
, 다음 메서드 추가:
- In
func deepLinkFromAppClip() {
guard let sharedUserDefaults = UserDefaults(suiteName: "group.<your_app>.appClipToFullApp"),
let dlUrl = sharedUserDefaults.url(forKey: "dl_url")
else {
NSLog("Could not find the App Group or the deep link URL from the app clip")
return
}
AppsFlyerLib.shared().performOnAppAttribution(with: dlUrl)
sharedUserDefaults.removeObject(forKey: "dl_url")
}
⇲ Github 링크: Swift
- 마지막에
application didFinishLaunchingWithOptions launchOptions
메서드, 호출deepLinkFromAppClip
:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// ...
deepLinkFromAppClip()
return true
}
⇲ Github 링크: Swift
클립보드 기반 솔루션
클립보드 기반 솔루션을 설정하는 방법:
- 다음 코드를 입력
appDelegate
.
NSString *pasteboardUrl = [[UIPasteboard generalPasteboard] string];
NSString *checkParameter = @"cp_url=true";
if ([pasteboardUrl containsString:checkParameter]) {
[[AppsFlyerLib shared] performOnAppAttributionWithURL:[NSURL URLWithString:pasteboardUrl]];
}
var pasteboardUrl = UIPasteboard.general.string ?? ""
let checkParameter = "cp_url=true"
if pasteboardUrl.contains(checkParameter) {
AppsFlyerLib.shared().performOnAppAttribution(with: URL(string: pasteboardUrl))
}
- 클립보드의 URL에 디퍼드 딥링크 데이터를 붙여넣는 코드를 구현합니다. 이는 앱스플라이어 SDK의 일부가 아닙니다.
최신 데이터 약 1년 전