🤑 Tenjinのオールインクルーシブパッケージは月額たったの200ドル - 詳細はこちら

MMP SDK Android

Prev Next

Android SDK実装ガイド

  • 過去のバージョン履歴については、こちらのリリースノートをご確認下さい。
  • Android SDKの実装には、最新のAndroid Studioを利用されることをお勧めします。
  • Unityの実装手順については, こちらをご確認ください。
  • ご質問がある方は、support@tenjin.comまでお問い合わせください。

目次

  • 基本実装
    • [Google PlayまたはAmazonストア][2]
      • [パーミッション][3]
      • [Android広告ID (AAID)][4]
      • [アプリストア設定][5]
      • [SDK初期化][25]
    • [その他のAndroidストア][6]
      • [パーミッション][7]
      • [Android広告ID (AAID)][8]
      • [OAID][9]
        • [MSA OAID][10]
        • [Huawei OAID][11]
        • [Huaweiインストールリファラ][12]
      • [アプリストア設定][13]
      • [SDK初期化][26]
    • [難読化設定][14]
  • [追加実装][15]
    • [GDPR対応][17]
      • [CMPコンセント情報を使ったオプトイン/アウト][55]
    • [アプリ内課金イベント][18]
    • [カスタムイベント][19]
    • [サーバ間インテグレーション][21]
    • [アプリサブバージョン][22]
    • [Live Opsキャンペーン][23]
    • [カスタマーユーザID][52]
    • [Analytics Installation ID][53]
    • [イベント/IAPのリトライ/キャッシュ][53]
    • [インプレッションレベル広告収益の実装][24]
    • [Google DMAパラメータ][56]
  • [テスト][30]

基本実装

マニュアルインストール

以下の「Android Studio」セクションに記載されている手順をご確認ください。

Maven

Mavenを使用する場合は、com.tenjin:android-sdk:VERSIONGradleの依存関係に追加し、ソース リポジトリにまだ存在しない場合はmavenCentral()を追加してください。

Androidスタジオ

  1. 最新のAndroid SDKをこちらよりダウンロードします。

  2. Tenjin SDKをAndroid Studioプロジェクトに追加します。 Android Studioのプロジェクトナビゲータに移動します。プロジェクトナビゲータでオプション「プロジェクト」を選択します。 Android Studioプロジェクトの appモジュールの下に libsフォルダーがあります。

  3. ファイル tenjin.jarまたは tenjin.aarlibsフォルダに追加してください。
    AndroidStudio
    4.Android Studioプロジェクトの appモジュールで、 build.gradleファイルを選択し、依存関係ブロックの下に以下を追加します。

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
        implementation files('libs/tenjin.aar')
    }
    

    デモプロジェクト[tenjin-android-sdk-demo][31]は、tenjin-android-sdkの実装サンプルです。


Google PlayまたはAmazonストア

Google PlayストアまたはAmazonストアでアプリを配布する場合には、次の初期設定を実装してください。

パーミッション

manifestファイルに下記のパーミッションを追加します。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Required to get network connectivity (i.e. wifi vs. mobile) -->

2022年4月1日より、ターゲットAPIレベルが32(Android 13)のアプリでGoogle広告IDを取得するには、下記のパーミッションが必要となります。できるだけ早く下記パーミッションの追加をお願いいたします。 下記のパーミッションを使用するには、1.12.8以上のバージョンのAndroid SDKを使用する必要があります。

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

Android広告ID (AAID)とインストールリファラ

Android広告ID(AAID)インストールリファラライブラリを追加してください。
下記の通り、build.gradleファイルに追加します。

dependencies {
  implementation 'com.google.android.gms:play-services-ads-identifier:{version}'
  implementation 'com.android.installreferrer:installreferrer:{version}'
}

Metaインストールリファラ実装

Metaインストールリファラー を収集できるようにするには、次のクエリをAndroid マニフェストに追加します。

<queries>
  <package android:name="com.facebook.katana" />
</queries>

<queries>
  <package android:name="com.instagram.android" />
</queries>

次に、下記をstrings.xmlファイルに記載してください。YOUR_META_APP_IDはお使いのアプリのMeta App IDになります。

<string name="facebook_app_id" translatable="false">YOUR_META_APP_ID</string>

アプリストア設定

デフォルトでは, unspecifiedがアプリストアの設定になります。アプリに応じて、アプリストアの値をgoogleplayまたはamazonに更新します。

  1. AndroidManifest.xml:
