Android SDK実装手順

過去のバージョン履歴については、こちらのリリースノートを御覧ください。

Unityの実装手順については, こちらをご確認ください。 https://github.com/tenjin/tenjin-unity-sdk.

Tenjin Android SDK (v1.9.3) (132KB) - Google Play and Amazon Store support

注意点: Android SDKの実装には、最新のAndroid Studioを利用されることをお勧めします。

Manifestファイル:


  • manifestタグ内にINTERNETパーミッションを含めてください
  • applicationタグ内にGoogle Play Servicesを含めてください
  • TenjinのINSTALL_REFERRER receiverを含めてください
<manifest>
  ...
  <application ...>
    <meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />
    ...
    <receiver android:name="com.tenjin.android.TenjinReferrerReceiver" android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER"/>
      </intent-filter>
    </receiver>
    ...
  </application>
  ...
  <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- Required to get network connectivity (i.e. wifi vs. mobile) -->
  ...
</manifest>

SDK実装手順:


Android Studioの場合

  1. 最新のAndroid SDKをこちらよりダウンロードします。
  2. New > Moduleを選択し、tenjin.jarをお使いのAndroid Studio projectに追加します。
  3. New Moduleダイアログにおいて, Import .JAR or .AAR Packageオプションを選択し、Nextをクリックします。 AndroidStudio
  4. tenjin.jarまたはtenjin.aarファイルを選択し、Finishをクリックします。
  5. Google Play Servicesをダウンロードしていない場合, build.gradleファイルに追加します。 Tenjin Android SDK v1.8.3以降をお使いの場合, GoogleのInstall Referrer Libraryを追加する必要があります。
dependencies {
  compile 'com.google.android.gms:play-services:10.0.1'
  compile 'com.android.installreferrer:installreferrer:1.0'
}
  1. appモジュールのbuild.gradleファイル内で, 下記のdependenciesブロックが追加されていることを確認します。
    dependencies {
    compile project(":tenjin")
    }
    

    Eclipseの場合

  2. 最新のAndroid SDKをこちらよりダウンロードします。
  3. プロジェクトのルートフォルダに、libsフォルダを作成します。
  4. tenjin.jarファイルをlibsフォルダに追加します。
  5. tenjin.jarを右クリックし、Build Path -> Add to Build Pathを選択します。
  6. これにより、該当のプロジェクトにReferenced Librariesフォルダが作成されます。
  7. SDKマネージャより、GoogleのAndroid Support Repository, Android Support Library,Google Play Services及びGoogle Repository SDKをダウンロードします。 これらSDKの配置についてはこちらのGoogleドキュメントを参照ください。

Code Integration:

  1. 管理画面よりAPI_KEYを取得します。
  2. メインActivityにおいて、import com.tenjin.android.TenjinSDK;を含めてください。

3a. 各ActivityonResumeメソッドにおいて、下記コードを追加してください。

TenjinSDK instance = TenjinSDK.getInstance(this, "<API_KEY>");
instance.connect();

Activityコード内での実装例は下記のとおりです。

import com.tenjin.android.TenjinSDK;
import com.tenjin.android.Callback;

public class TenjinDemo extends ActionBarActivity {

    @Override
    public void onResume() {
        //standard code
        super.onResume()

        //Integrate TenjinSDK connect call
        String apiKey = "<API_KEY>";
        TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
        instance.connect();

        //Your other code...
        //...

    }
}

注意: onResumeメソッドにより、イベントハンドラー内でアプリ停止後にセッション起動を行いたくない場合は、代わりにonStart()を使用してください。下記はAndroidのアクティビティライフサイクルについての説明です。

https://developer.android.com/guide/components/activities/activity-lifecycle.html

3b. 他サービスからのディープリンクを使用した初期化の手順(3aか3bのどちらか一方のみをご使用ください。) もし、他サービスでディファードディープリンクを使用している場合、それらのディープリンクをTenjin側に連携してアトリビューションのロジックと紐付けることが可能です。

import com.facebook.applinks.AppLinkData;

import com.tenjin.android.TenjinSDK;

public class TenjinDemo extends ActionBarActivity {

    @Override
    public void onResume() {
        //standard code
        super.onResume()

        //Integrate TenjinSDK connect call
        String apiKey = "<API_KEY>";
        final TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);

        String appLinkUri = "your_deeplink";
        if (appLinkUri){
          instance.connect(appLinkUri);
        } else {
          instance.connect();
        }

        //Your other code...
        //...

    }
}

TenjinのGDPR対応:


GDPRへの対応において、Tenjin SDKではデバイス/ユーザのオプトイン, オプトアウトおよび各デバイスパラメータのオプトイン, オプトアウトが可能です。OptOut()メソッドにより、Tenjinにリクエストが送られることはありません。

オプトイン/オプトアウトを実装するには:

import com.tenjin.android.TenjinSDK;

public class TenjinDemo extends ActionBarActivity {

