ユニファイド ディープリンク(UDL)
概要:Unified Deep Linking(UDL)により、アプリ起動時に新規および既存ユーザーを特定のアプリ内アクティビティ(例えば、アプリ内の特定のページなど)に誘導することができます。
UDLのプライバシー保護
新規ユーザーの場合、UDLメソッドはディファードディープリンクに関するパラメーターのみを返します:
deep_link_value
およびdeep_link_sub1-10
。その他のパラメーター(media_source
、campaign
、af_sub1-5
など)を取得しようとすると、null
を返します。
フロー


UDLはモバイルユーザーをアプリ内の特定のアクティビティまたはコンテンツに誘導します。
計測フローは次のとおりです。
- ユーザーがOneLinkのリンクをクリックします。
- ユーザーがアプリをインストールしている場合は、AndroidアプリリンクまたはURIスキームでアプリを開きます。
- ユーザーがアプリをインストールしていない場合は、アプリストアにリダイレクトされ、ダウンロード後、アプリを開きます。
- アプリ起動がAppsFlyer SDKをトリガーします。
- AppsFlyer SDKはUDL APIを実行します。
- UDL APIはOneLinkデータをAppsFlyerサーバーから取得します。
- UDL APIは、
DeepLinkingListener
クラスのonDeepLinking()
メソッドをコールバックします。 onDeepLinking()
メソッドは、DeepLinkResult
オブジェクトを取得します。DeepLinkResult
オブジェクトには以下が含まれています。- Status (Found/Not found/Error)
deep_link_value
とdeep_link_sub1-10
パラメーターを持つDeepLink
オブジェクト。これはOneLinkの主な目的である、ユーザーを特定のアプリ内アクティビティに誘導するためにディベロッパーが使用します。
前提条件
- UDL には、AppsFlyer Android SDK V6.1以降が必要です。
計画
OneLinkを設定する際は、マーケティング担当者はこのパラメーターをリンクを作成するために使用し、ディベロッパーは、受け取った値をもとにアプリの動作をカスタマイズします。アプリ内でのルーティングやリンク先でのデータのパーソナライズなど、アプリ内でパラメータが正しく処理されるように実装するのはディベロッパーの責任です。
OneLinkの計画方法:
- ユーザーがURLをクリックしたときに、どのような動作が発生し、どのような体験をするのかをマーケティング担当者からヒアリングしてください。
- 希望する動作に基づいて、ユーザーにパーソナライズれた体験を提供するために必要な
deep_link_value
とその他のパラメーターを計画してください。deep_link_value
は、URL上でマーケティング担当者により設定され、ディベロッパーがユーザーをアプリ内の特定の場所にリダイレクトするために使用します。例えば、フルーツストアアプリ内でユーザーをリンゴのページにリダイレクトしたい場合、deep_link_value
の値はapples
となります。deep_link_sub1-10
パラメーターはURLに追加することができ、ユーザー体験をパーソナライズすることができます。例えば、10%割引をオファーする場合、deep_link_sub1
の値は、10
となります。
実装
🤖
Android向けのUnified Deep Linking (UDL) API
Open Recipe
UDL APIを選択したパラメーターと値に基づいて実装してください。
subscribeForDeepLink()
メソッド(AppsFlyerLib
から)を使用して、DeepLinkListener
インターフェイスリスナーを登録してください。- 必ずコールバック関数
onDeepLinking()
をオーバーライドしてください。onDeepLinking()
は、DeepLinkResult
オブジェクトを引数として受け取ります。 getStatus()
を使用して、ディープリンクのマッチが見つかるかどうかクエリしてください。- ステータスがエラーの場合は、
getError()
を呼び出して、エラーフローを実行します。 - ステータスが見つかった場合には、
getDeepLink()
を使用して、DeepLink
オブジェクトを取得します。DeepLink
オブジェクトには、ディープリンク情報とヘルパー関数が含まれており、既知の OneLink キーから値を簡単に取得できます(例:getDeepLinkValue()
など)。 getDeepLinkValue()
を使ってdeep_link_value
を取得してください。getStringValue("deep_link_sub1")
を使ってdeep_link_sub1
を取得してください。deep_link_sub2-10
パラメーターについても同じ操作を行い、必要に応じて文字列値を変更してください。deep_link_value
とdeep_link_sub1-10
が取得できたら、アプリ内ルーターへ渡しユーザー体験をパーソナライズするために使用してください。
Code example
appsflyer.subscribeForDeepLink(new DeepLinkListener(){
@Override
public void onDeepLinking(@NonNull DeepLinkResult deepLinkResult) {
DeepLinkResult.Status dlStatus = deepLinkResult.getStatus();
if (dlStatus == DeepLinkResult.Status.FOUND) {
Log.d(LOG_TAG, "Deep link found");
} else if (dlStatus == DeepLinkResult.Status.NOT_FOUND) {
Log.d(LOG_TAG, "Deep link not found");
return;
} else {
// dlStatus == DeepLinkResult.Status.ERROR
DeepLinkResult.Error dlError = deepLinkResult.getError();
Log.d(LOG_TAG, "There was an error getting Deep Link data: " + dlError.toString());
return;
}
DeepLink deepLinkObj = deepLinkResult.getDeepLink();
try {
Log.d(LOG_TAG, "The DeepLink data is: " + deepLinkObj.toString());
} catch (Exception e) {
Log.d(LOG_TAG, "DeepLink data came back null");
return;
}
// An example for using is_deferred
if (deepLinkObj.isDeferred()) {
Log.d(LOG_TAG, "This is a deferred deep link");
} else {
Log.d(LOG_TAG, "This is a direct deep link");
}
// ** Next if statement is optional **
// Our sample app's user-invite carries the referrerID in deep_link_sub2
// See the user-invite section in FruitActivity.java
if (dlData.has("deep_link_sub2")){
referrerId = deepLinkObj.getStringValue("deep_link_sub2");
Log.d(LOG_TAG, "The referrerID is: " + referrerId);
} else {
Log.d(LOG_TAG, "deep_link_sub2/Referrer ID not found");
}
// An example for using a generic getter
String fruitName = "";
try {
fruitName = deepLinkObj.getDeepLinkValue();
Log.d(LOG_TAG, "The DeepLink will route to: " + fruitName);
} catch (Exception e) {
Log.d(LOG_TAG, "Custom param fruit_name was not found in DeepLink data");
return;
}
goToFruit(fruitName, deepLinkObj);
}
});
⇲ Github リンク:Java
更新済 4か月前
このページは役に立ちましたか?