Skip to content

Latest commit

 

History

History
1963 lines (1526 loc) · 78.1 KB

README.md

File metadata and controls

1963 lines (1526 loc) · 78.1 KB

これはネイティブadjust™のAndroid SDKガイドです。adjust™についての詳細はadjust.comをご覧ください。

Read this in other languages: English, 中文, 日本語, 한국어.

目次

Quick start

ディープリンキング

イベントトラッキング

カスタムパラメータ

追加機能

トラブルシューティング

ライセンス

Quick start

サンプルアプリ

Android サンプルアプリがexample ディレクトリ (example-app-java) および (example-app-kotlin directories)にあります。Webviewに使用するサンプルアプリは(example-webbridge) 、Android TVのサンプルは (example-app-tv)をご覧ください。をご覧ください。SDK実装の際は、Androidプロジェクトを開き、このサンプルをご参照ください。

基本的な導入方法

Adjust SDKをAndroidプロジェクトに実装する手順を説明します。ここでは、Androidアプリケーションの開発にAndroid Studioが使用されていること、対象はAndroid APIレベル 9(Gingerbread) 以降であることを条件に説明します。

SDKをプロジェクトに追加する

Mavenを使用している場合は、以下の内容をbuild.gradleファイルに追加します。file:

implementation 'com.adjust.sdk:adjust-android:4.26.1'
implementation 'com.android.installreferrer:installreferrer:2.2'

アプリの WebView内で Adjust SDK を使用したい場合は、以下のdependencyを追加してください。

implementation 'com.adjust.sdk:adjust-android-webbridge:4.26.1'

Adjust SDK およびWebView拡張機能をJAR ファイルとして追加し、Adjust リリースページからダウンロードすることもできます。

Google Playサービスの追加

2014年8月1日より、Google Playストアのアプリには、端末をユニーク判別するためにGoogle Advertising IDの使用が義務付けられました。Adjust SDKでGoogle広告ID(gps_adid / Google Play Services Advertising ID)を使用するには、Google Playサービスを導入する必要があります。導入済みではい場合は、以下の手順に沿って設定してください。

  • アプリのbuild.gradleファイルを開き、dependenciesブロックに次の行を追加してください。
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'

注意: Adjust SDKは、Google Playサービスの一つであるplay-services-analyticsライブラリの特定のバージョンとは紐付いていませんので、必要に応じて最新バージョンをご使用ください。

パーミッションの追加

AndroidManifest.xmlファイルにAdjust SDKに必要なパーミッションが存在しない場合は、以下を追加してください。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Google Playストア以外の第三者ストアからアプリをリリースする場合は、以下のパーミッションも追加してください。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

Proguardの設定

Proguardをお使いの場合は、以下をProguardファイルに追加してください。

-keep class com.adjust.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
    int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
    com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
    java.lang.String getId();
    boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }

Google Playストア以外の第三者ストアからアプリをリリースする場合は、com.adjust.sdkのパッケージ規定にしたがってください。

-keep public class com.adjust.sdk.** { *; }

インストールリファラ

アプリのインストールをアトリビューションソースに正確にアトリビュートするため、Adjustはインストールリファラの情報を必要とします。そのためにGoogle Play リファラ APIかブロードキャストレシーバーを使用して、Google Playストアのインテントを取得します。

重要:Google Play リファラ APIは、Androidのインストールリファラをより安全に提供し、またクリックインジェクションの不正に対抗する目的でGoogleが新たに導入したものです。アプリケーションでこれをサポートすることを強く推奨します。Google Playストアのインテントは、インストールのリファラ情報を取得する上で安全性が低い方法です。当面、新しいGoogle Play Referrer APIと並行して引き続き存在しますが、将来廃止される予定となっています。

Google Play リファラAPI

アプリでこのAPIをサポートするには、SDKをプロジェクトに追加する の章の手順に適切に従って、以下の行をbuild.gradleファイルに追加していることを確認してください。

implementation 'com.android.installreferrer:installreferrer:2.2'

また、Proguardの設定の章をよく読んで、記載されているすべてのルール、特に、この機能に必要なルールが追加されていることを確認してください。

-keep public class com.android.installreferrer.** { *; }

この機能は、Adjust SDK v4.12.0以降を使用している場合にサポートされます。

Google Playストアのインテント

Google Play ストアのINSTALL_REFERRERインテントは、ブロードキャストレシーバーを使用して受信することをおすすめします。ブロードキャストレシーバーを使用せずにINSTALL_REFERRERインテントを取得したい場合、以下のreceiverタグをAndroidManifest.xmlapplicationタグ内に追加してください。

<receiver
    android:name="com.adjust.sdk.AdjustReferrerReceiver"
    android:permission="android.permission.INSTALL_PACKAGES"
    android:exported="true" >
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

Adjustはこのブロードキャストレシーバーを使用して、インストールのリファラ情報を取得し、バックエンドに転送します。

INSTALL_REFERRERインテントに対して既に他のブロードキャストレシーバーを使用している場合、こちらの説明に従って、Adjust ブロードキャストレシーバーを追加してください。

Huawei リファラAPI

Adjust SDKv4.21.1以降、Huawei端末におけるインストール計測のサポートは、バージョン10.4かそれ以降のAppGalleryがインストールされたHuawei端末のみに可能です。アプリでHuawei リファラAPIをサポートするのに必要な追加作業はありません。

SDKをアプリに実装する

まず最初に、基本的なセッショントラッキングを設定します。

基本設定

ネイティブアプリにSDK を実装する場合は、以下の ネイティブアプリSDK に示す手順に従ってください。SDK を アプリ内のWebViewで使用する場合は、以下の WebView SDK に示す手順に従ってください。

ネイティブアプリSDK

SDKの初期化には、Android アプリケーション のグローバルクラスを使用することを推奨します。アプリ内に存在しない場合、以下の手順に従ってください。

  • Applicationを継承したクラスを作成します。

  • アプリのAndroidManifest.xmlファイルを開き、<application>エレメントを確認します。

  • android:name属性を追加し、先頭にドット(.)を付けて新規アプリケーションのクラス名をセットします。

    サンプルアプリの場合、GlobalApplicationという名前のApplicationクラスを使用しているため、マニフェストファイルの設定は以下の通りになります。

     <application
       android:name=".GlobalApplication"
       <!-- ...-->
    </application>
  • ApplicationクラスのonCreateメソッドをご確認いただき、無い場合は作成してください。また、以下のコードを追加してAdjust SDKを初期化してください。

    import com.adjust.sdk.Adjust;
    import com.adjust.sdk.AdjustConfig;
    
    public class GlobalApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
    
            String appToken = "{YourAppToken}";
            String environment = AdjustConfig.ENVIRONMENT_SANDBOX;
            AdjustConfig config = new AdjustConfig(this, appToken, environment);
            Adjust.onCreate(config);
        }
    }