    @Override
    public void onResume() {
        //standard code
        super.onResume()

        //Integrate TenjinSDK connect call
        String apiKey = "<API_KEY>";
        TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);

        boolean userOptIn = checkOptInValue();

        if (userOptIn) {
            instance.optIn();
        }
        else {
            instance.optOut();
        }

        instance.connect();

        //Your other code...
        //...

    }

    protected boolean checkOptInValue(){
        // check opt-in value
        // return true; // if user opted-in
        return false;
    }
}

特定のデバイスパラメータをオプトイン,オプトアウトするにはOptInParams() または OptOutParams()メソッドを使用します。OptInParams()メソッドにより指定されたパラメータのみを送信します。OptOutParams()メソッドにより、指定されたパラーメータ以外のパラメータを送信します。

注意点:Tenjin上で正しくユーザをトラッキングするには、ip_address, advertising_id, developer_device_id, limit_ad_tracking, referrer (Android), and iad (iOS) が少なくとも必要となります。

特定のデバイスパラメータのみを取得するには、OptInParams()を使用します。下記具体例では、ip_address, advertising_id, developer_device_id, limit_ad_tracking, referrer, and iadのみを取得しています。

String apiKey = "<API_KEY>";
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);

String[] optInParams = {"ip_address", "advertising_id", "developer_device_id", "limit_ad_tracking", "referrer", "iad"};
instance.optInParams(optInParams);

instance.connect();

特定のデバイスパラメータ以外のパラメータを取得するには、OptOutParams()メソッドを使用します。下記具体例では、locale, timezone, and build_id以外のパラメータを送信ししています。

String apiKey = "<API_KEY>";
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);

String[] optOutParams = {"locale", "timezone", "build_id"};
instance.optOutParams(optOutParams);

instance.connect();

デバイスパラメータ

パラメータ 詳細 参照
advertising_id Google広告ID Android
limit_ad_tracking limit ad tracking enabled Android
platform プラットフォーム Android
referrer Google Play Install Referrer Android
os_version OSバージョン Android
device デバイス名 Android
device_manufacturer デバイス製造元 Android
device_model デバイスモデル Android
device_brand デバイスブランド Android
device_product デバイスプロダクト Android
carrier キャリア Android)
connection_type セルラーまたはWifi Android)
screen_width デバイススクリーン幅 Android
screen_height デバイススクリーン高さ Android
os_version_release リリース時OSバージョン Android
build_id ビルドID Android
locale デバイスロケール Android)
country ロケール国 Android)
timezone タイムゾーン Android

アプリ内課金イベント実装手順:


ユーザの課金動向を理解するために, transactionイベントをTenjinに送信することが可能です。これには二通りの方法があります。

  1. レシートの検証 Tenjinではお客様の送信したtransactionレシートの検証が可能です。管理画面のAppsタブ -> 該当のAndroidアプリ -> Editより、Public Keyを入力してください。 Public Keyはお客様のGoogle Play dashboardの"Services & APIs"から取得できます。

Dashboard

Public Key入力後, 下記のTenjin SDKメソッドをご利用ください。

public void transaction(String productId, String currencyCode, int quantity, double unitPrice, String purchaseData, String dataSignature)

下記が課金イベントの実装具体例になります。(http://developer.android.com/google/play/billing/billing_integrate.html#Purchase)を参照:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == 1001) {
      int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
      String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
      String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");

      if (resultCode == RESULT_OK) {
         try {
            JSONObject jo = new JSONObject(purchaseData);
            String sku = jo.getString("productId");

            //here you will need to assign the currencyCode, quantity, and the price
            TenjinSDK.getInstance(this, "<API_KEY>").transaction(sku, "USD", 1, 3.99, purchaseData, dataSignature)
          }
          catch (JSONException e) {
             alert("Failed to parse purchase data.");
             e.printStackTrace();
          }
      }
   }
}

コード実装後、課金イベントが正しく検証されているかを確かめるためにテストトランザクションを送ってください。こちらよりお使いのテスト端末のGoogle広告IDを追加後、テスト用トランザクションをお送りください。 SDK Live pageより検証後の課金イベントがリアルタイムに確認できます。

  1. トランザクションのマニュアル連携 (課金イベントがGoogle Playによって処理されない場合に必要) この方法の場合, transactionのproductName, currencyCode, quantity, およびユニット price を連携することが必要です。

public void transaction(String productId, String currencyCode, int quantity, double unitPrice).

Here's an example of how this can be implemented at the time of purchase:

//The developer's own method for completing a transaction that happened in app
public void completeTransaction(String productId, String currencyCode, int quantity, double unitPrice){
  ...
  //Call the Tenjin SDK with the context and the API_KEY
  TenjinSDK.getInstance(this, "<API_KEY>").transaction(productId, currencyCode, quantity, unitPrice);
  ...
}
  • productId -> プロダクトの名称またはID
  • currencyCode -> 通貨コード
  • quantity -> 当該課金イベントに含まれるプロダクトの数
  • unitPrice -> プロダクトのプライス