<meta-data
    android:name="TENJIN_APP_STORE"
    android:value="googleplay" />
  1. setAppStore():
TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");

instance.setAppStore(TenjinSDK.AppStoreType.googleplay);

SDK初期化

  1. Appsページから SDK_KEY を取得します。注: SDK_KEY はアプリごとに一意です。同じアプリに対して最大3つまでキーを作成できます。

    app_api_key.png

  2. メインActivityにおいて、import com.tenjin.android.TenjinSDK;を含めてください。
    3a. 各ActivityonResumeメソッドにおいて、下記コードを追加してください。

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

注: アプリ内でonCreateonResumeの間でユーザーの同意を求めるロジックがある場合、同意しないユーザーは onResumeで追跡されないため、TenjinSDKの初期化にはonResumeではなくonCreateを使用してください。

注: アプリの初回起動だけでなく、すべてのonResumeにこのコードを実装するようにしてください。推奨事項に従わない場合は、適切なサポートを提供できないか、アカウントが停止される可能性があります。


その他のAndroidストア

アプリをGooglePlayストアまたはAmazonストア以外(その他のAndroidストア)に配布する場合は、次の初期設定を実装します。


パーミッション

manifestファイルに下記のパーミッションを追加します。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Required to get network connectivity (i.e. wifi vs. mobile) -->

2022年4月1日より、ターゲットAPIレベルが32(Android 13)のアプリでGoogle広告IDを取得するには、下記のパーミッションが必要となります。できるだけ早く下記パーミッションの追加をお願いいたします。 下記のパーミッションを使用するには、1.12.8以上のバージョンのAndroid SDKを使用する必要があります。

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

Android広告ID (AAID)とインストールリファラ

Android広告ID(AAID)インストールリファラライブラリを追加してください。
下記の通り、build.gradleファイルに追加します。

dependencies {
  implementation 'com.google.android.gms:play-services-ads-identifier:{version}'
  implementation 'com.android.installreferrer:installreferrer:{version}'
}

IMEIを使用したアドネットワークを使用する場合は、下記のパーミッションを含めてください。

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

OAID

TenjinはAndroidのOAIDを使用したAndroidアプリストアのトラッキングをサポートしています。OAIDライブラリを実装した場合のオプションは下記の通りです。

MSA OAID

MSA OAIDは、MSA (Mobile Security Alliance)が提供する、中国で製造されるデバイスで取得可能な広告IDです。MSAライブラリを実装する場合は, oaid_sdk_1.0.25.aarsupplierconfig.jsonをダウンロードします。また、下記をgradleファイルに追加します。

implementation files('libs/oaid_sdk_1.0.25.aar')

必ずsupplierconfig.jsonをプロジェクトのassetsフォルダにコピーしてください。

Huawei OAID

中国以外では、Huaweiによって提供されるOAIDを取得することが可能です。
Huawei OAIDライブラリを追加するには下記の手順を実施します。

build.gradleファイル内で、Huawei SDKに対するMavenのアドレスを追加します。

allprojects {
    repositories {
        google()
        maven { url 'https://developer.huawei.com/repo/' }
    }
}
dependencies {
    implementation 'com.huawei.hms:ads-identifier:{version}'
}

Huaweiインストールリファラ

Huaweiアプリギャラリーにてアプリをプロモーションする場合, 上記のHuawei OAID SDK及び インストールリファラライブラリを追加します。

dependencies {

    implementation 'com.huawei.hms:ads-identifier:{version}'
    implementation 'com.huawei.hms:ads-installreferrer:{version}'

}

アプリストア設定

デフォルトでは, unspecifiedがアプリストアの設定になります。アプリストアの値をotherに更新します。

  1. AndroidManifest.xml:
<meta-data
    android:name="TENJIN_APP_STORE"
    android:value="other" />
  1. setAppStore():
TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");

instance.setAppStore(TenjinSDK.AppStoreType.other);

SDK初期化

  1. Appsページから SDK_KEY を取得します。注: SDK_KEY はアプリごとに一意です。同じアプリに対して最大3つまでキーを作成できます。
    app_api_key.png

  2. メインActivityにおいて、import com.tenjin.android.TenjinSDK;を含めてください。
    3a. 各ActivityonCreateメソッドにおいて、下記コードを追加してください。

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

注: アプリの初回起動だけでなく、すべてのonCreateにこのコードを実装するようにしてください。推奨事項に従わない場合は、適切なサポートを提供できないか、アカウントが停止される可能性があります。


難読化設定

