Android SDK実装手順

目次

パーミッション


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

  <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) -->

2022年初より、ターゲットAPIレベルが31(Android 12)のアプリでGoogle広告IDを取得するには、下記のパーミッションが必要となります。できるだけ早く下記パーミッションの追加をお願いいたします。

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

Google Playストア以外のストアで、IMEIを使用したネットワークを使用する場合は、下記のパーミッションを含めてください。Google Playでアプリを開発する場合は、下記のパーミッション追加は不要です。

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

SDK実装手順


Android Studio

  1. 最新のAndroid SDKをこちらよりダウンロードします。
  2. New > Moduleを選択し、Tenjin SDKをお使いのAndroid Studioプロジェクトに追加します。
  3. New Moduleダイアログにおいて, Import .JAR or .AAR Packageオプションを選択し、Nextをクリックします。 AndroidStudio
  4. tenjin.jarまたはtenjin.aarファイルを選択し、Finishをクリックします。
  5. appモジュールのbuild.gradleファイル内で, 下記のdependenciesブロックが追加されていることを確認します。
    dependencies {
    compile project(":tenjin")
    }
    

    Eclipse

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

Google Playサービスとインストールリファラ

Google Playアプリの場合、Google Playサービスインストールリファラライブラリを追加する必要があります。 下記の通り、build.gradleファイルに追加します。 Google Play以外のストアのアプリの場合は、Google Playサービスを追加する必要はありません。

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

OAIDとOtherアンドロイドアプリストア

TenjinはAndroidのOAIDを使用したAndroidアプリストアのトラッキングをサポートしています。OAIDライブラリを実装した場合のオプションは下記の通りです。Google Play以外のアプリを開発する場合は、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.23.aar')

supplierconfig.jsonファイルを、プロジェクト内のassetsフォルダにコピーします。 次に、下記の通りアプリストアタイプの値をotherに設定します。

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

instance.setAppStore(TenjinSDK.AppStoreType.other);

Huawei OAID (中国以外)

中国以外では、Huaweiによって提供されるOAIDを取得することが可能です。 Huawei OAIDライブラリを追加するには下記の手順を実施します。 build.gradleファイル内で、Huawei SDKに対するMavenのアドレスを追加します。

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

下記の通りアプリストアタイプの値をotherに設定します。

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

instance.setAppStore(TenjinSDK.AppStoreType.other);

Huaweiインストールリファラ

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

dependencies {

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

}

Proguard設定

-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 Object[][] getContents();
}
-keepattributes *Annotation*

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

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

コード実装


SDK初期化

  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...
        //...

    }
}

アプリストア設定

デフォルトでは, Google Playがアプリストアになっています。 Google Play以外のアプリの場合は、TenjinSDK.AppStoreType.*の値を適切に設定してください。

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

instance.setAppStore(TenjinSDK.AppStoreType.{{APP_STORE_TYPE_VALUE}});

AppStoreTypeのオプションは下記の通りです。

  • googleplay
  • amazon
  • other

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上で正しくユーザをトラッキングするには、advertising_idが必要となります。
  • IMEIまたはOAIDを使用したネットワークでプロモーションを実施する場合は、下記のパラメータが必須となります。
    • oaid
    • imei
  • Google Adsでプロモーションを行う場合は、下記のパラメータが必須となります。
    • platform
    • os_version
    • locale
    • device_model
    • build_id

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

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

String[] optInParams = {"ip_address", "advertising_id", "developer_device_id", "limit_ad_tracking", "referrer"};
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 リンク
limit_ad_tracking limit ad tracking enabled リンク
oaid Open Advertising ID リンク
imei Device IMEI リンク
platform プラットフォーム Android
referrer Google Play Install Referrer リンク
os_version OSバージョン リンク
device デバイス名 リンク
device_manufacturer デバイス製造元 リンク
device_model デバイスモデル リンク
device_brand デバイスブランド リンク
device_product デバイスプロダクト リンク
carrier キャリア リンク
connection_type セルラーまたはWifi リンク
screen_width デバイススクリーン幅 リンク
screen_height デバイススクリーン高さ リンク
os_version_release リリース時OSバージョン リンク
build_id ビルドID リンク
locale デバイスロケール リンク
country ロケール国 リンク
timezone タイムゾーン リンク

アプリ内課金イベント


ユーザの課金動向を理解するために, 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より検証後の課金イベントがリアルタイムに確認できます。

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

カスタムイベント


カスタムイベントの送付には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...
        ...

    }

下記がディファードディープリンクコールバック内で取得できるパラメータの一覧です。

パラメータ 説明
advertising_id デバイスのAdvertising ID
ad_network キャンペーンのネットワーク名
campaign_id TenjinキャンペーンID
campaign_name Tenjinキャンペーン名
site_id パブリッシャーID
referrer インストーリリファラ
deferred_deeplink_url キャンペーンのディファードディープリンクURL
clickedTenjinLink Tenjinによってデバイスがトラックされたかどうかの真偽値
isFirstSession 各デバイスごとの初回起動かどうかの真偽値

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...
        ...

    }

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

Tenjinはサーバ間のインテグレーションもサポートしております。ドキュメントをご覧になりたい方は、support@tenjin.comまでメールをお送りください。

アプリサブバージョン:

  • 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 ""