トータルの課金額は以下のように計算されます。 TotalRevenue = Quantity * UnitPrice Tenjin will record and track the revenue based on the currency code, quantity, and the unit price sent.

カスタムイベント実装手順:


カスタムイベントの送付にはeventWithName(String name)メソッドを使います。

カスタムイベントを利用して、特定のイベントを獲得したユーザの流入元のコスト情報などに紐付けることが可能です。下記が実装例となります。

String apiKey = <API_KEY>;
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);

//Integrate a custom event with a distinct name - ie. swiping right on the screen
instance.eventWithName("swipe_right");

INTEGER型の値をvalueをカスタムイベントに含める方法:

注意点: SDK初期化処理の前にカスタムイベントを送らないようにしてください。 初期化処理は各カスタムイベント発生の前に行われる必要があります。

カスタムイベントにはINTEGER型のvalueを含めることができます:eventWithNameAndValue(String name, int value)

Tenjinは同じeventNameのイベントのカウントまたは総和を計算するのにeventValueを使用します。データボルトをお使いの場合、これらのvaluesを使って追加のメトリックを計算することができます。

String apiKey = <API_KEY>;
TenjinSDK.instance = TenjinSDK.getInstance(this, apiKey);

//Integrate a custom event with a distinct name and value - ie. paying 100 virtual coins for an item
instance.eventWithNameAndValue("item", "100");

上記実装例において、管理画面上でitemというイベント名のイベントのvalueの総和と平均を確認することが可能です。 valueはINTEGER型であることにご注意ください。

ディファードディープリンク実装手順:


TenjinのトラッキングURL経由でユーザがインストールした後、そのユーザをアプリ内の特定ページに遷移させることが可能です。getDeeplinkメソッドとコールバックにより、ディファードディープリンクにアクセスすることが可能です。 テスト手順についてはこちらをご確認ください。

import com.tenjin.android.TenjinSDK;
import com.tenjin.android.Callback;

public class TenjinDemo extends ActionBarActivity {

    //...other callbacks are here

    @Override
    public void onResume() {
        //standard code
        super.onResume()

        //Integrate TenjinSDK connect call
        String apiKey = "<API_KEY>"; //You can potentially set this as a global variable too
        TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
        instance.connect();

        instance.getDeeplink(new Callback() {
            @Override
            public void onSuccess(boolean clickedTenjinLink, boolean isFirstSession, Map<String, String> data) {
                if (clickedTenjinLink) {
                    if (isFirstSession) {
                        if (data.containsKey(TenjinSDK.DEEPLINK_URL)) {
                           // use the deferred_deeplink_url to direct the user to a specific part of your app
                        }
                    }
                }
            }
        });

        //Your other code...
        ...

    }

SDKバージョン1.7.1以上をお使いの場合、isFirstSessionパラメータを利用することが可能です。下記の例では買い切り型アプリの場合、そのインストールイベントをTenjinに送信することが可能です。

import com.tenjin.android.TenjinSDK;

public class TenjinDemo extends ActionBarActivity {

    //...other callbacks are here

    @Override
    public void onResume() {
        //standard code
        super.onResume()

        //Integrate TenjinSDK connect call
        String apiKey = "<API_KEY>"; //You can potentially set this as a global variable too
        TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
        instance.connect();

        instance.getDeeplink(new Callback() {
            @Override
            public void onSuccess(boolean clickedTenjinLink, boolean isFirstSession, Map<String, String> data) {
                if (isFirstSession) {
                  // send paid app price and revenue to Tenjin
                }
            }
        });

        //Your other code...
        ...

    }

Androidリファラーのテスト手順:


アンドロイドINSTALL_REFERRERのテスト方法:

  1. 上記手順に従ってSDKの初期化を実施
  2. ./adb shellを実行。もしadbがホームディレクトリにない場合、お使いのAndroid SDKフォルダに配置
  3. アプリを実行
  4. IDE上でREF タグをフィルタ
  5. 下記を実行:
    am broadcast -a com.android.vending.INSTALL_REFERRER -n <com.your.apppackage>/com.tenjin.android.TenjinReferrerReceiver --es "referrer" "ai=test&gclid=click_test"
    
    お使いのIDEコンソール上で、referrerパラメータに設定された出力を確認することができます。上記例では:

ai=test&gclid=click_test

となります。

アプリサブバージョン:

  • A/Bテストを実施する場合、appendAppSubversionメソッドを用いて、アプリバージョンに固定の数値を付加することが可能です。例えば、アプリのバージョンが1.0.1appendAppSubversion: @8888をセットすると、レポートされるアプリバージョンは 1.0.1.8888となります。DataVaultを用いれば、このアプリバージョンごとのパフォーマンスを分析することが可能です。
[TenjinSDK init:@"<API_KEY>"];
[TenjinSDK appendAppSubversion:@8888];
[TenjinSDK connect];

results matching ""

    No results matching ""