こちらはAdjust™のUnity SDKです。iOS、Android、Windows 8.1、Windows phone 8.1に対応しています。 Adjust™について詳しくはadjust.comをご覧ください。

1 基本的な連携方法

Adjust SDKをUnityプロジェクトに連携させる最少のステップをここでご紹介します。

1.1 SDKダウンロード

リリースページから最新バージョンをダウンロードしてください。2つのUnityパッケージが入っています。

  • Adjust_v4.10.2_Unity_4.unitypackage - Unity IDE バージョン4をご利用の場合、こちらをご利用ください。
  • Adjust_v4.10.2_Unity_5.unitypackage - Unity IDE バージョン5をご利用の場合、こちらをご利用ください

1.2 プロジェクトへのSDKの追加

Unityエディタでプロジェクトを開きAssets → Import Package → Custom Packageと進み、ダウンロードしたUnityパッケージファイルを選択してください。

1.3 アプリへのSDKの連携

Assets/Adjust/Adjust.prefabにあるプレハブを1番目のシーンに追加してください。

追加したプレハブのInspector menuにて、Adjustスクリプトのパラメータを編集してください。

Adjustプレハブで以下のオプションの設定ができます。

{YourAppToken}にアプリのトークンを入力してください。これは[ダッシュボード]で確認できます。

Environmentに以下のどちらかを設定してください。これはテスト用アプリか本番用アプリかによって異なります。

'Sandbox'
'Production'

重要 この値はアプリのテスト中のみSandboxに設定してください。アプリを提出する前にProductionになっていることを必ず確認してください。再度開発やテストをする際はSandboxに戻してください。

この変数は実際のトラフィックとテスト端末からのテストのトラフィックを区別するために利用されます。正しく計測するために、この値の設定には常に注意してください。収益のトラッキングの際には特に重要です。

アプリのAwakeイベントでAdjust SDKを起動したくない場合、Start Manuallyにチェックしてください。このオプションが選択されていると、ソースコード上でAdjust SDKの初期化および起動を行う必要があります。AdjustConfigオブジェクトをパラメータとしてAdjust.startメソッドををコールし、Adjust SDKを起動してください。

例えばこれらのオプションなどのメニューボタンがあるシーンの場合、Assets/Adjust/ExampleGUI/ExampleGUI.unityにあるサンプルのシーンを開いてください。このシーンのソースはAssets/Adjust/ExampleGUI/ExampleGUI.csにあります。

1.4 Adjustログ

Log Levelに設定するパラメータを変更することによって記録するログのレベルを調節できます。パラメータは以下の種類があります。

  • Verbose - すべてのログを有効にする
  • Debug - より詳細なログを記録する
  • Info - デフォルト
  • Warn - infoのログを無効にする
  • Error - warningsを無効にする
  • Assert - warningsを無効にする
  • Suppress - すべてのログを無効にする

すべてのログ出力を非表示にしたい場合、Adjust SDKをソースコードから手動で初期化しているならば、ログレベルをSuppressにする以外にもAdjustConfigオブジェクトのコンストラクタを使う必要があります。これはSuppressログレベルがサポートされているかどうかを示すBoolean値のパラメータを取得します。

string appToken = "{YourAppToken}";
string environment = AdjustEnvironment.Sandbox;

AdjustConfig config = new AdjustConfig(appToken, environment, true);
config.setLogLevel(AdjustLogLevel.Suppress);

Adjust.start(config);

Windowsベースのターゲットの場合、コンパイル時のログをreleasedモードでライブラリから見るには、debugモードでテストされている間のアプリへのログ出力をリダイレクトする必要があります。

SDKを起動する前に、AdjustConfigインスタンスのsetLogDelegateメソッドをコールしてください。

//...
adjustConfig.setLogDelegate(msg => Debug.Log(msg));
//...
Adjust.start(adjustConfig);

1.5 Google Playサービス

2014年8月1日以降、Google Playストア内のアプリはデバイスの特定のためにGoogle広告IDを使うことが必須とされています。Adjust SDKでGoogle広告IDを使うためには、Google Playサービスを連携させる必要があります。Google Playサービスの連携がお済みでない場合は、google-play-services_libフォルダをUnityプロジェクトのAssets/Plugins/Androidフォルダにコピーしてください。アプリのビルドをするとGoogle Playサービスが連携されます。