{YourAppToken}にアプリトークンを代入してください。アプリトークンは管理画面で確認することができます。

アプリのビルドをテスト用(Sandbox)か本番用(Production)に分けるためには、SDK内の環境environmentをいずれかにセットする必要があります。

String environment = AdjustConfig.ENVIRONMENT_SANDBOX;
String environment = AdjustConfig.ENVIRONMENT_PRODUCTION;

重要: リリース前のテスト段階では、AdjustConfig.ENVIRONMENT_SANDBOXに設定してください。アプリをストアに申請する前に、SDKの環境をAdjustConfig.ENVIRONMENT_PRODUCTIONにご変更ください。再度開発やテストを行う場合は、設定をAdjustConfig.ENVIRONMENT_SANDBOXに戻してください。

Adjustはこの環境設定を使用して、本番用の計測数値とテスト端末からのテスト計測を区別してレポート画面に表示します。この値の設定には常に注意が必要ですが、課金イベントを計測する場合は特に気をつけてください。

Web Views SDK

WebView オブジェクトのリファレンスを取得後:

  • webView.getSettings().setJavaScriptEnabled(true) を呼び出して、JavaScriptをWebViewで有効化します
  • AdjustBridge.registerAndGetInstance(getApplication(), webview) をコールして AdjustBridgeInstance のデフォルトインスタンスを起動します
  • これにより、Adjust ブリッジがWebViewの JavaScript Interface として登録されます

以上の手順を完了すると、アクティビティは次のようになります:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setWebViewClient(new WebViewClient());

        AdjustBridge.registerAndGetInstance(getApplication(), webview);
        try {
            webView.loadUrl("file:///android_asset/AdjustExample-WebView.html");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

この手順が完了すると、アプリに Adjust ブリッジが追加されます。JavaScript ブリッジは、Adjust のネイティブAndroid SDK と、WebViewにロードされるページの間での通信が可能となります。

HTMLファイルに、アセットのルートフォルダにある Adjust JavaScript をインポートしてください。HTML ファイルが同じ場所にある場合は、以下のような形でインポートできます:

<script type="text/javascript" src="adjust.js"></script>
<script type="text/javascript" src="adjust_event.js"></script>
<script type="text/javascript" src="adjust_third_party_sharing.js"></script>
<script type="text/javascript" src="adjust_config.js"></script>

JavaScript ファイルにリファレンスを追加したら、 HTML ファイル内でそれを使って Adjust SDK を初期化します。

let yourAppToken = '{YourAppToken}';
let environment = AdjustConfig.EnvironmentSandbox;
let adjustConfig = new AdjustConfig(yourAppToken, environment);

Adjust.onCreate(adjustConfig);

{YourAppToken} をアプリトークンに置き換えます。これは管理画面から確認できます。 次に、テスト中か本番用かに応じてenvironment の値を設定します。

let environment = AdjustConfig.EnvironmentSandbox;
let environment = AdjustConfig.EnvironmentProduction;

重要: アプリのテスト中は(その場合に限り)、値を AdjustConfig.EnvironmentSandbox に設定してください。アプリをストアに申請する前に、対象環境が AdjustConfig.EnvironmentProduction と設定されていることを確認してください。開発やテストを再開する場合は、値を AdjustConfig.EnvironmentSandbox に戻してください。

Adjustはこの環境設定を使用して、本番用の計測数値とテスト端末からのテスト計測を区別してレポート画面に表示します。

セッショントラッキング

注意:この手順は非常に重要です必ずアプリに正しく実装されていることを確認してください。この実装を行うことにより、アプリ内のAdjust SDKで適切なセッション計測が可能になります。

APIレベルが14以降

  • ActivityLifecycleCallbacksインターフェースを実装したプライベートクラスを追加します。このインターフェースを利用できなければ、そのアプリのAndroid APIレベルは14未満を対象としています。アクティビティをそれぞれ手動でアップデートする必要がありますので、こちらのガイドを参照してください。以前にAdjust.onResumeおよびAdjust.onPauseのコールを使っていた場合、これらを削除する必要があります。

  • onActivityResumed(Activity activity)メソッドを編集して、Adjust.onResume()のコールを追加します。onActivityPaused(Activity activity)メソッドを編集して、Adjust.onPause()のコールを追加します。

  • Adjust SDKの設定で、onCreate()メソッドを追加します。作成したActivityLifecycleCallbacksのコールと、作成したregisterActivityLifecycleCallbacksクラスのインスタンスを追加してください。

    import com.adjust.sdk.Adjust;
    import com.adjust.sdk.AdjustConfig;
    
    public class GlobalApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
    
            String appToken = "{YourAppToken}";
            String environment = AdjustConfig.ENVIRONMENT_SANDBOX;
            AdjustConfig config = new AdjustConfig(this, appToken, environment);
            Adjust.onCreate(config);
    
            registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks());
    
            //...
        }
    
         private static final class AdjustLifecycleCallbacks implements ActivityLifecycleCallbacks {
             @Override
             public void onActivityResumed(Activity activity) {
                 Adjust.onResume();
             }
    
             @Override
             public void onActivityPaused(Activity activity) {
                 Adjust.onPause();
             }
    
             //...
         }
      }

レベル9から13のAPI

GradleのminSdkVersion9から13の場合、14以上にアップデートすると、今後の連携の手順が容易になります。Android公式管理画面にて、最新バージョン関する情報をご確認ください。

セッショントラッキングを正しく行うためには、Acticityの開始または停止ごとにAdjust SDKの該当メソッドをコールする必要があります。この設定を行わないと、SDKはセッション開始やセッション終了を見落とす可能性があります。適切にセッションをトラッキングするには、全てのActivityに対して以下の作業を行なってください。

  • ActivityのonResumeメソッド中にAdjust.onResume()へのコールを追加してください。必要に応じてメソッドを作成してください。
  • ActivityのonPauseメソッド中にAdjust.onPause()へのコールを追加してください。必要に応じてメソッドを作成してください。

これらの手順を行うと、Activityは以下のように記述されます。

import com.adjust.sdk.Adjust;
// ...
public class YourActivity extends Activity {
    protected void onResume() {
        super.onResume();
        Adjust.onResume();
    }
    protected void onPause() {
        super.onPause();
        Adjust.onPause();
    }
    // ...
}

