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
*/
}

メインアクティビティがsingleTopstandardの場合、または起動モードに指定されていない場合は、アプリの実行中にディープリンクが正しく開くように、専用のディープリンクアクティビティを作成する必要があります。

これは、適切に設定しないと、ディープリンクによってアプリが新しいタスク内で起動したり、ブラウザーなど別のアプリのタスク内で起動したりする可能性があり、アプリの2つのインスタンスが同時に実行されてることがあるためです。

ネイティブAndroid設定

  1. 専用ディープリンクアクティビティ アプローチを使用してマニフェストを設定する
  2. メインのFlutterActivityにディープリンクを転送するDedicatedDeepLinkActivityを作成する
  1. ユーザーがAdjustリンクをクリックします。
  2. OSがディープリンクインテントでDedicatedDeepLinkActivityを開きます。
  3. DedicatedDeepLinkActivity が既存のインスタンスを前面に押し出すフラグを使用して、メインのFlutterActivityにインテントを転送します。
  4. FlutterActivity がディープリンクURIをFlutterEngineにパスします。
  5. FlutterEngineは、app_linksが受信するDartコードにURIを配信します。

どのFlutterディープリンクライブラリを使用していてもこのフローは同じです。上記に示すもの以外に、Adjust SDKと連携するのに必要なFlutterコードはありません。