google-play-services_libはAndroid SDKにも含まれていますので、すでにインストールされている場合もあります。

Android SDKをダウンロードするには主に2つの方法があります。Android SDK Managerが入ったツールをお使いの場合は、Android SDK Toolsをダウンロードしてください。インストールすると、SDK_FOLDER/extras/google/google_play_services/libproject/フォルダ内にライブラリが入っています。

Android SDK Managerの入ったツールをお使いでない場合、公式ページからスタンドアローンバージョンのAndroid SDKをダウンロードしてください。ダウンロードすると、Android SDK Toolsを含まない基本バージョンのAndroid SDKを得ることになります。SDK Readme.txtという名前のGoogleのReadmeファイルにそれらのダウンロード方法について詳しく書かれています。これはAndroid SDKフォルダに入っています。

更新 新しいバージョンのAndroid SDKをインストールしている場合は、GoogleはSDKのルートフォルダ内のGoogle Playサービスフォルダの構成を変更しています。上述の構造は変更されており、新しいバージョンでは次のようになっています。

以前のようにGoogle Playサービスの全ライブラリだけでなく、部分的なライブラリの箇所に個別にアクセスができるようになりました。これにより、Adjust SDKが必要とする部分のGoogle Playサービスのライブラリだけを追加すればいいことになります。Assets/Plugins/Androidフォルダにplay-services-basement-x.y.z.aarファイルを追加するだけで、Adjust SDKに必要なGoogle Playサービスの連携は完了します。

1.6 ビルド後のプロセス

ビルドを容易にするために、ビルド後のプロセスはAdjustのUnityパッケージによって行なわれます。このプロセスはUnity 4Unity 5で異なります。

Unity 4用のAdjust Unityパッケージをご利用の場合は、このプロセスはビルド後のPythonスクリプトを実行することにより行なわれます。

  • iOSのPythonビルドスクリプトはAssets/Editor/PostprocessBuildPlayer_AdjustPostBuildiOS.pyにあります。
  • AndroidのPythonビルドスクリプトはAssets/Editor/PostprocessBuildPlayer_AdjustPostBuildAndroid.pyにあります。

このスクリプトはビルドのたびに実行され、Assets/Editor/AdjustEditor.csファイルからコールされます。実行には最低でもPython 2.7がインストールされている必要があります。ビルド後のプロセスは無効化することができます。メニューからAssets → Adjust → Change post processing statusと進み無効化してください。再び有効化する際も同じ手順で行ってください。

Unity 5用のAdjust Unityパッケージをご利用の場合は、このプロセスはAdjustEditor.csOnPostprocessBuildメソッドで実行されます。iOSでのビルド後のプロセスが正しく動作するために、Unity 5iOS build supportがインストールされていることをご確認ください。

Unity 4での実行後、UnityプロジェクトのルートにあるログファイルAdjustPostBuildAndroidLog.txtにスクリプトのログメッセージが出力されます。Unity 5では、ログメッセージはすべてUnity IDEコンソールのウィンドウに出力されます。

iOSビルド後のプロセス

iOSのビルド後のプロセスはXcodeプロジェクト内で次のような作業を行います。

  1. プロジェクトにiAd.frameworkAdSupport.frameworkを追加します。これはAdjust SDKに必須です。詳しくはiOS SDK READMEをご覧ください。
  2. Linkerフラグ-ObjCを追加します。これによりAdjustのObjective-Cカテゴリがビルド中に認識されるようになります。
  3. Objective-C exceptionsを有効化します。

Unity 4をお使いで、かつ違う場所にUnity iOSプロジェクトを生成するカスタムビルドを実装している場合、メニューからAssets → Adjust → Set iOS build pathと進みiOSプロジェクトのビルドパスを指定してください。

Androidビルド後のプロセス

Androidのビルド後のプロセスはAssets/Plugins/Android/にあるAndroidManifest.xmlファイルに変更を加えます。

Unity 4では、Androidパッケージに使われるマニフェストファイルはこのビルドプロセスが終了する前と同じものが使われます。この問題を解消するため、ビルドを再度実行し、生成されたもしくは先のビルドで変更されたマニフェストを使う、またはメニューからAssets → Adjust → Fix AndroidManifest.xmlと進みスクリプトがビルドの前に実行されるよう設定してください。いずれにしろこのマニフェストファイルがAdjust SDKとの互換性を保っている限り、この作業は一度の設定で済み、毎回行う必要はありません。

