AppsFlyerの連携済みパートナーであるmParticleは、顧客データを収集し、各種の分析、マーケティング、データウェアハウスのプラットフォームに送信します。
重要
一部のメディアソースは、第三者へのデータ共有を制限しています。そのため、制限対象のイベントのポストバックは、送信設定にかかわらず、このパートナーには送信されません。
イベント連携
このドキュメントでは、mParticleのイベントデータをAppsFlyerで活用するための設定について説明します。
1. mParticleをご利用の場合は、アプリにAppsFlyerキットを組み込む必要があります。 mParticle SDKはAppsFlyer SDKを初期化し、必要なアプリのライフサイクルイベントをすべてAppsFlyer SDKに転送します。
2. mParticle SDKとともにAppsFlyerキットをアプリに設定する方法は、iOSおよびAndroid SDKのGitHubリポジトリを参照してください。
AppsFlyerのイベント連携の設定
1. mParticle管理画面(https://app.mparticle.com)で、対象のアプリ(Workspace)を選択します。
2. 左側のナビゲーションでDirectoryをクリックします。
3. AppsFlyerのタイルをクリックすると、カテゴリ、対応プラットフォーム、必要なmParticle SDKの最小バージョン(該当する場合)、データ型、ユーザーID、デバイスID、利用可能なイベントや設定など、連携の詳細が表示されます。
4. [Add AppsFlyer to Setup]をクリックします。
Add to Setupウィンドウが開きます。
5. Output Event Integration Typeを選択し、Add to Setupをクリックします。Event Configuration Setup画面が開き、設定を続けられます。
6. AppsFlyerの設定情報を入力し、Saveをクリックします。
- 設定名
- 開発環境と本番環境に同じ設定を使用
- Devキー
- 作成した設定が、AppsFlyer Default Groupの下に表示されます。
次に、入力元のプラットフォームとAppsFlyerの出力イベント設定を接続します。
7. Connectionsをクリックします。
8. 入力元(この例ではiOS)を選択し、Connect Outputをクリックします。
9. AppsFlyerのタイルを選択し、先ほど作成したAppsFlyerの設定を選択します。
10. AppsFlyerの接続設定を入力します。
Apple App ID(IDの接頭辞を付けず、数字のみを入力します。たとえば、App IDがid123456789の場合は、123456789と入力します。)
11. Add Connectionをクリックします。
AppsFlyerがConnected Outputとして表示されます。Custom Mappingsなどの追加オプションを利用できる場合もあります。詳細は、mParticleのドキュメントを参照してください。
フィード連携
このセクションでは、AppsFlyerからmParticleへのデータフィードの接続方法を説明します。
AppsFlyerとの連携の概要は、https://docs.mparticle.com/integrations/appsflyer/feed/を参照してください。
1. mParticle管理画面(https://app.mparticle.com)で、対象のアプリ(Workspace)を選択します。
2. 左側のナビゲーションでDirectoryをクリックします。
3. AppsFlyerのタイルをクリックすると、連携の詳細が表示されます。
4. [Add AppsFlyer to Setup]をクリックします。
5. Input Feed Integration Typeを選択し、Add to Setupをクリックします。
Setup画面に移動し、設定を続けられます。
6. AppsFlyerの設定情報を入力し、Createをクリックします。
- 設定名
- アプリケーションとして動作
7. 表示された認証情報を使って、AppsFlyer管理画面で設定を完了します。
ディファードディープリンク
AppsFlyerでは、SDKからユーザーのアトリビューションデータにリアルタイムで直接アクセスできます。これにより、ユーザーがアプリを新規インストールした後、初めて開いたときに表示するページをカスタマイズできます。これは一般に「ディファードディープリンク」と呼ばれます。
ディファードディープリンクの詳細は、こちらを参照してください。
AppsFlyerのコンバージョンデータには、is_First_Launchというパラメータがあります。 is_First_Launchは、初回起動時のみtrueになり、2回目以降の起動ではfalseになります。このパラメータを使って、起動のたびに、ディファードディープリンクでユーザーを誘導する必要があるかどうかを判断できます。
af_dp → $deeplink_path
例
$deeplink_path=product/Banana-Pet-Costume/dd67268672b345e491656c871af8aa29
af_dpには、エンコードされたURIスキームとパスが含まれます。
af_dp →
%20jet%3A%2F%2Fproduct%2FBanana-Pet-Costume%2Fdd67268672b345e491656c871af8aa29
Android
Androidの場合:Shared Preferencesを使用します。こちらを参照してください。
AttributionListener myListener = new AttributionListener() {
@Override
public void onResult(@NonNull AttributionResult attributionResult) {
if (attributionResult.getServiceProviderId() == MParticle.ServiceProviders.APPSFLYER) {
JSONObject attributionParams = attributionResult.getParameters();
if (attributionParams != null && attributionParams.has(AppsFlyerKit.INSTALL_CONVERSION_RESULT)) {
Log.d("Conversion result", attributionParams.toString());
} else if (attributionParams != null && attributionParams.has(AppsFlyerKit.APP_OPEN_ATTRIBUTION_RESULT)) {
Log.d("App open result", attributionParams.toString());
}
}
}
@Override
public void onError(@NonNull AttributionError attributionError) {
Log.d("Attribution Data Error", attributionError.toString());
}
};
MParticleOptions options = MParticleOptions.builder(this)
.credentials("replaceWithAPIKey", "replace-withAPISecret")
.attributionListener(myListener)
.build();
MParticle.start(options);
iOS
iOSの場合:UserDefaultsを使用します。こちらを参照してください。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MParticleOptions *options = [MParticleOptions optionsWithKey:@"<>" secret:@"<>"];
options.onAttributionComplete = ^void (MPAttributionResult *_Nullable attributionResult, NSError * _Nullable error) {
if (error) {
NSLog(@"Attribution fetching for kitCode=%@ failed with error=%@", error.userInfo[mParticleKitInstanceKey], error);
return;
}
NSLog(@"Attribution fetching for kitCode=%@ completed with linkInfo: %@", attributionResult.kitCode, attributionResult.linkInfo);
}
[[MParticle sharedInstance] startWithOptions:options];
return YES;
}
AppsFlyer/mParticleのユースケース
| ユースケース | プラットフォーム | AppsFlyer SDKのメソッド | mParticle-AFキットのメソッド |
|---|---|---|---|
| ディファードディープリンク | iOS | onConversionDataSuccess | checkForDeferredDeepLinkWithCompletionHandler |
| ユニバーサルリンク | iOS | continueUserActivity | continueUserActivity |
| アプリの起動 | iOS | onAppOpenAttribution | checkForDeferredDeepLinkWithCompletionHandler |
| ディファードディープリンク | Android | onConversionDataSuccess | checkForDeepLink |
| Android App Links | Android | <intent-filter android:autoVerify="true"> | continueUserActivity |
| アプリの起動 | Android | onAppOpenAttribution | checkForDeepLink |
ユーザーフラグの処理
AppsFlyerでは、初回起動後も、パーソナライズしたコンテンツを表示したり、既存ユーザーをアプリ内の特定の場所に誘導したりできます。既存ユーザーがディープリンクでアプリを開くと、onOpenAttributionメソッドから、参照元URLのデータが返されます。
if let conversionData = params?[MPKitAppsFlyerConversionResultKey] as? [AnyHashable: Any], !alreadyLoggedAppsflyerConversionData {
logAppsflyerConversionData(conversionData: conversionData)
alreadyLoggedAppsflyerConversionData = true
if let onelinkURL = (conversionData["af_dp"] as? String).flatMap(URL.init) {
UIApplication.appDelegate._linkController.handle(onelinkURL, source: .appsflyer)
}
} else if let appOpenData = params?[MPKitAppsFlyerAppOpenResultKey] as? [AnyHashable: Any] {
logAppsflyerAppOpenData(appOpenData: appOpenData as? [String: Any])
}AppsFlyerは、iOSのUserDefaultsとAndroidのShared Preferencesを使って、ユーザーの初回起動で適切なページへの誘導が必要なのか、それともすでに起動済みで誘導も完了しているのかを判別します。この処理では、UserDefaults/alreadyLoggedAppsflyerConversionDataの値を読み書きし、初回起動時にaf_dpの値を参照しないようにします。
ディープリンクでパーソナライズしたコンテンツを表示する方法の詳細は、こちらを参照してください。
mParticleでAppsFlyerのアンインストール計測を有効にする
mParticle-AppsFlyer SDKキットでは、AppsFlyerのアンインストール計測は自動では有効になりません。アンインストールを計測するには、AppsFlyerのアンインストール計測のドキュメントに従って、AppsFlyerのメソッドを直接呼び出してください。
iOSまたはAndroidでアンインストール計測を実装するには、次の手順に従います。
- アンインストール計測のドキュメントに従って、AppsFlyerのメソッドを直接呼び出します。