これと同じ手順をアプリのすべてのActivityに行なってください。将来新しいActivityを作成する場合、この手順を忘れないでください。コーディングスタイルの違いによって、すべてのActivityに対する共通のスーパークラスにこれを実装するという方法もあります。

SDKシグネチャー

Adjust SDK シグネチャーの有効化は、Adjustのアカウントマネージャーが行います。ご利用をご希望のクライアント様は、Adjust サポート ([email protected]) までご連絡ください。

アカウントで SDK シグネチャーが既に有効化され、Adjust 管理画面にあるアプリシークレット にアクセスする必要がある場合は、以下の方法でアプリに SDK シグネチャーを実装してください。

アプリシークレットは、設定するインスタンスで setAppSecret を呼び出して登録されます。

Native App SDK
AdjustConfig config = new AdjustConfig(this, appToken, environment);
config.setAppSecret(secretId, info1, info2, info3, info4);
Adjust.onCreate(config);
Web View SDK
let adjustConfig = new AdjustConfig(yourAppToken, environment);
adjustConfig.setAppSecret(secretId, info1, info2, info3, info4);
Adjust.onCreate(adjustConfig);

Adjustログの取得

ConfigインスタンスのsetLogLevelに設定するパラメータを変更することによって、記録するログのレベルを調節できます。

Native App SDK
config.setLogLevel(LogLevel.VERBOSE); // enable all logs
config.setLogLevel(LogLevel.DEBUG); // disable verbose logs
config.setLogLevel(LogLevel.INFO); // disable debug logs (default)
config.setLogLevel(LogLevel.WARN); // disable info logs
config.setLogLevel(LogLevel.ERROR); // disable warning logs
config.setLogLevel(LogLevel.ASSERT); // disable error logs
config.setLogLevel(LogLevel.SUPRESS); // disable all logs
Web View SDK
adjustConfig.setLogLevel(AdjustConfig.LogLevelVerbose); // enable all logs
adjustConfig.setLogLevel(AdjustConfig.LogLevelDebug); // disable verbose logs
adjustConfig.setLogLevel(AdjustConfig.LogLevelInfo); // disable debug logs (default)
adjustConfig.setLogLevel(AdjustConfig.LogLevelWarn); // disable info logs
adjustConfig.setLogLevel(AdjustConfig.LogLevelError); // disable warning logs
adjustConfig.setLogLevel(AdjustConfig.LogLevelAssert); // disable error logs
adjustConfig.setLogLevel(AdjustConfig.LogLevelSuppress); // disable all logs

すべてのログの出力を無効にする場合、ログレベルをsuppressに設定する他に、configオブジェクトのコンストラクタを使用してください (抑制されたログレベルがサポートされるべきかどうかを判定するboolean値が得られます)。

Native App SDK
AdjustConfig config = new AdjustConfig(this, appToken, environment, true);
config.setLogLevel(LogLevel.SUPRESS);
Adjust.onCreate(config);
Web View SDK
let adjustConfig = new AdjustConfig(yourAppToken, environment, true);
adjustConfig.setLogLevel(AdjustConfig.LogLevelSuppress);
Adjust.onCreate(adjustConfig);

アプリのビルド

Androidアプリをビルドして実行します。LogCatビューアにてtag:Adjustフィルタを設定し、他のすべてのログを非表示にすることができます。アプリが起動された後、Install trackedのログが出力されるはずです。

ディープリンキング

ディープリンク

URLからアプリへのディープリンクを使ったAdjustトラッカーURLをご利用の場合、ディープリンクURLとその内容の情報を得られる可能性があります。 ユーザーがすでにアプリをインストールしている状態でそのURLに訪れた場合(スタンダード・ディープリンキング)と、 アプリをインストールしていないユーザーがURLを開いた場合(ディファード・ディープリンキング)が有り得ます。 スタンダード・ディープリンキングの場合、Androidのプラットフォームにはディープリンクの内容を取得できる仕組みがあります。 ディファード・ディープリンキングに対してはAndroidプラットフォームはサポートしていませんので、 Adjust SDKがディープリンクの内容を取得するメカニズムを提供します。

スタンダード・ディープリンキング

アプリをすでにインストールしているユーザーがdeep_linkパラメータのついたAdjustのトラッカーURLを叩いた後でアプリを立ち上げたい場合、 アプリのディープリンキングを有効化する必要があります。ユニークスキーム名を選択し、リンクがクリックされてアプリが開いた時に起動したいアクティビティを 指定することで有効化できます。これはAndroidManifest.xml内で設定できます。マニフェストファルの該当のアクティビティ定義に intent-filterセクションを追加し、該当のスキーム名にandroid:schemeプロパティを指定してください。

<activity
    android:name=".MainActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/app_name"
    android:screenOrientation="portrait">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="adjustExample" />
    </intent-filter>
</activity>

この設定をすると、トラッカーURLがクリックされた時にアプリを開くには、AdjustトラッカーURLのdeep_linkパラメータにあるスキーム名を指定する必要があります。 ディープリンクに情報を追加していないトラッカーURLは次のようになります。

https://app.adjust.com/abc123?deep_link=adjustExample%3A%2F%2F

deep_linkパラメータの値はURLエンコードされる必要があります。

トラッカーURLをクリック後、アプリが上記の設定をされていれば、アプリはMainActivityインテントの通りに起動します。 MainActivityクラス内でdeep_linkパラメータの内容が自動的に提供されます。 届けられたこの情報はエンコードされていませんが、URL内ではエンコードされています。

AndroidManifest.xmlファイルのアクティビティのandroid:launchMode設定によっては、deep_linkパラメータの内容情報は アクティビティファイルの適切な箇所に届けられます。android:launchModeのとり得る値について詳しくはAndroid公式資料をご確認ください。

指定のアクティビティにIntentオブジェクトを介してディープリンクの内容情報を送ることができる場所は2か所あります。 アクティビティのonCreateメソッドかonNewIntentメソッドのいずれかです。アプリが起動してこれらのどちらかのメソッドが呼ばれると、 クリックURL中のdeep_linkパラメータ内の実際に渡されたディープリンクを取得することができます。 この情報はロジックを追加する際に使うことができます。

これらのメソッドからディープリンク情報を抽出する方法は以下の通りです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = getIntent();
    Uri data = intent.getData();
    // data.toString() -> This is your deep_link parameter value.
}
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Uri data = intent.getData();
    // data.toString() -> This is your deep_link parameter value.
}

ディファード・ディープリンキング

ユーザーがdeep_linkパラメータのついたトラッカーURLをクリックし、アプリ未インストールの場合はディファード・ディープリンキングが作動します。クリックしたユーザーはアプリストアにリダイレクトされます。アプリをダウンロードし初回起動したタイミングで、deep_linkパラメータの内容がアプリに送信されます。