Unity 5ではAndroidのビルド後のプロセスを実行する必要はありません。

Androidのビルド後のプロセスはまずAndroidプラグインフォルダにAndroidManifest.xmlファイルがあるかどうかを確認します。AndroidManifest.xmlファイルがAssets/Plugins/Android/に存在しなければ、互換性のあるマニフェストファイルAdjustAndroidManifest.xmlをコピーします。AndroidManifest.xmlファイルがすでにあれば、以下の確認と変更を行います。

  1. Adjustブロードキャストレシーバを追加します。詳しくは公式Android SDK READMEをご覧ください。INSTALL_REFERRERを扱う独自のブロードキャストレシーバをご利用の場合、マニフェストファイルにAdjustブロードキャストレシーバを追加する必要はありませんのでご注意ください。このレシーバは削除し、代わりに独自のレシーバ中にAdjustブロードキャストレシーバへのコールを追加してください。詳しくはAndroidガイドに書かれています。
  2. インターネット接続のパーミッションを追加します。
  3. Wi-Fiネットワーク情報へのアクセスのパーミッションを追加します。

2 追加機能

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

2.1 イベントトラッキング

Adjustを使ってアプリ内のイベントをトラッキングすることができます。ここではあるボタンのタップを毎回トラックしたい場合について説明します。dashboardにてイベントトークンを作成し、そのイベントトークンは仮にabc123というイベントトークンと関連しているとします。クリックをトラックするため、ボタンのクリックハンドラーメソッドに以下のような記述を追加します。

AdjustEvent adjustEvent = new AdjustEvent("abc123");
Adjust.trackEvent(adjustEvent);
収益のトラッキング

広告をタップした時やアプリ内課金をした時などにユーザーが報酬を得る仕組みであれば、そういったイベントもトラッキングできます。1回のタップで1ユーロセントの報酬と仮定すると、報酬イベントは以下のようになります。

AdjustEvent adjustEvent = new AdjustEvent("abc123");
adjustEvent.setRevenue(0.01, "EUR");
Adjust.trackEvent(adjustEvent);
収益の重複排除

報酬を重複してトラッキングすることを防ぐために、トランザクションIDを随意で設定することができます。最新の10のトランザクションIDが記憶され、重複したトランザクションIDの収益イベントは除外されます。これはアプリ内課金のトラッキングに特に便利です。下記に例を挙げます。

アプリ内課金をトラッキングする際は、トランザクションが終了しアイテムが購入された時のみtrackEventをコールするようにしてください。こうすることで、実際には生成されない報酬をトラッキングすることを防ぐことができます。

AdjustEvent adjustEvent = new AdjustEvent("abc123");

adjustEvent.setRevenue(0.01, "EUR");
adjustEvent.setTransactionId("transactionId");

Adjust.trackEvent(adjustEvent);
アプリ内課金の検証

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

コールバックパラメータ

dashboardでイベントにコールバックURLを登録することができます。イベントがトラッキングされるたびにそのURLにGETリクエストが送信されます。 この場合、オブジェクトにキーと値の組を入れtrackEventメソッドに渡すこともできます。渡されたパラメータはコールバックURLに追加されます。

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

AdjustEvent adjustEvent = new AdjustEvent("abc123");

adjustEvent.addCallbackParameter("key", "value");
adjustEvent.addCallbackParameter("foo", "bar");

Adjust.trackEvent(adjustEvent);

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

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

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

パートナーパラメータ

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

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

AdjustEvent adjustEvent = new AdjustEvent("abc123");

adjustEvent.addPartnerParameter("key", "value");
adjustEvent.addPartnerParameter("foo", "bar");

Adjust.trackEvent(adjustEvent);

連携パートナーとその連携方法について詳しくは連携パートナーガイドをご覧ください。

2.2 セッションパラメータ

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

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

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

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

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

Adjust.addSessionCallbackParameter("foo", "bar");

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

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

Adjust.removeSessionCallbackParameter("foo");

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

Adjust.resetSessionCallbackParameters();
セッションパートナーパラメータ

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

これらはネットワークパートナーに送信され、Adjust[ダッシュボード]で有効化されている連携のために利用されます。

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

Adjust.addSessionPartnerParameter("foo", "bar");

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

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