-keep class com.tenjin.** { *; }
-keep public class com.google.android.gms.ads.identifier.** { *; }
-keep public class com.google.android.gms.common.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep class * extends java.util.ListResourceBundle {
    protected java.lang.Object[][] getContents();
}

# Keep the signatures that Gson/TypeToken rely on
-keepattributes Signature
-keepattributes *Annotation*

# General Gson/TypeToken protection
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken

OAIDのクラスについては難読化しないでください。

-keep class XI.CA.XI.**{*;}
-keep class XI.K0.XI.**{*;}
-keep class XI.XI.K0.**{*;}
-keep class XI.xo.XI.XI.**{*;}
-keep class com.asus.msa.SupplementaryDID.**{*;}
-keep class com.asus.msa.sdid.**{*;}
-keep class com.bun.lib.**{*;}
-keep class com.bun.miitmdid.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class com.zui.opendeviceidlibrary.**{*;}
-keep class org.json.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}

Huaweiのライブラリを使用している場合は、下記の設定を行います。

-keep class com.huawei.hms.ads.** { *; }
-keep interface com.huawei.hms.ads.** { *; }

追加実装

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 = "<SDK_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上で正しくユーザをトラッキングするには、advertising_idが必要となります。

    • advertising_id
  • IMEIまたはOAIDを使用したネットワークでプロモーションを実施する場合は、下記のパラメータが必須となります。

    • imei
    • oaid
  • Google Adsでプロモーションを行う場合は、下記のパラメータが必須となります。

    • platform
    • os_version
    • app_version
    • os_version_release
    • locale
    • device_model
    • build_id
    • advertising_id

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

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

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

instance.connect();

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

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

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

instance.connect();

CMPを用いたオプトイン/アウト

ユーザーのデバイスにすでに保存されている CMP同意 (目的 1)の情報を使用して、Tenjin SDKを自動的にオプトインまたはオプトアウトできます。このメソッドは、オプトインかオプトアウトかを示すブール値を返します。

optInOutUsingCMP()

TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
optInOut = instance.optInOutUsingCMP(); 

デバイスパラメータ

パラメータ 詳細 参照
ip_address IP Address
advertising_id Google広告ID [Android][32]
limit_ad_tracking limit ad tracking enabled [Android][33]
oaid Open Advertising ID [Android][34]
imei Device IMEI [Android][35]
platform プラットフォーム Android
referrer Google Play Install Referrer [Android][36]
os_version OSバージョン [Android][37]
device デバイス名 [Android][38]
device_manufacturer デバイス製造元 [Android][39]
device_model デバイスモデル [Android][40]
device_brand デバイスブランド [Android][41]
device_product デバイスプロダクト [Android][42]
carrier キャリア [Android][43]
connection_type セルラーまたはWifi [Android][44]
screen_width デバイススクリーン幅 [Android][45]
screen_height デバイススクリーン高さ [Android][46]
os_version_release リリース時OSバージョン [Android][47]
build_id ビルドID [Android][48]
locale デバイスロケール [Android][49]
country ロケール国 [Android][50]
timezone タイムゾーン [Android][51]



アプリ内課金イベント

ユーザの課金動向を理解するために, transactionイベントをTenjinに送信することが可能です。

重要: 管理画面のAppsタブ -> 該当のAndroidアプリ -> Editより、Public Keyを入力してください。
Publick KeyはBase64でエンコードされたRSA公開キーで、Google Playデベロッパーコンソールの選択したアプリ > Monetize > Monetization setup > Google Play Billing > Licensing: Base64-encoded RSA public key、の箇所から取得できます。

Android の場合、現在サポートされているのはGoogle PlayからのIAPトランザクションのみであることに注意してください。

image.png

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

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

例:


public void sendPurchaseEvent(Purchase purchase, Double price, String currencyCode) {
    String sku = purchase.getSku();
    String purchaseData = purchase.getOriginalJson();
    String dataSignature = purchase.getSignature();

    TenjinSDK instance = getTenjinInstance();
    instance.transaction(sku, currencyCode, 1, price, purchaseData, dataSignature);
}

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

免責事項: Tenjinで初めて課金イベントを実装する場合は、課金データを使用してユーザー獲得キャンペーンを拡大する前に、使用している他のツールでデータが正しいことを確認してください。

注意事項

Tenjinに送る前に必ず課金イベントを「承認」してください。詳しくはこちら)をお読みください。

アプリストア手数料設定