Adjust SDKはデフォルトでディファード・ディープリンクを開きます。追加設定の必要はありません。

ディファード・ディープリンク のコールバック

コールバック関数を用いて、SDKがディファードディープリンクを開くかどうかを決めることができます。

Native App SDK
AdjustConfig config = new AdjustConfig(this, appToken, environment);

// Evaluate the deeplink to be launched.
config.setOnDeeplinkResponseListener(new OnDeeplinkResponseListener() {
    @Override
    public boolean launchReceivedDeeplink(Uri deeplink) {
        // ...
        if (shouldAdjustSdkLaunchTheDeeplink(deeplink)) {
            return true;
        } else {
            return false;
        }
    }
});

Adjust.onCreate(config);

Adjust SDKがサーバーからディープリンク情報を受信すると、リスナ内のディープリンク内容の情報を送信しますので、boolean値を返してください。 この値はAdjust SDKがディープリンクから指定したスキーム名へアクティビティを起動させたいかどうかで決定してください。 スキーム名の指定はスタンダード・ディープリンキングと同様です。

trueを返すと、スタンダード・ディープリンキング の章で説明したものと同様に起動します。 SDKにアクティビティをスタートさせたくない場合、リスナからfalseを返してください。 ディープリンクの内容に基づいてアプリの次の挙動を決定してください。

Web View SDK
let adjustConfig = new AdjustConfig(yourAppToken, environment);
adjustConfig.setDeferredDeeplinkCallback(function (deeplink) {});

Adjust.onCreate(adjustConfig);

このディファード・ディープリンクのシナリオでは、Configオブジェクトにもう1つの設定を追加できます。Adjust SDK がディファード・ディープリンクに関する情報を入手すると、SDK で URL を開くかどうかを選択できます。このオプションについては、Configオブジェクトで setOpenDeferredDeeplink メソッドをコールして設定します:

// ...

function deferredDeeplinkCallback(deeplink) {}

let adjustConfig = new AdjustConfig(yourAppToken, environment);
adjustConfig.setOpenDeferredDeeplink(true);
adjustConfig.setDeferredDeeplinkCallback(deferredDeeplinkCallback);

Adjust.start(adjustConfig);

コールバックを設定しない場合、Adjust SDK はデフォルトで常に URL を立ち上げようとすることにご注意ください。

ディープリンクを介したリアトリビューション

Adjustはディープリンクを使ったリエンゲージメントキャンペーンをサポートしています。 詳しくは公式資料をご覧ください。

ディープリンクご利用の場合、ユーザーが正しくリアトリビューションされるために、Adjust SDKへのコールを追加してください。

アプリでディープリンクの内容データを受信したら、Adjust.appWillOpenUrl(Uri, Context)メソッドへのコールを追加してください。 このコールによって、Adjust SDKはディープリンクの中に新たなアトリビューションが存在するかを調べ、あった場合はAdjustサーバーにこれを送信します。 ディープリンクのついたAdjustトラッカーURLのクリックによってユーザーがリアトリビュートされる場合、 アトリビューションコールバック がこのユーザーの新しいアトリビューションデータで呼ばれます。

Adjust.appWillOpenUrl(Uri, Context)のコールは下記のようになります。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = getIntent();
    Uri data = intent.getData();
    Adjust.appWillOpenUrl(data, getApplicationContext());
}
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Uri data = intent.getData();
    Adjust.appWillOpenUrl(data, getApplicationContext());
}

: Android SDK v4.14.0よりAdjust.appWillOpenUrl(Uri) メソッドはdeprecated(推奨されていません) と表示されます。代わりにAdjust.appWillOpenUrl(Uri, Context)メソッドを使用してください。

Web viewに関する注意:このコールは、webviewから関数Adjust.appWillOpenUrlをJavascript でこのように作成することもできます:

Adjust.appWillOpenUrl(deeplinkUrl);

イベントトラッキング

イベントトラッキング

Adjustを使ってアプリ内のイベントをトラッキングすることができます。ここではあるボタンのタップを毎回トラックするケースを想定して説明します。 管理画面にてイベントトークンを作成します。そのイベントトークンは仮にabc123とします。 タップをトラックするため、ボタンのonClickメソッドに以下のような記述を追加します。

Native App SDK
AdjustEvent adjustEvent = new AdjustEvent("abc123");
Adjust.trackEvent(adjustEvent);
Web View SDK
let adjustEvent = new AdjustEvent('abc123');
Adjust.trackEvent(adjustEvent);

収益のトラッキング

広告をタップはもちろん、アプリ内課金の発生時もトラッキングできます。 1回のタップで1ユーロセントの報酬と仮定すると、報酬イベントは以下のようになります。

Native App SDK
AdjustEvent adjustEvent = new AdjustEvent("abc123");
adjustEvent.setRevenue(0.01, "EUR");
Adjust.trackEvent(adjustEvent);
Web View SDK
let adjustEvent = new AdjustEvent('abc123');
adjustEvent.setRevenue(0.01, 'EUR');
Adjust.trackEvent(adjustEvent);

もちろんこれはコールバックパラメータと紐付けることができます。

通貨トークンを設定する場合、Adjustは自動的に収益を任意の報酬に変換します。 詳しくは通貨の変換をご覧ください。

アプリ内課金のトラッキングをする際は、課金が完了し、アイテムが購入された後にtrackEventをコールするようにしてください。実際に発生しなかった収益イベントをトラッキングしてしまうのを防ぐためです。

収益とイベントトラッキングについてはイベントトラッキングガイドもご参照ください。

収益の重複排除

オプションとしてオーダーIDを追加することにより、収益イベントが重複してトラッキングされるのを防ぐことができます。これを実行すると、10個前までのオーダーIDが記憶され、収益イベントに紐づけられたオーダーIDが重複している場合、そのイベントを排除します。以下の例をご参照ください。

Native App SDK
AdjustEvent adjustEvent = new AdjustEvent("abc123");
adjustEvent.setRevenue(0.01, "EUR");
adjustEvent.setOrderId("{OrderId}");
Adjust.trackEvent(adjustEvent);
Web View SDK
let adjustEvent = new AdjustEvent('abc123');
adjustEvent.setRevenue(0.01, 'EUR');
adjustEvent.setOrderId('{OrderId}');
Adjust.trackEvent(event);

アプリ内課金の検証

Adjustのサーバーサイドのレシート検証ツール、課金検証(Purchase Verification)を使ってアプリ内で行われたアプリ内課金の妥当性を調べる際は、 Android purchase SDKをご利用ください。詳しくはこちらをご覧ください。