Adjust.removeSessionPartnerParameter("foo");

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

Adjust.resetSessionPartnerParameters();
ディレイスタート

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

AdjustConfigインスタンスのsetDelayStartメソッドで、遅らせる時間を秒単位で設定できます。

adjustConfig.setDelayStart(5.5);

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

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

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

トラッカーのアトリビューション変化の通知を受けるために、コールバックを登録することができます。アトリビューションには複数のソースがあり得るため、この情報は同時に送ることができません。アプリにこのコールバックを実装するには次の手順に進んでください。

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

  1. デリゲートAction<AdjustAttribution>の署名を使ってメソッドを作成してください。

  2. AdjustConfigオブジェクトの作成後、上で作成したメソッドでadjustConfig.setAttributionChangedDelegateをコールしてください。同じ署名でラムダ式を使うことも可能です。

  3. Adjust.prefabを使う代わりに、the Adjust.csスクリプトが他のGameObjectに追加されている場合は、そのGameObjectの名前をAdjustConfig.setAttributionChangedDelegateの2番目のパラメータとして必ず追加してください。

コールバックがAdjustConfigインスタンスを使っているため、Adjust.startをコールする前にadjustConfig.setAttributionChangedDelegateをコールする必要があります。

このコールバック関数は、SDKが最後のアトリビューションデータを取得した時に作動します。コールバック関数内でattributionパラメータを確認することができます。このパラメータのプロパティの概要は以下の通りです。

  • string trackerToken 最新アトリビューションのトラッカートークン
  • string trackerName 最新アトリビューションのトラッカー名
  • string network 最新アトリビューションのネットワークのグループ階層
  • string campaign 最新アトリビューションのキャンペーンのグループ階層
  • string adgroup 最新アトリビューションのアドグループのグループ階層
  • string creative 最新アトリビューションのクリエイティブのグループ階層
  • string clickLabel 最新アトリビューションのクリックラベル
  • string adid AdjustのデバイスID
using com.adjust.sdk;

public class ExampleGUI : MonoBehaviour {
void OnGUI() {
if (GUI.Button(new Rect(0, 0, Screen.width, Screen.height), "callback")) {
AdjustConfig adjustConfig = new AdjustConfig("{Your App Token}", AdjustEnvironment.Sandbox);
adjustConfig.setLogLevel(AdjustLogLevel.Verbose);
adjustConfig.setAttributionChangedDelegate(this.attributionChangedDelegate);

Adjust.start(adjustConfig);
}
}

public void attributionChangedDelegate(AdjustAttribution attribution) {
Debug.Log("Attribution changed");

// ...
}
}

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

イベントとセッションの双方もしくはどちらかをトラッキングし、成功か失敗かの通知を受け取れるようリスナを登録することができます。

成功したイベントへのコールバック関数を以下のように実装してください。

// ...

AdjustConfig adjustConfig = new AdjustConfig("{Your App Token}", AdjustEnvironment.Sandbox);
adjustConfig.setLogLevel(AdjustLogLevel.Verbose);
adjustConfig.setEventSuccessDelegate(EventSuccessCallback);

Adjust.start(adjustConfig);

// ...

public void EventSuccessCallback(AdjustEventSuccess eventSuccessData) {
// ...
}

失敗したイベントへは以下のように実装してください。

// ...

AdjustConfig adjustConfig = new AdjustConfig("{Your App Token}", AdjustEnvironment.Sandbox);
adjustConfig.setLogLevel(AdjustLogLevel.Verbose);
adjustConfig.setEventFailureDelegate(EventFailureCallback);

Adjust.start(adjustConfig);

// ...

public void EventFailureCallback(AdjustEventFailure eventFailureData) {
// ...
}

同様に、成功したセッション

// ...

AdjustConfig adjustConfig = new AdjustConfig("{Your App Token}", AdjustEnvironment.Sandbox);
adjustConfig.setLogLevel(AdjustLogLevel.Verbose);
adjustConfig.setSessionSuccessDelegate(SessionSuccessCallback);

Adjust.start(adjustConfig);

// ...

public void SessionSuccessCallback (AdjustSessionSuccess sessionSuccessData) {
// ...
}

失敗したセッション

// ...

