はじめに
既存ユーザーが友人やコンタクトを新規ユーザーとしてアプリに招待できるようにすることで、アプリインストール数増加のきっかけとなる場合があります。
AppsFlyerでは、アプリ内のユーザー招待から発生したインストールの計測とアトリビューションを行うことができます。
注意
User Inviteアトリビューションは、AppsFlyerのSDKバージョン4.8.0以降、Unity SDKバージョン4.17.0で利用できます。
ユーザー招待機能を設けることがなぜ役立つのですか?
友達にあなたのアプリを紹介するユーザーは価値の高いユーザーであり、このユーザーを保持、リターゲティング、インセンティブを与えたりなどをされたいはずです。
他の方法と比較して、ユーザーの招待により、ROIが向上しますか?
ケースバイケースですが、向上する場合も、そうでない場合もあります。
AppsFlyerのコストパラメータを使用して、代替案に基づいてユーザー招待インストールにコストを割り当てることができます。
例
バナー広告は5ドルのRPMを獲得します(これを測定するための優れた方法はこちら )。平均して、ビューから招待アクションへのコンバージョン率が2%で、招待からインストールへのコンバージョン率が10%です。=1,000回のビューごとに2人の新しいユーザーを獲得します。したがって、同じバナースペースを使用して招待を宣伝すると、インストールあたり$5 / 2 = $2.5かかります。af_cost_value=2.5値を追加して、このコストをダッシュボードに反映します。
収益レポートのアプリ内イベントと組み合わせると、どのユーザー招待キャンペーンがどういった結果をもたらし、どの招待チャネルが目的に最適であるかを確認できます。
ユーザー招待のアトリビューションはどのように機能しますか?
招待リンクにアトリビューションされたインストールは、ダッシュボードのメディアソース af_app_invites
下に表示されます。
招待の送信に使用されるチャネル(メール、SMS、Facebookなど)は、メディアソース af_app_invites下のChannel
グループの下に表示されます。
メディアソース 'af_app_invites' を選択し、チャネル別にグループ化すると、GmailとFacebookを経由したユーザー招待からのクリックとインストールが表示されます。
開発者ガイド
ライブラリのインポート
Androidでは、次のライブラリを必ずインポートしてください。
import com.appsflyer.share.ShareInviteHelper;
import com.appsflyer.share.LinkGenerator;
OneLinkの設定
招待アトリビューションはOneLinkを使用して、招待されたユーザーを関連するアプリストアにリダイレクトします。OneLinkでは、ディファードディープリンクを使用することもできます。ディファードディープリンクは、ユーザーがアプリを起動したときにアプリ内の特定のアクティビティページを開きます。また、カスタマイズされたコンテンツを設定して、招待後のインストールのコンテキストでユーザーのリテンションを維持します。
アプリにOneLinkを正しく設定してください。
- OneLinkリダイレクトを設定する
- ディファードディープリンク実装ガイドを参照 - ディファードディープリンクを設定すると、特定のアクティビティ、または招待した / されたユーザーへ報酬を与えるためのデータを提供します。
- オプション - OneLinkディープリンクを設定 - OneLinkディープリンクを設定する必要はありませんが、特定のシナリオで役立つ場合があります。
例:- ユーザーが友だちを招待してアプリをインストールするキャンペーンを設定します。どちらもアプリで使用するクレジットポイントを獲得できます。招待者がアプリをインストールすると、招待したユーザは50クレジットポイント、招待されたユーザは100クレジットポイントを獲得します。招待されたユーザが既にアプリをインストールしている場合、招待したユーザは25クレジットポイント、招待されたユーザは50クレジットポイントを獲得します。2つのケースを区別するには、最初のディファードディープリンクと2番目のディープリンクを使用します。
OneLinkが正常に設定されたら、関連するOneLink IDを取得します。
アプリでstartTracking
を呼び出す前に、OneLink ID(この例では1bBC)に従って呼び出されるOneLinkを設定します。
注意
正しいOneLink IDが使用されていることを確認してください。そうでない場合、作成されたアトリビューションリンクが壊れます。
AppsFlyerLib.getInstance().setAppInviteOneLink("1bBC");
[AppsFlyerTracker sharedTracker].appInviteOneLinkID = @"1bBC"
;
AppsFlyerTracker.shared()?.appInviteOneLinkID = "1bBC";
AppsFlyer.setAppInviteOneLinkID("1bBC
");
重要
User Invite機能で短縮されたOneLinkを生成するには、OneLinkのサブドメインを 追加設定の OneLinkテンプレートの設定ページを設定する必要があります。OneLinkに一意のサブドメインを設定しない場合、追加されたすべてのパラメーターがリンクに表示された、 "長い" OneLinkが生成されます。
リンクを生成する
LinkGeneratorクラスは、クリックで追加情報を渡すことができるさまざまなセッターメソッドに従って招待URLを作成します。この情報は、新しいユーザーが招待を受け入れてアプリをインストールするときに、 getConversionData
を通じて利用できます。さらに、キャンペーンとチャネルのパラメーターはAppsFlyerダッシュボードに表示されます。
LinkGenerator linkGenerator = ShareInviteHelper.generateInviteUrl(MainActivity.this);
linkGenerator.setChannel("Gmail");
linkGenerator.addParameter("af_cost_value","2.5");
linkGenerator.addParameter("af_cost_currency","USD");
// optional - set a brand domain to the user invite link
linkGenerator.setBrandDomain("brand.domain.com");
CreateOneLinkHttpTask.ResponseListener listener = new CreateOneLinkHttpTask.ResponseListener() {{
@Override
public void onResponse(String s) {
Log.d("Invite Link", s);
// write logic to let user share the invite link
}
@Override
public void onResponseError(String s) {
// handle response error
}
}};
linkGenerator.generateLink(MainActivity.this, listener);
注意:
-
onResponse
およびonResponseError
は、OneLink URLを生成するためのコールバックメソッドです。これらはCreateOneLinkHttpTask.ResponseListener
インターフェイスの一部であり、実装する必要があります。これらは、アプリケーションのさまざまなビューに配置できる招待リンクを生成するために使用されます。 - これらのアトリビューションリンクパラメータのいずれかを、生成されたリンクに追加できます。
[AppsFlyerShareInviteHelper generateInviteUrlWithLinkGenerator:^AppsFlyerLinkGenerator * _Nonnull(AppsFlyerLinkGenerator * _Nonnull generator) {
[generator setChannel:@"channel_name"];
[generator setReferrerName:@"referrer_name"];
[generator addParameterValue:@"2.5" forKey: @"af_cost_value"];
// optional - set a brand domain to the user invite link
[generator setBrandDomain:@"brand.domain.com"];
return generator;
} completionHandler:^(NSURL * _Nullable url) {
NSLog(@"%@", url);
// write logic to let the user share the invite link
}];
AppsFlyerShareInviteHelper.generateInviteUrl(linkGenerator:
{(_ generator: AppsFlyerLinkGenerator) -> AppsFlyerLinkGenerator in
generator.setChannel("channel_name")
generator.setReferrerName("referrer_name")
generator.addParameterValue("2.5", forKey: "af_cost_value")
// optional - set a brand domain to the user invite link
generator.brandDomain = "brand.domain.com"
return generator },
completionHandler: {(_ url: URL?) -> Void in // write logic to let the user share the invite link })
Dictionary<string,string> inviteDicionary = new Dictionary<string,string>();
inviteDicionary.Add("channel","channel_name");
inviteDicionary.Add("referrerName","referrer_name");
AppsFlyer.generateUserInviteLink(inviteDicionary, "customCallbackObject", "onSuccessMethodName", "onFailedMethodName");
iOS:
Dictionary<string,string> inviteDicionary = new Dictionary<string,string>();
inviteDicionary.Add("channel","channel_name");
inviteDicionary.Add("referrerName","referrer_name");
AppsFlyer.generateUserInviteLink(inviteDicionary, null, null, null);
// Any value can be set instead of null, but the iOS callback will always
//return to the AppsFlyerTrackerCallbacks object -> onInviteLinkGenerated callback method.
すべてのリンクジェネレータセッター
API名 | 説明 | 使用法 |
---|---|---|
setChannel(String channel) |
招待状が送信されたチャネル |
推奨 |
setCampaign(String campaign) |
キャンペーン名 |
オプション |
setReferrerName(String referrerName) |
紹介したユーザーの名前 |
オプション |
setReferrerImageURL(String referrerImageURL) |
紹介したユーザーのアバターへのURL |
オプション |
setReferrerCustomerId(String referrerCustomerID) |
紹介したユーザーのCUIDを設定 |
オプション |
addParameter(String key, String value) |
単一のKey-Valueカスタムパラメータ |
オプション |
addParameters(Map parameters) |
複数のKey-Valueカスタムパラメータ |
オプション |
setBrandDomain(String domain) |
ブランドドメインの名前 |
オプション ブランドリンクの作成が必要 |
API名 | 説明 | 使用法 |
---|---|---|
setChannel :(NSString *) channel |
招待状が送信されたチャネル |
推奨 |
setCampaign :(NSString *) campaign |
キャンペーン名 |
オプション |
setReferrerName :(NSString *) referrerName |
紹介したユーザーの名前 |
オプション |
setReferrerImageURL:(NSString *) referrerImageURL; |
紹介したユーザーのアバターへのURL |
オプション |
setReferrerUID :(NSString *) referrerUID |
内部システムのカスタマーユーザーID (CUID) |
オプション |
addParameterValue :(NSString *) value forKey:(NSString*)key |
単一のKey-Valueカスタムパラメータ |
オプション |
addParameters :(NSDictionary*) parameters |
複数のKey-Valueカスタムパラメータ |
オプション |
setBrandDomain :(NSString *) |
ブランドドメインの名前 |
オプショナル ブランドリンクの作成が必要 |
送信者の招待を記録する
送信者の観点から招待を記録するために、招待が送信された後にアプリ内イベントを生成することをお勧めします。これにより、友達を招待する傾向が最も強いユーザーと、それらのユーザーを獲得するメディアソースを見つけることができます。
通常のアプリ内イベントを送信するか、代わりにtrackInvite
メソッドを使用できます。trackInvite
は、使いやすくするためにAPIにカプセル化された既製のアプリ内イベントです。
ShareInviteHelper.trackInvite(context, channel, additionalParametersForTheEvent_optional);
NSDictionary *optional_params = @{@"key": @"value"};
[AppsFlyerShareInviteHelper trackInvite:@"your_channel" parameters:optional_params];
招待されたユーザーのインストール後にアトリビューションデータを取得する
リンクジェネレーターで渡されたすべてのパラメーターは、 getConversionData
を呼び出すことで利用できます。これにより、関連するパラメーター(招待したユーザ名やアバターURLなど)を取得し、新しいユーザーの初回エクスペリエンスをパーソナライズできます。
getConversionData
によって返されるアトリビューションデータの例:
{
"attribute": "is_first_launch" = "true"
"attribute": "click_time" = "2019-04-04 08:33:05.668"
"attribute": "af_referrer_customer_id" = "CUSTOMER_USER_ID"
"attribute": "shortlink" = "12a3b456"
"attribute": "af_referrer_uid" = "1234567890123-4567890123456789012"
"attribute": "af_siteid" = "com.company.app"
"attribute": "install_time" = "2019-04-04 08:33:45.286"
"attribute": "cost_cents_USD" = "0"
"attribute": "campaign" = "None"
"attribute": "af_click_lookback" = "7d"
"attribute": "orig_cost" = "0.0"
"attribute": "af_status" = "Non-organic"
"attribute": "iscache" = "true"
"attribute": "media_source" = "af_app_invites"
}
コンバージョンデータの使用に関する詳細: iOS / Android
再エンゲージメントのためのユーザー招待リンクの使用
再エンゲージメントのためにユーザー招待リンクを使用できます。ただし、招待されたユーザーがアプリをインストールしていることを確認する必要があります。アプリを持っていないユーザーがユーザー招待リンクを取得してアプリをインストールすると、クリックはリターゲティングダッシュボードに表示されますが、インストールはオーバービューダッシュボードに表示されます。
再エンゲージメントにユーザー招待リンクを使用するには、パラメーター is_retargeting
を追加し、addParameter
メソッドを使用してtrueに設定します。
AppsFlyerLib.getInstance().addParameter("is_retargeting", "true");
[generator addParameterValue: @"true" forKey: @"is_retargeting"]
;
generator.addParameterValue("true" forKey: "is_retargeting")
inviteDictionary.Add("is_retagerting", "true");
ユーザー招待に対する報酬
友達を招待してアプリをインストールさせたユーザーに報酬を与えることができます。報酬を与えることで、ユーザーに友達を招待するように勧めます。これは、ユーザーベースを拡大し、収益を高めるための優れた方法です。
いつ報酬を与えるか
招待されたユーザーがアプリをインストールした後に報酬を与えることができます。また、友達がアプリ内購入など特定のアプリ内イベントを実行したときに、報酬を与えることもできます。
インストール時にユーザーに報酬を与える
招待されたユーザーがアプリをインストールすると、招待したユーザのIDをSDKのコンバージョンデータで見つけることができます。
- af_referrer_uid - 招待を送信したユーザーのAppsFlyer IDです
- af_referrer_customer_id - 招待を送信したユーザーのカスタマーユーザーIDです。このユーザーにカスタマーユーザーIDを設定した場合にのみ、コンバージョンデータに表示されます。
リファラーIDを使用してインストール時に報酬を与える
JennyはNiviにアプリのインストールを勧め(紹介し)ました。
- Niviがアプリを起動すると、アプリはJennyのリファラーIDを取り出します
- アプリがリファラーIDをバックエンドに送信します
- バックエンドで、報酬を受け取るユーザーのリストにJennyのリファラーIDを追加します
- Jennyがアプリを起動したら、リファーラーIDが報酬の対象となるユーザーのリストに含まれているかどうかを確認します
- もし含まれている場合、彼女に報酬を与えます
特定のアプリ内イベントでユーザーに報酬を与える
ユーザーを獲得するだけでなく、ユーザーの招待を通じて収益を上げたい場合は、特定のアプリ内イベントに対して報酬を得ることができます。この場合、招待されたユーザーが購入や定期購入などのアプリ内イベントを実行した場合にのみ、紹介ユーザーに報酬を与えます。
アプリ内イベントで報酬を与えるプロセス
JennyはNiviにアプリのインストールを勧め(紹介し)ました。
招待リンクに af_sub1 を設定します
- JennyがNiviを招待するときに、招待リンクを生成します
- 招待リンクに、パラメータ
af_sub1=<JENNY_USER_ID>
を追加します
Niviがアプリをインストールして購入します。彼が購入すると、アプリ内イベントがAppsFlyerに送信されます。このアプリ内イベントには、sub1=<JENNY_USER_ID>
が紐づけられています。
報酬を受けるユーザーのリストを更新するには、af_sub1を使用します。
- Pull APIを使用してアプリ内イベントデータを引き出すか、Push APIからアプリ内イベントデータを取得します。
- データで、メディアソースとして af_app_invites を持つイベントを探します。
- そのようなイベントには、リファラーIDを含む af_sub1 が紐づけられています。
- 報酬を受けるユーザーのリストにリファラーIDを保存します。
Jennyへ報酬を与える
- Jennyがアプリを起動したら、リファーラーIDが報酬の対象となるユーザーのリストに含まれているかどうかを確認します
- もし含まれている場合、彼女に報酬を与えます
カスタムダッシュボードビュー
以下は、ユーザー招待の情報を示すカスタムダッシュボードの使用可能なビューです。