カスタムパラメータ

カスタムパラメータ

Adjust SDK が標準仕様で取得するパラメータ(IDFAなど)に加え、Adjust SDK を使ってカスタム値(クライアント様が保有するユーザー ID、商品 ID など)をイベントまたはセッションに追加することができます。カスタムパラメータは、コールバック経由でのみ送信が可能で、Adjust 管理画面のレポートに表示されることはありません。

コールバックパラメータはクライアント様だけがご利用可能です。外部パートナーにデータが送信されるパートナーパラメータに関しては、情報を共有するパートナーとの間で利用されなければなりません。内部と外部のパートナー双方の利用目的で値をトラッキングする場合は(例えば商品 ID など)、リアルタイムコールバックとパートナーパラメータの両方にてトラッキングすることを推奨します。

イベントパラメータ

イベントコールバックパラメータ

管理画面でイベントにコールバックURLを登録することができます。イベントがトラッキングされるたびに そのURLにGETリクエストが送信されます。トラッキングする前にイベントでaddCallbackParameterをコールすることによって、 イベントにコールバックパラメータを追加できます。そうして追加されたパラメータはコールバックURLに送られます。

例えば、コールバックURLにhttp://www.example.com/callbackを登録した場合、イベントトラッキングは以下のようになります。

Native App SDK
AdjustEvent adjustEvent = new AdjustEvent("abc123");
adjustEvent.addCallbackParameter("key", "value");
adjustEvent.addCallbackParameter("foo", "bar");
Adjust.trackEvent(adjustEvent);
Web View SDK
let adjustEvent = new AdjustEvent('abc123');
adjustEvent.addCallbackParameter('key', 'value');
adjustEvent.addCallbackParameter('foo', 'bar');
Adjust.trackEvent(adjustEvent);

この場合、Adjustはこのイベントをトラッキングし、以下にリクエストが送られます。

http://www.example.com/callback?key=value&foo=bar

パラメータの値として使われることのできるプレースホルダは、{gps_adid}のような様々な形に対応しています。 得られるコールバック内で、このプレースホルダは該当デバイスのGoogle PlayサービスIDに置き換えられます。 独自に設定されたパラメータには何も格納しませんが、コールバックに追加されます。 イベントにコールバックを登録していない場合は、これらのパラメータは使われません。

URLコールバックについて詳しくはコールバックガイドをご覧ください。 利用可能な値のリストもこちらで参照してください。

パートナーパラメータ

Adjustの管理画面上で連携が有効化されているネットワークパートナーに送信するパラメータを設定することができます。

これは上記のコールバックパラメータと同様に機能しますが、 eventインスタンスのaddPartnerParameterメソッドをコールすることにより追加されます。

Native App SDK
AdjustEvent adjustEvent = new AdjustEvent("abc123");
adjustEvent.addPartnerParameter("key", "value");
adjustEvent.addPartnerParameter("foo", "bar");
Adjust.trackEvent(adjustEvent);
Web View SDK
let adjustEvent = new AdjustEvent('abc123');
adjustEvent.addPartnerParameter('key', 'value');
adjustEvent.addPartnerParameter('foo', 'bar');
Adjust.trackEvent(adjustEvent);

スペシャルパートナーとその統合について詳しくは連携パートナーガイドをご覧ください。

イベントコールバックID

トラッキングしたいイベントにカスタムIDを追加できます。このIDはイベントをトラッキングし、成功か失敗かの通知を受け取けとれるようコールバックを登録することができます。イベントインスタンスにsetCallbackIdメソッドをコールしてこのIDを設定してください:

Native App SDK
AdjustEvent adjustEvent = new AdjustEvent("abc123");
adjustEvent.setCallbackId("Your-Custom-Id");
Adjust.trackEvent(adjustEvent);
Web View SDK
let adjustEvent = new AdjustEvent('abc123');
adjustEvent.setCallbackId('Your-Custom-Id');
Adjust.trackEvent(adjustEvent);

セッションパラメータ

いくつかのパラメータは、Adjust SDKのイベントごと、セッションごとに送信するために保存されます。 このいずれかのパラメータを追加すると、これらはローカル保存されるため、毎回追加する必要はありません。 同じパラメータを再度追加しても何も起こりません。

これらのセッションパラメータはAdjust SDKが起動する前にコールすることができます。インストール時にパラメータを送信したい場合は、Adjust SDKの初回起動を遅らせることができます。 ただし、必要なパラメータの値を得られるのは起動後となります。

セッションコールバックパラメータ

イベントで設定された同じコールバックパラメータを、 Adjust SDKのイベントごとまたはセッションごとに送信するために保存することもできます。

セッションコールバックパラメータのインターフェイスとイベントコールバックパラメータは似ています。 イベントにキーと値を追加する代わりに、AdjustのAdjust.addSessionCallbackParameter(String key, String value)へのコールで追加されます。

Native App SDK
Adjust.addSessionCallbackParameter("foo", "bar");
Web View SDK
Adjust.addSessionCallbackParameter('foo', 'bar');

セッションコールバックパラメータは、イベントに追加されたコールバックパラメータとマージされます。 イベントに追加されたコールバックパラメータは、セッションコールバックパラメータより優先されます。 イベントに追加されたコールバックパラメータがセッションから追加されたパラメータと同じキーを持っている場合、 イベントに追加されたコールバックパラメータの値が優先されます。

Adjust.removeSessionCallbackParameter(String key)メソッドに指定のキーを渡すことで、 特定のセッションコールバックパラメータを削除することができます。

Native App SDK
Adjust.removeSessionCallbackParameter("foo");
Web View SDK
Adjust.removeSessionCallbackParameter('foo');

セッションコールバックパラメータからすべてのキーと値を削除したい場合は、Adjust.resetSessionCallbackParameters()メソッドを使ってリセットすることができます。

Native App SDK
Adjust.resetSessionCallbackParameters();
Web View SDK
Adjust.resetSessionCallbackParameters();

セッションパートナーパラメータ

Adjust SDKのイベントごとやセッションごとに送信されるセッションコールバックパラメータがあるように、 セッションパートナーパラメータも用意されています。

これらはAdjustのネットワークパートナーに送信されます。Adjust管理画面のパートナー設定で有効化された連携に利用されます。

セッションパートナーパラメータのインターフェイスとイベントパートナーパラメータは似ています。 イベントにキーと値を追加する代わりに、Adjust.addSessionPartnerParameter(String key, String value)へのコールで追加されます。