AdjustConfig adjustConfig = new AdjustConfig("{Your App Token}", AdjustEnvironment.Sandbox);
adjustConfig.setLogLevel(AdjustLogLevel.Verbose);
adjustConfig.setSessionFailureDelegate(SessionFailureCallback);

Adjust.start(adjustConfig);

// ...

public void SessionFailureCallback (AdjustSessionFailure sessionFailureData) {
// ...
}

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

  • string Message サーバーからのメッセージまたはSDKのエラーログ
  • string Timestamp サーバーからのタイムスタンプ
  • string Adid Adjustから提供されるユニークデバイスID
  • Dictionary<string, object> JsonResponse サーバーからのレスポンスのJSONオブジェクト

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

  • string EventToken トラッキングされたパッケージがイベントだった場合、そのイベントトークン

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

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

2.5 トラッキングの無効化

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

Adjust.setEnabled(false);

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

2.6 オフラインモード

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

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

Adjust.setOfflineMode(true);

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

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

2.7 イベントバッファリング

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

AdjustConfig adjustConfig = new AdjustConfig("{YourAppToken", "{YourEnvironment}");

adjustConfig.setEventBufferingEnabled(true);

Adjust.start(adjustConfig);

設定されていない場合、イベントバッファリングはデフォルトで無効になっています。

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

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

AdjustConfig adjustConfig = new AdjustConfig("{YourAppToken", "{YourEnvironment}");

adjustConfig.setSendInBackground(true);

Adjust.start(adjustConfig);

2.9 デバイスID

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

iOS広告ID

IDFAを取得するには、AdjustインスタンスのgetIdfa関数をコールしてください。

string idfa = Adjust.getIdfa()
Google Playサービス広告ID

Google広告IDを取得する必要がある場合、広告IDはバックグラウンドでのスレッドでしか読み込みできないという制約があります。getGoogleAdId関数をAction<string>デリゲートでコールすると、この条件以外でも取得できるようになります。

Adjust.getGoogleAdId((string googleAdId) => {
// ...
});

Google広告IDをgoogleAdId変数として利用できます。

2.10AdjustデバイスID

アプリがインストールされている各端末に対して、AdjustサーバーはユニークなAdjustデバイスID (adid)を生成します。このIDを取得するには、Adjustインスタンスの以下のメソッドをコールしてください。

String adid = Adjust.getAdid();

注意: adidに関する情報は、Adjustサーバーがアプリのインストールをトラッキングした後でのみ利用できます。それ以降ならば、Adjust SDKはadidに関する情報を持っていて、メソッドを使ってこれにアクセスすることができます。ですので、SDKが初期化されアプリのインストールが正常にトラッキングされる前にadidを使うことはできません

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

アトリビューションコールバックは、アトリビューションコールバックの章で説明された通り、メソッドを使って引き起こされます。これらはユーザーのアトリビューション値の変化をお知らせします。ユーザーの現在のアトリビューション値に関する情報にアクセスする場合は、Adjustインスタンスの次のメソッドをコールしてください。

AdjustAttribution attribution = Adjust.getAttribution();

注意 ユーザーの現在のアトリビューション値に関する情報は、Adjustサーバーがアプリのインストールをトラッキングし最初のアトリビューションコールバックが呼ばれた後でのみ利用できます。それ以降であれば、Adjust SDKはユーザーのアトリビューション値に関する情報を持っていて、メソッドを使ってこれにアクセスすることができます。ですので、SDKが初期化され最初のアトリビューションコールバックが呼ばれる前にユーザーのアトリビューション値を使うことはできません

2.12 Pushトークン

プッシュ通知のトークンを送信するには、トークンを取得次第またはその値が変更され次第AdjustインスタンスでsetDeviceTokenメソッドをコールしてください。

Adjust.setDeviceToken("YourPushNotificationToken");

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

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

  1. [ダッシュボード]上で新しいトラッカーを作成してください。
  2. AdjustConfigのデフォルトトラッカーを設定してください。
AdjustConfig adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setDefaultTracker("{TrackerToken}");
Adjust.start(adjustConfig);

{TrackerToken}にステップ2で作成したトラッカートークンを入れてください。ダッシュボードにはhttp://app.adjust.com/を含む トラッカーURLが表示されます。ソースコード内にはこのURLすべてではなく、6文字のトークンを抜き出して指定してください。

  1. アプリをビルドして実行してください。ログ出力に下記のような行が表示されるはずです。
