adjust-icon

다이렉트 딥링크 설정

앱이 설치된 사용자가 Adjust 링크를 클릭하면 다이렉트 딥링킹을 통해 앱 내의 특정 콘텐츠로 바로 이동할 수 있습니다.

작동 방식

  1. 사용자가 Adjust 링크를 클릭합니다.
  2. OS는 앱을 실행하고, 딥링크를 네이티브 코드(iOS 또는 Android)로 전달합니다.
  3. app_links 라이브러리는 링크를 Flutter 코드로 전달합니다.
  4. 코드는 어트리뷰션을 위해 링크를 Adjust SDK로 전달합니다. SDK는 단축 브랜드 링크도 해석합니다.
  5. 코드는 해석된 링크를 기반으로 사용자를 탐색합니다.

Adjust SDK 메서드

Adjust.processDeeplink 메서드를 사용하여 다음 작업을 수행합니다.

  • 딥링크 클릭에서 어트리뷰션 기록
  • 단축 브랜드 링크를 이에 상응하는 긴 브랜드 링크로 변환
  • 다른 모든 링크를 그대로 전달
메서드 서명
static Future<String?> processDeeplink(String deeplink)

앱이 URL 실행 (레거시)

Adjust.appWillOpenUrl 메서드는 딥링크 클릭으로부터의 어트리뷰션을 기록하지만, 단축 브랜드 링크는 확인하지 않습니다.

메서드 서명
static void appWillOpenUrl(String url)

processDeeplink 메서드는 이 레거시 메서드를 대체합니다.

구현

app_links 라이브러리를 사용하여 딥링크를 수신하고 Adjust SDK로 전달하시기 바랍니다.

pubspec.yaml
dependencies:
app_links: ^6.0.0 # check pub.dev for latest version
final _appLinks = AppLinks();
Future<void> _initDeepLinks() async {
// Handle link when app is started from a deep link
final initialLink = await _appLinks.getInitialLink();
if (initialLink != null) {
_handleDeepLink(initialLink);
}
// Handle links when app is already running
_appLinks.uriLinkStream.listen(_handleDeepLink);
}
Future<void> _handleDeepLink(Uri incomingLink) async {
// Send deep link to Adjust's servers for attribution.
// If short branded link, receive long link.
// Otherwise, receive original link.
final resolvedLink = await Adjust.processDeeplink(incomingLink.toString());
// Handle failure if resolvedLink is null
if (resolvedLink == null) return;
/*
* TODO: Handle the deep link and navigate to the appropriate screen.
*
* Possible resolvedLink formats:
*
* 1. https://brandname.go.link/?adj_t=def456&
* adj_link=https%3A%2F%2Fexample.com%2Fsummer-clothes%3Fpromo%3Dbeach
* -> extract and decode the deep link from adj_link
*
* 2. https://brandname.go.link/summer-clothes?promo=beach&adj_t=def456
* -> extract path from the URL
*
* 3. example://summer-clothes?promo=beach&adj_t=def456
* -> extract path from the URL
*
* Note (Android only): If your Android app scheme path differs from iOS,
* you may receive:
* https://brandname.go.link/?adj_t=def456&
* adj_deep_link=example%3A%2F%2Fandroid-specific-path%3Fparam%3Dvalue
* -> extract and decode the deep link from adj_deep_link
*/
}

메인 액티비티가 singleTop, standard이거나 실행 모드를 지정하지 않은 경우, 앱이 이미 실행 중일 때 딥링크가 올바르게 열리도록 전용 딥링크 액티비티를 생성해야 합니다.

적절하게 구성되어 있지 않으면 딥링크가 새로운 태스크에서 앱을 실행하거나 다른 앱의 태스크(예: 브라우저)에서 열리고, 이에 따라 앱의 두 인스턴스가 동시에 실행될 수 있기 때문에 필요합니다.

네이티브 Android 설정

  1. 전용 딥링크 액티비티 접근법을 사용하여 매니페스트 구성
  2. 딥링크를 메인 FlutterActivity로 전달하는 DedicatedDeepLinkActivity를 생성합니다.
  1. 사용자가 Adjust 링크를 클릭합니다.
  2. OS가 딥링크 인텐트와 함께 DedicatedDeepLinkActivity를 실행합니다.
  3. DedicatedDeepLinkActivity 기존 인스턴스를 앞으로 가져오는 플래그를 사용하여 인텐트를 메인 FlutterActivity로 전달합니다.
  4. FlutterActivity 딥링크 URI를 FlutterEngine에 전달합니다.
  5. FlutterEngine은 URI를 Dart 코드로 전달하고, app_links이 이를 수신합니다.

이 흐름은 사용하는 Flutter 딥링킹 라이브러리와 관계없이 동일합니다. 위에 표시된 것 외에 Adjust SDK와의 연동을 위한 추가 Flutter 코드는 필요하지 않습니다.