Native App SDK
Adjust.addSessionPartnerParameter("foo", "bar");
Web View SDK
Adjust.addSessionPartnerParameter('foo', 'bar');

セッションパートナーパラメータはイベントに追加されたパートナーパラメータとマージされます。イベントに追加されたパートナーパラメータは、 セッションパートナーパラメータより優先されます。イベントに追加されたパートナーパラメータが セッションから追加されたパラメータと同じキーを持っている場合、イベントに追加されたパートナーパラメータの値が優先されます。

Adjust.removeSessionPartnerParameter(String key)メソッドに指定のキーを渡すことで、 特定のセッションパートナーパラメータを削除することができます。

Native App SDK
Adjust.removeSessionPartnerParameter("foo");
Web View SDK
Adjust.removeSessionPartnerParameter('foo');

セッションパートナーパラメータからすべてのキーと値を削除したい場合は、Adjust.resetSessionPartnerParameters()メソッドを使ってリセットすることができます。

Native App SDK
Adjust.resetSessionPartnerParameters();
Web View SDK
Adjust.resetSessionPartnerParameters();

ディレイスタート

Adjust SDKの初回起動を遅らせると、クライアント様のユニークID(会員ID)などのセッションパラメータを取得しインストール時に送信できるようにすることができます。

ConfigインスタンスのsetDelayStartメソッドで、ディレイタイムを秒単位で設定できます。

Native App SDK
adjustConfig.setDelayStart(5.5);
Web View SDK
adjustConfig.setDelayStart(5.5);

この場合、Adjust SDKは最初のインストールセッションと生成されるイベントを初めの5.5秒間は送信しません。 設定された時間が過ぎるまで、もしくはAdjust.sendFirstPackages()がコールされるまで、 セッションパラメータはすべてディレイインストールセッションとイベントに追加され、Adjust SDKは通常通り再開します。

Adjust SDKのディレイスタートは最大で10秒です。

追加機能

プロジェクトにAdjust SDKを連携させると、以下の機能をご利用できるようになります。

Pushトークン (uninstall tracking)

プッシュトークンは、オーディエンスビルダーとコールバック送信に使用されます。また、アンインストールと再インストールのトラッキングにも必要です。

Adjust にプッシュ通知トークンを送信する際には、トークンを入手(または値に変更が発生)した後、以下のコールをAdjust に追加してください。

Native SDK
Adjust.setPushToken(pushNotificationsToken, context);

シグネチャーにcontextを追加しアップデートすると、SDKはより多くのシナリオに沿ってプッシュトークンを送信することができます。上記のメソッドを使用することを推奨します。

しかし、contextが追加されない場合でも、Adjustは引き続き、同じメソッドを使用する過去のシグネチャーをサポートします。

Web View SDK
Adjust.setPushToken(pushNotificationsToken);

アトリビューションコールバック

トラッカーのアトリビューション変化の通知を受けるために、リスナを登録することができます。 アトリビューションには複数の流入元が紐づく可能性があるため、この情報は同時に送ることができません。

アトリビューションデータに関するポリシーを必ずご確認ください。

Configインスタンスで、SDKをスタートする前に以下のアトリビューションコールバックを追加してください。

Native App SDK
AdjustConfig config = new AdjustConfig(this, appToken, environment);

config.setOnAttributionChangedListener(new OnAttributionChangedListener() {
    @Override
    public void onAttributionChanged(AdjustAttribution attribution) {}
});

Adjust.onCreate(config);
Web View SDK
function attributionCallback(attribution) {}

// ...

let adjustConfig = new AdjustConfig(yourAppToken, environment);
adjustConfig.setAttributionCallback(attributionCallback);
Adjust.onCreate(adjustConfig);

リスナはSDKが最後のアトリビューションデータを取得した時に呼ばれます。 リスナの機能でattributionパラメータを確認することができます。このパラメータのプロパティの概要は以下の通りです。

  • trackerToken 最新アトリビューションのトラッカートークン
  • trackerName 最新アトリビューションのトラッカー名
  • network 最新アトリビューションの流入元名
  • campaign 最新アトリビューションのキャンペーン名
  • adgroup 最新アトリビューションのアドグループ名
  • creative 最新アトリビューションのクリエイティブ名
  • clickLabel 最新アトリビューションのクリックラベル
  • adid AdjustユニークID(Adjust Device ID)

広告収益の計測

:この機能はネイティブのSDK v4.18.0以降のみ利用可能です。

Adjust SDKを利用して、以下のメソッドを呼び出し広告収益情報を計測することができます。

ネイティブアプリSDK
Adjust.trackAdRevenue(source, payload);