Default tracker: 'abc123'

2.14 ディープリンキング

ディープリンキングはiOSとAndroidプラットフォームでのみサポートされています

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

ディープリンキングの操作はネイティブで設定する必要があります。iOSではXcodeプロジェクトで、AndroidではAndroid StudioかEclipseプロジェクトで設定してください。

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

UnityのC#コードではスタンダード・ディープリンキングにおいてディープリンクの情報を届けることができません。ディープリンキングの取り扱いをアプリで有効化すると、ネイティブレベルでディープリンクの情報が得られます。AndroidとiOSアプリでのディープリンキングの有効化については以下の章をご覧ください。

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

ディファード・ディープリンキングにおいてURLの内容情報を得るには、AdjustConfigオブジェクトにコールバックメソッドを設定する必要があります。これはひとつのstringパラメータを受信し、そのパラメータにURLの内容が格納されます。setDeferredDeeplinkDelegateメソッドをコールしてConfigオブジェクトでこのメソッドを実装してください。

// ...

private void DeferredDeeplinkCallback(string deeplinkURL) {
Debug.Log("Deeplink URL: " + deeplinkURL);

// ...
}

AdjustConfig adjustConfig = new AdjustConfig("{YourAppToken", "{YourEnvironment}");

adjustConfig.setDeferredDeeplinkDelegate(DeferredDeeplinkCallback);

Adjust.start(adjustConfig);

ディファード・ディープリンキングでは、AdjustConfigオブジェクトで設定できる追加機能があります。Adjust SDKがディファード・ディープリンクの情報を得ると、Adjust SDKがそのURLを開くかどうか決めることができます。これを設定するには、ConfigオブジェクトでsetLaunchDeferredDeeplinkメソッドをコールしてください。

// ...

private void DeferredDeeplinkCallback(string deeplinkURL) {
Debug.Log ("Deeplink URL: " + deeplinkURL);

// ...
}

AdjustConfig adjustConfig = new AdjustConfig("{YourAppToken", "{YourEnvironment}");

adjustConfig.setLaunchDeferredDeeplink(true);
adjustConfig.setDeferredDeeplinkDelegate(DeferredDeeplinkCallback);

Adjust.start(adjustConfig);

これが設定されていない場合、Adjust SDKはデフォルトで常にディープリンクを開きます

アプリでディープリンキングを有効化するには、サポートするプラットフォーム毎にスキームを設定してください。

Androidアプリでのディープリンキング

これはネイティブのAndroid StudioもしくはEclipseプロジェクトで行ってください

Androidアプリでネイティブレベルでディープリンキングを設定するには、公式Android SDK READMEのガイドをご確認ください。

アプリでのディープリンキング

これはネイティブのXcodeプロジェクトで行ってください

iOSアプリでネイティブレベルでディープリンキングを設定するには、公式iOS SDK READMEのガイドをご確認ください。

3 トラブルシューティング

3.1 iOSでのデバッグ情報

ビルド後のプロセスのスクリプトを使っていても、プロジェクトがすぐに使える状態で実行できるとは限りません。

必要であれば、dSYMファイルを無効化してください。Project NavigatorからUnity-iPhoneプロジェクトを選び、Build Settingsタブをクリックしてdebug informationを検索してください。Debug Information FormatもしくはDEBUG_INFORMATION_FORMATオプションが見つかるはずです。DWARF with dSYM FileDWARFに変更してください。

3.2 ビルドスクリプトが実行されない

ビルド後のプロセスのスクリプトが実行されるにはパーミッションが必要です。ビルドがフリーズしスクリプトファイルが開く場合、デフォルトでスクリプトを実行しないように設定されている可能性があります。その場合、Assets/Editor/PostprocessBuildPlayer_AdjustPostBuildiOS.pyAssets/Editor/PostprocessBuildPlayer_AdjustPostBuildAndroid.pyの両方でchmodツールを使い実行権限を追加してください。

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

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

[Adjust gdprForgetMe];

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

ライセンス

mod_pbxproj.pyファイルはApache License Version 2.0(「本ライセンス」)に基づいてライセンスされます。 あなたがこのファイルを使用するためには、本ライセンスに従わなければなりません。本ライセンスのコピーは下記の場所から入手できます。 http://www.apache.org/licenses/LICENSE-2.0

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

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

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

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

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