新しい設定により、アプリストアの収益手数料を15%または30%の間で選択可能です。

  • CONFIGURE --> Appsをクリック。
  • アプリを選択。
  • App Store Commissionのセクションで、Editをクリック
  • アプリストア手数料として30%または15%を選択。
  • 開始日と終了日を選択します。 (終了日を指定しない場合は、終了日を空白のままにすることもできます)
  • Saveをクリックします (注: 15%の手数料は変更を加えた日付以降に適用され、過去日付には適用されません。そのため、変更を行う日付から以降の開始日を設定してください)。

Amazonアプリストア

Amazonアプリストアのレシート検証には、receiptIdパラメータとuserIdパラメータが必要です。

重要: Amazon アプリの共有キーを Tenjinダッシュボードに追加する必要があります。共有キーは、Amazonアプリストアの開発者アカウントから取得できます。


カスタムイベント

注意点: SDK初期化処理の前にカスタムイベントを送らないようにしてください。

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

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

String sdkKey = <SDK_KEY>;
TenjinSDK instance = TenjinSDK.getInstance(this, sdkKey);

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


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

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

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

String apiKey = <SDK_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型であることにご注意ください。

重要:カスタムイベント名は80文字未満に制限してください。500個を超えるカスタムイベント名は作成しないでください。


サーバ間インテグレーション

Tenjinはサーバ間のインテグレーションもサポートしております(有償のプロダクト)。これにより、SDKの実装を必要とせずに、インストールおよびインストール後のイベントをサーバーからTenjinサーバーに直接送信できるようになります。ドキュメントをご覧になりたい方は、support@tenjin.comまでメールをお送りいただき、料金についてご相談ください。


アプリサブバージョン

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

TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
instance.appendAppSubversion(8888);
instance.connect();

Live Opsキャンペーン

アプリ開発者は、自社サーバーまたはTenjinと連携していないネットワークにカスタムでコールバックを送信できます。これにより、開発者はこれらのユーザーレベルの属性データをリアルタイムで収集して分析できます。以下は、Tenjinのカスタムコールバックを使用した使用例です。

  • 内製のデータ分析ツールがある場合、カスタム コールバックを使用すると、デバイス レベルごとに属性データをゲーム内データに関連付けることができます。

  • ユーザーのアトリビューションソースに応じて、さまざまなアプリコンテンツを表示します。たとえば、ユーザーAがオーガニックに関連付けられ、ユーザーBが Facebookに関連付けられているとします。ユーザー Bの方がアプリに関心を持っている可能性が高いため、ユーザーがアプリをインストールした後に特別なゲーム内オファーを表示することができます。

より具体的な使用例について相談をご希望の場合は、Tenjinのサクセスマネージャーまでお問い合わせください。

Live Opsキャンペーンは有償のプロダクトとなります。料金については、お客様のアカウントマネージャまでお問い合わせください。


カスタマーユーザーID

イベントのパラメーターとして送信するカスタマーユーザー IDを設定および取得できます。

.setCustomerUserId(userId: "user_id")

.getCustomerUserId()

TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
instance.setCustomerUserId(userId: "user_id");
userId = instance.getCustomerUserId(); 

Analytics Installation ID

下記のメソッドを用いて、ランダムに生成され、デバイスのローカルストレージに保存されているユニークなAnalytics IDを取得できます。
getAnalyticsInstallationId()

TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
analyticsId = instance.getAnalyticsInstallationId; 

イベントのキャッシュ/リトライ

リクエストが失敗した場合、またはユーザーがインターネットに接続していない場合のイベントとIAPの再試行とキャッシュを有効/無効にできます。これらのイベントは、新しいイベントがキューに追加され、ユーザーが接続を回復した後に送信されます。

setCacheEventSetting(true)

TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
instance.setCacheEventSetting(setting: true);

インプレッションレベル広告収益の実装

Tenjinでは下記のメディエーションプロバイダにおいて、インプレッションレベルの広告収益(ILRD)をサポートしています。

  • AppLovin
  • Unity LevelPlay
  • HyperBid
  • AdMob
  • TopOn
  • CAS
  • TradPlus

この機能を使用すると、ユーザーへの広告のインプレッションごとに広告収益に対応するイベントを受け取ることができます。この機能を有効にするには、以下の手順に従ってください。

ILRDは有償のプロダクトとなります。料金については、お客様のアカウントマネージャまでお問い合わせください。


Google DMAパラメータ

すでに CMPが実装されている場合、Google DMAパラメータはTenjin SDKによって自動的に収集されます。 Tenjin SDKでの追加実装は必要ありません。 CMPをオーバーライドしたい場合、または独自の同意メカニズムを使用したい場合は、以下メソッドを使用できます。