Adjust SDKにパスするメソッドの引数は以下の通りです。

  • source - 広告収益情報のソースを指定するStringオブジェクト
  • payload - 広告収益のJSONを格納するJSONObject`オブジェクト

現在、弊社は以下のsourceパラメータの値のみ対応しています。

  • AD_REVENUE_MOPUB - メディエーションプラットフォームのMoPubを示します。(詳細は、統合ガイドを参照ください)

イベントとセッションのコールバック

イベントとセッションの双方もしくはどちらかをトラッキングし、成功か失敗かの通知を受け取れるようリスナを登録することができます。リスナには4種類あります。それらは、トラッキングに成功したイベント、トラッキングに失敗したイベント、トラッキングに成功したセッション、トラッキングに失敗したイベントです。 Configオブジェクトを生成すると、リスナをいくつでも追加することができます。

Native App SDK
AdjustConfig config = new AdjustConfig(this, appToken, environment);

// Set event success tracking delegate.
config.setOnEventTrackingSucceededListener(new OnEventTrackingSucceededListener() {
    @Override
    public void onFinishedEventTrackingSucceeded(AdjustEventSuccess eventSuccessResponseData) {
        // ...
    }
});

// Set event failure tracking delegate.
config.setOnEventTrackingFailedListener(new OnEventTrackingFailedListener() {
    @Override
    public void onFinishedEventTrackingFailed(AdjustEventFailure eventFailureResponseData) {
        // ...
    }
});

// Set session success tracking delegate.
config.setOnSessionTrackingSucceededListener(new OnSessionTrackingSucceededListener() {
    @Override
    public void onFinishedSessionTrackingSucceeded(AdjustSessionSuccess sessionSuccessResponseData) {
        // ...
    }
});

// Set session failure tracking delegate.
config.setOnSessionTrackingFailedListener(new OnSessionTrackingFailedListener() {
    @Override
    public void onFinishedSessionTrackingFailed(AdjustSessionFailure sessionFailureResponseData) {
        // ...
    }
});

Adjust.onCreate(config);
Web View SDK
function eventSuccessCallback(eventSuccessResponseData) {}
function eventFailureCallback(eventFailureResponseData) {}
function sessionSuccessCallback(sessionSuccessResponseData) {}
function sessionFailureCallback(sessionFailureResponseData) {}

// ...

let adjustConfig = new AdjustConfig(yourAppToken, environment);
adjustConfig.setEventSuccessCallback(eventSuccessCallback);
adjustConfig.setEventFailureCallback(eventFailureCallback);
adjustConfig.setSessionSuccessCallback(sessionSuccessCallback);
adjustConfig.setSessionFailureCallback(sessionFailureCallback);
Adjust.onCreate(adjustConfig);

リスナ関数はSDKがサーバーにパッケージ送信を試みた後で呼ばれます。 リスナ関数内でリスナ用のレスポンスデータオブジェクトを確認することができます。 レスポンスデータのプロパティの概要は以下の通りです。

  • message サーバーからのメッセージまたはSDKのエラーログ
  • timestamp サーバーからのタイムスタンプ
  • adid Adjustから提供されるユニークデバイスID
  • jsonResponse サーバーからのレスポンスのJSONオブジェクト

イベントのレスポンスデータは以下を含みます。

  • eventToken トラッキングされたパッケージがイベントだった場合、そのイベントトークン
  • callbackId イベントオブジェクトにカスタム設定されたコールバックID

失敗したイベントとセッションは以下を含みます。

  • boolean willRetry しばらく後に再送を試みる予定であるかどうかを示します。

ユーザーアトリビューション

アトリビューションコールバック で説明したとおり、アトリビューション情報に変更がある度に、このコールバックが起動されます。Adjust インスタンスの以下のメソッドをコールすることで、必要な時にいつでもユーザーの最新のアトリビューション情報にアクセスすることができます:

Native App SDK
AdjustAttribution attribution = Adjust.getAttribution();
Web View SDK
let attribution = Adjust.getAttribution();

注意: このコールは、Adjust SDK v4.11.0 以上で使用が可能です。

注意: 最新のアトリビューション情報は、Adjust がバックエンドで行うアプリインストールのトラッキングが完了し、アトリビューションコールバックがトリガーされた後にのみ利用が可能となります。SDK が初期化され、アトリビューションコールバックがトリガーされる前には、ユーザーのアトリビューション値にアクセスすることができません。

デバイスID

Adjust SDK を使って、デバイス ID を取得することもできます。

Google広告ID / Google Play Services advertising identifier(gps_adid)

Google Analyticsなどの一部のサービスでは、レポートの重複を防ぐためにデバイスIDとクライアントIDを連携させることが求められます。

Native App SDK

Google 広告 ID は、バックグラウンドスレッドでのみ読み取りが可能という制限付で、取得することができます。ファンクションgetGoogleAdId をコンテクストとインスタンスのOnDeviceIdsRead を呼び出すと、どんな状況でも機能させることができます:

Adjust.getGoogleAdId(this, new OnDeviceIdsRead() {
    @Override
    public void onGoogleAdIdRead(String googleAdId) {}
});
Web View SDK

デバイスの Google 広告デバイス ID を取得する際には、Google 広告 ID を引数として受け取る Adjust.getGoogleAdId に対して、以下のようなコールバック機能を渡す必要があります。:

Adjust.getGoogleAdId(function(googleAdId) {
    // ...
});

Amazon広告ID / Amazon advertising identifier(fire_adid)

Amazon 広告 ID を取得する必要がある場合は、Adjust インスタンスで、以下のメソッドを呼び出します:

Native App SDK
String amazonAdId = Adjust.getAmazonAdId(context);
Web View SDK
let amazonAdId = Adjust.getAmazonAdId();

Adjust デバイスID (adid)

アプリがインストールされている各デバイスに対して、Adjust は、バックエンドでユニークな Adujust デバイス ID (adid) を生成します。この ID を取得するためには、Adjust インスタンスで、以下のメソッドを呼び出してください:

Native App SDK
String adid = Adjust.getAdid();
Web View SDK
let adid = Adjust.getAdid();

注意: このコールは、Adjust SDK v4.11.0 以上で使用が可能です。

注意:adid に関する情報は、Adjust がバックエンドで行うアプリインストールのトラッキングが完了後のみ利用可能となります。SDK が初期化されてアプリインストールのトラッキングが完了しないと、adid 値にアクセスすることはできません。

プレインストールのトラッカー

すでにアプリをインストールしたことのあるユーザーをAdjust SDKを使って識別したい場合は、次の手順で設定を行ってください。

  • 管理画面上で新しいトラッカーを作成してください。

  • App Delegateを開き、Configのデフォルトトラッカーを設定してください。

    Native App SDK
    adjustConfig.setDefaultTracker("{TrackerToken}");
    Web View SDK
    adjustConfig.setDefaultTracker('{TrackerToken}');
  • {TrackerToken}にステップ2で作成したトラッカートークンを入れてください。 管理画面にはhttp://app.adjust.com/を含むトラッカーURLが表示されます。 ソースコード内にはこのURLすべてではなく、6文字のトークンを抜き出して指定してください。

  • アプリをビルドしてください。LogCatで下記のような行が表示されるはずです。

    Default tracker: 'abc123'
    

オフラインモード

Adjustのサーバーへの送信を一時停止し、保持されているトラッキングデータを後から送信するために Adjust SDKをオフラインモードにすることができます。 オフラインモード中はすべての情報がファイルに保存されるので、イベントをたくさん発生させすぎないようにご注意ください。

trueパラメータでsetOfflineModeを呼び出すとオフラインモードを有効にできます。

Native App SDK
Adjust.setOfflineMode(true);
Web View SDK
Adjust.setOfflineMode(true);

反対に、falseパラメータでsetOfflineModeを呼び出せばオフラインモードを解除できます。 Adjust SDKがオンラインモードに戻った時、保存されていた情報は正しいタイムスタンプでAdjustのサーバーに送られます。

トラッキングの無効化とは異なり、この設定はセッション間で記憶されません。 オフラインモード時にアプリを終了しても、次に起動した時にはオンラインモードとしてアプリが起動します。

トラッキングの無効化

setEnabledにパラメータfalseを渡すことで、AdjustSDKが行うデバイスのアクティビティのトラッキングをすべて無効にすることができます。この設定はセッション間で記憶されます

Native App SDK
Adjust.setEnabled(false);
Web View SDK
Adjust.setEnabled(false);

Adjust SDKが現在有効かどうか、isEnabled関数を呼び出せば確認できます。 また、setEnabled関数にtrueを渡せば、Adjust SDKを有効にすることができます。

イベントバッファリング

イベントトラッキングを酷使している場合、HTTPリクエストを遅らせて1分毎にまとめて送信したほうがいい場合があります。 その場合は、Configインスタンスでイベントバッファリングを有効にしてください。

Native App SDK
adjustConfig.setEventBufferingEnabled(true);
Web View SDK
adjustConfig.setEventBufferingEnabled(true);

バックグラウンドでのトラッキング

デフォルトでは、アプリがバックグラウンドにある間、Adjust SDKはHTTPリクエストの送信を停止します。 この設定はConfigインスタンスで変更できます。

Native App SDK
adjustConfig.setSendInBackground(true);
Web View SDK
adjustConfig.setSendInBackground(true);

GDPR消去する権利(忘れられる権利)

次のメソッドを呼び出すと、EUの一般データ保護規制(GDPR)第17条に従い、ユーザーが消去する権利(忘れられる権利)を行使した際にAdjust SDKがAdjustバックエンドに情報を通知します。

Native App SDK
Adjust.gdprForgetMe(context);
Web View SDK
Adjust.gdprForgetMe();

この情報を受け取ると、Adjustはユーザーのデータを消去し、Adjust SDKはユーザーの追跡を停止します。この削除された端末からのリクエストは今後、Adjustに送信されません。

この変更はテストを行なっている場合でも恒久的で、元の設定に戻すことはできないことをご留意ください。

トラブルシューティング

"Session failed (Ignoring too frequent session. ...)"というエラーが出る

このエラーはインストールのテストの際に起こりえます。アンインストール後に再度インストールするだけでは新規インストールとして動作しません。 SDKがローカルで統計したセッションデータを失ったとサーバーは判断してエラーメッセージを無視し、 その端末に関する有効なデータのみが与えられます。

この仕様はテスト中には厄介かもしれませんが、サンドボックスと本番用の挙動をできる限り近づけるために必要です。

アプリに対して、編集者レベル(または管理人権限)のアクセス権を持っている場合には、どんなデバイスに対するアプリのセッションデータについても、テストコンソールを使って Adjust 管理画面から直接リセットすることができます。

端末に関する記録が消去されると、テスティングコンソールはForgot deviceと返します。 もしその端末の記録がすでに消去されていたり、値が不正だった場合は、そのリンクはAdvertising ID not foundと返します。

現在ご契約のパッケージでアクセスが可能の場合は、開発者用APIで設定確認と端末記録の消去を行うことができます。

ブロードキャストレシーバーがインストールリファラを受信していない

ガイドに従って設定を済ませていれば、 ブロードキャストレシーバーはAdjustのSDKとサーバーにインストールを送信するよう設定されているはずです。

手動でテスト用インストールリファラを作動させることで確認できます。com.your.appidにアプリIDを入力し、Android Studioの adbツールで以下のコマンドを実行してください。

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n com.your.appid/com.adjust.sdk.AdjustReferrerReceiver --es "referrer" "adjust_reftag%3Dabc1234%26tracking_id%3D123456789%26utm_source%3Dnetwork%26utm_medium%3Dbanner%26utm_campaign%3Dcampaign"

INSTALL_REFERRERインテントに対してすでに別のブロードキャストリファラを使っている状態でこのガイドの設定をした場合、com.adjust.sdk.AdjustReferrerReceiverにブロードキャストレシーバーを入力してください。

-n com.your.appid/com.adjust.sdk.AdjustReferrerReceiverパラメータを削除することもできます。 削除すると、デバイスに入っているすべてのアプリがINSTALL_REFERRERインテントを受信します。

ログレベルをverboseに設定していれば、リファラが読み込まれると以下のログが表示されるはずです。

V/Adjust: Reading query string (adjust_reftag=abc1234&tracking_id=123456789&utm_source=network&utm_medium=banner&utm_campaign=campaign) from reftag

SDKのパッケージハンドラーに追加されるクリックパッケージは以下のような形です。

V/Adjust: Path:      /sdk_click
    ClientSdk: android4.6.0
    Parameters:
      app_token        abc123abc123
      click_time       yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z
      created_at       yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z
      environment      sandbox
      gps_adid         12345678-0abc-de12-3456-7890abcdef12
      needs_attribution_data 1
      referrer         adjust_reftag=abc1234&tracking_id=123456789&utm_source=network&utm_medium=banner&utm_campaign=campaign
      reftag           abc1234
      source           reftag
      tracking_enabled 1

アプリの起動前にこのテストを行う場合、パッケージの送信は表示されません。パッケージはアプリの起動後に送信されます。

重要: この機能をテストをするためにadbツールを利用することは推奨しておりません。全てのリファラコンテンツをadbでテストするためには(&で分けられた複数のパラメータがある場合)、ブロードキャストリシーバーで受信するためにコンテンツをエンコードすることが必要です。もしエンコードをしないと、adbはレファラを最初の&サインで切り、誤ったコンテンツをブロードキャストレシーバーに伝えます。アプリがどのようにエンコードされていないリファラを受信しているかを確認したい場合は、Adjustのサンプルアプリを利用して、MainActivity.javaファイルのonFireIntentClickメソッドのインテント内に送信されたコンテンツを変更してください:

public void onFireIntentClick(View v) {
    Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
    intent.setPackage("com.adjust.examples");
    intent.putExtra("referrer", "utm_source=test&utm_medium=test&utm_term=test&utm_content=test&utm_campaign=test");
    sendBroadcast(intent);
}

自分の選んだコンテントでputExtra2番目のパラメーターを自由に変更してください。

アプリ起動時にイベントを始動したい

直感的には分かりにくいですが、グローバルApplicationクラスのonCreateメソッドはアプリ起動時だけでなく、 アプリによってシステムやイベントが作動する時にも呼ばれます。

Adjust SDKはこの場合の初期化についてサポートしています。この機能はアプリが実際に起動した時でなく、 アクティビティがスタートした時、たとえばユーザーがアプリを起動させた時に起こります。

これらのコールはアプリがユーザーの操作以外の要因で起動した場合にも、Adjust SDKを起動しイベントを送信しします。これはアプリの外部要因にもよります。

このように、アプリ起動時のイベントの作動はインストールとセッションの数を正確にトラッキングできません。

インストール後にイベントを作動させたい場合は、アトリビューション変更時用のリスナをご利用ください。

アプリ起動時にイベントを作動させたい場合は、スタートするアクティビティのonCreateメソッドをご使用ください。

ライセンス

Adjust SDKはMITライセンスを適用しています。

Copyright (c) 2012-2019 Adjust GmbH, http://www.adjust.com

以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、 ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、 および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。

ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。 ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、 あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。