setGoogleDMAParameters(boolean, boolean)

TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
instance.setGoogleDMAParameters(adPersonalization, adUserData); 

Google DMAパラメータの収集を明示的に管理するために、いつでも柔軟にオプトインまたはオプトアウトできます。デフォルト設定はオプトインですが、OptInGoogleDMAまたは OptOutGoogleDMAメソッドを使用して設定を簡単に調整でき、データプライバシー設定を完全に制御できます。

instance.optInGoogleDMA(); 
instance.optOutGoogleDMA(); 

テスト

実装が正しくできているかどうかを確認するには、SDK Live Dataで確認できます。管理画面のDIAGNOSE-> Test devicesより、テストデバイスのリストにadvertising_idを追加します。SDK Live Dataにアクセスして、アプリからテストイベントを送信します。イベントがリアルタイムで確認できます。


[2]: docs/ja/android-sdk#google-play-or-amazon-store
[3]: docs/ja/android-sdk#permission
[4]: docs/ja/android-sdk#android-advertising-id-aaid-and-install-referrer
[5]: docs/ja/android-sdk#app-store
[6]: docs/ja/android-sdk#other-android-store
[7]: docs/ja/android-sdk#permission1
[8]: docs/ja/android-sdk#android-advertising-id-aaid-and-install-referrer1
[9]: docs/ja/android-sdk#oaid
[10]: docs/ja/android-sdk#msa-oaid
[11]: docs/ja/android-sdk#huawei-oaid
[12]: docs/ja/android-sdk#huawei-install-referrer
[13]: docs/ja/android-sdk#app-store1
[14]: docs/ja/android-sdk#proguard-settings
[15]: docs/ja/android-sdk#additional-integration
[17]: docs/ja/android-sdk#gdpr
[18]: docs/ja/android-sdk#purchase-events
[19]: docs/ja/android-sdk#custom-events
[20]: docs/ja/android-sdk#deferred-deeplink
[21]: docs/ja/android-sdk#servertoserver-integration
[22]: docs/ja/android-sdk#app-subversion-parameter-for-ab-testing-requires-datavault
[23]: docs/ja/android-sdk#liveops-campaigns
[24]: docs/ja/android-sdk#customer-user-id
[52]: docs/ja/android-sdk#retry-cache
[53]: docs/ja/android-sdk#analytics-installation-id
[55]: docs/ja/android-sdk#opt-inout-using-cmp
[56]: docs/ja/android-sdk#google-dma-parameters
[24]: docs/ja/android-sdk#impression-level-ad-revenue-integration
[25]: docs/ja/android-sdk#app-initialization
[26]: docs/ja/android-sdk#app-initialization1
[30]: docs/ja/android-sdk#testing
[31]: https://github.com/tenjin/tenjin-android-sdk-demo
[32]: https://developers.google.com/android/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html#getAdvertisingIdInfo(android.content.Context)
[33]: https://developers.google.com/android/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#isLimitAdTrackingEnabled()
[34]: http://www.msa-alliance.cn/col.jsp?id=120
[35]: https://developer.android.com/reference/android/telephony/TelephonyManager#getImei()
[36]: https://developer.android.com/google/play/installreferrer/index.html
[37]: https://developer.android.com/reference/android/os/Build.VERSION.html#SDK_INT
[38]: https://developer.android.com/reference/android/os/Build.html#DEVICE
[39]: https://developer.android.com/reference/android/os/Build.html#MANUFACTURER
[40]: https://developer.android.com/reference/android/os/Build.html#MODEL
[41]: https://developer.android.com/reference/android/os/Build.html#BRAND
[42]: https://developer.android.com/reference/android/os/Build.html#PRODUCT
[43]: https://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimOperatorName()
[44]: https://developer.android.com/reference/android/net/ConnectivityManager.html#getActiveNetworkInfo()
[45]: https://developer.android.com/reference/android/util/DisplayMetrics.html#widthPixels
[46]: https://developer.android.com/reference/android/util/DisplayMetrics.html#heightPixels
[47]: https://developer.android.com/reference/android/os/Build.VERSION.html#RELEASE
[48]: https://developer.android.com/reference/android/os/Build.html
[49]: https://developer.android.com/reference/java/util/Locale.html#getDefault()
[50]: https://developer.android.com/reference/java/util/Locale.html#getDefault()
[51]: https://developer.android.com/reference/java/util/TimeZone.html