Android SDK - 基本的な統合

ドキュメント

ビデオガイドあり

統合プロセスの詳細なウォークスルーについては、このビデオをご覧ください。 最良の結果を得るために、ビデオと以下の書面ガイドの両方を使用してください。


前提条件

Singular SDKの統合のステップを完了してくださいこの統合を進める前に、計画と前提条件のステップを完了してください。

重要:これらの前提条件はSingular SDKを統合する際に必要です。


インストール

インストール方法

注意:Android Studioでは、新規プロジェクトのデフォルトがKotlin DSL(build.gradle.kts)になりました。 以下のコード例では、Kotlin DSL(推奨)とGroovy DSLの両方の形式を使用しています。

方法1:Gradle(推奨)
#

方法 1: Gradle (推奨)

SDKリポジトリの追加

プロジェクトの依存関係管理でSingular Mavenリポジトリを設定します。

Note:Gradle 7 以降、Android はプロジェクトやモジュールレベルのbuild.gradle 宣言よりもsettings.gradlesettings.gradle.ktsで集中リポジトリの宣言を使用することを推奨します。

Gradle 7+ の設定

Singular SDK リポジトリを設定ファイルに追加します:

settings.gradle.kts (Kotlin DSL - Recommended)settings.gradle (Groovy DSL)
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://maven.singular.net/")
        }
    }
}

古いGradleバージョン

古いGradleバージョンの場合は、プロジェクトレベルのビルドファイルにリポジトリを追加します:

build.gradle.kts (Kotlin DSL - Recommended)build.gradle (Groovy DSL)
repositories {
    mavenCentral()
    maven {
        url = uri("https://maven.singular.net/")
    }
}

Singular ライブラリ依存の追加

Singularライブラリをアプリモジュールの依存関係に追加します。

app/build.gradle.kts (Kotlin DSL - Recommended)app/build.gradle (Groovy DSL)
dependencies {
    implementation("com.singular.sdk:singular_sdk:12.10.0")
}

トラブルシューティング重複クラスの問題

複数の依存関係に同じライブラリが含まれている場合、クラスの重複エラーが発生することがあります。 これは、古いバージョンの Google Play Services ライブラリでよく発生します。

よくあるエラーの例

Duplicate class com.google.android.gms.common.api.ResultCallback found in modules play-services-6.5.87.aar and play-services-basement-17.6.0.aar

解決方法競合する依存関係を除外する

重複クラスの問題を解決するには、Singular SDK または他の依存関係から競合する依存関係を除外します。

app/build.gradle.kts (Kotlin DSL - Recommended)app/build.gradle (Groovy DSL)
dependencies {
    // Exclude specific Google Play Services modules from Singular SDK
    implementation("com.singular.sdk:singular_sdk:12.10.0") {
        exclude(group = "com.google.android.gms", module = "play-services")
    }

    // Add the specific Google Play Services libraries your app needs
    implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
    implementation("com.google.android.gms:play-services-appset:16.0.2")
}

グローバル除外ルール

重複クラスの競合がプロジェクト全体の複数の依存関係に影響する場合は、グローバル除外ルールを適用できます。

app/build.gradle.kts (Kotlin DSL - Recommended)app/build.gradle (Groovy DSL)
configurations.all {
    exclude(group = "com.google.android.gms", module = "play-services")
}

依存関係の解決の検証

除外ルールを適用した後、依存関係ツリーを検証して競合が解決されていることを確認します。

Terminal Command
./gradlew app:dependencies --configuration debugRuntimeClasspath

このコマンドは、アプリの完全な依存関係ツリーを表示し、どのライブラリが含まれ、どれが除外されているかを示します。


サムスンギャラクシーストアのサポート

アプリが Samsung Galaxy Store を通じて配布される場合は、Samsung Galaxy Store インストール リファラー依存関係を追加します。

app/build.gradle.kts (Kotlin DSL - Recommended)app/build.gradle (Groovy DSL)
dependencies {
    implementation("store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0")
}

推移的依存関係

Singular SDKの推移的依存関係を無効にしている場合は、これらの必要なライブラリをアプリモジュールの依存関係に手動で追加してください。

app/build.gradle.kts (Kotlin DSL - Recommended)app/build.gradle (Groovy DSL)
dependencies {
    implementation("com.android.installreferrer:installreferrer:2.2")
    implementation("com.google.android.gms:play-services-appset:16.0.0")
}

Google Play サービス依存関係

アプリがGoogle Play Services API 17.0.0以降を実装していない場合は、以下の依存関係を追加してください。

app/build.gradle.kts (Kotlin DSL - Recommended)app/build.gradle (Groovy DSL)
dependencies {
    implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
}
方法 2: 手動インストール
#

別のインストール方法

手動ダウンロード

SDK AARファイルをダウンロードし、手動でプロジェクトに統合します。

  1. SDKをダウンロードします:このページの上部にあるリンクからSDKをダウンロードしてください。
  2. 解凍してlibsに追加する:SDKパッケージを解凍し、Singular.aar をAndroidプロジェクトのlibsディレクトリに追加します。
  3. libsディレクトリを作成します:libsディレクトリが存在しない場合は、プロジェクトフォルダ(通常は<project>/app/libs )にlibs というディレクトリを作成します。
方法3:Mavenインストール
#

Mavenのインストール

Singular Maven リポジトリをプロジェクトのpom.xmlファイルに追加します。

pom.xml
<project ...>
    <repositories>
        <repository>
            <id>singular.net</id>
            <url>http://maven.singular.net/</url>
        </repository>
    </repositories>
</project>

依存関係を追加します:

pom.xml
<dependency>
    <groupId>com.singular.sdk</groupId>
    <artifactId>singular_sdk</artifactId>
    <version>12.10.0</version>
</dependency>
方法4:Eclipseのインストール
#

Eclipseのインストール

以下の手順でEclipseを使用してSDKを統合します。

EclipseのAARプラグインを使うことができます:gradle-eclipse-aar-plugin

プラグインを使いたくない場合は、以下の手順に従ってください:

  1. AARを解凍します:解凍singular_sdk-12.10.0.aar
  2. JARファイルの名前を変更します: classes.jarsingular_sdk-12.10.0.jar にリネームします。
  3. Add install referrer: com.android.installreferrer:installreferrer:2.2ライブラリをプロジェクトに追加します。
  4. パーミッションをコピーします:AAR に含まれるAndroidManifest.xmlBIND_GET_INSTALL_REFERRER_SERVICE パーミッションをAndroidManifest.xmlにコピーします。
  5. ライセンス許可をコピーします:AAR に含まれるAndroidManifest.xml からCHECK_LICENSE パーミッションをAndroidManifest.xmlにコピーします。

ProGuardの設定

ProGuardルール

コードの難読化の問題を防ぐために、proguard.config ファイルに以下のルールを追加します。

proguard.config
-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
# Uncomment this line in case your are calling the 'revenue' function using the Google billing library
#-keep public class com.android.billingclient.** { *; }

必要なパーミッション

AndroidManifest 構成

これらのパーミッションをAndroidManifest.xml ファイルの<manifest> タグの下に追加します。

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

Kids SDK を統合する場合は、com.google.android.gms.permission.AD_ID パーミッションを除外してください。


Samsung Galaxy Storeクエリ

Samsung Galaxy Storeのインストール・リファラーをサポートするには、AndroidManifest.xml に以下を追加します。

AndroidManifest.xml
<queries>
    <package android:name="com.sec.android.app.samsungapps" />
</queries>

SDKインテグレーション

プライバシーの遵守:Singular SDKを実装する際は、GDPR、CCPA、COPPAなど、お客様がビジネスを展開する地域で制定されているプライバシーに関する法律に準拠してください。SDKのオプトインとオプトアウトの実践をご覧ください。

Singular SDKのインポート

インポートステートメントの追加

MainActivityファイルにSingularライブラリをインポートします。

KotlinJava
import com.singular.sdk.*

SDKの初期化

初期化関数を作成

セッショントラッキングとアトリビューションを有効にするには、アプリを起動するたびにSingular SDKを初期化します。プライベートメソッドを作成し、MainActivityのonCreate() メソッドから呼び出します。

以下の手順に従ってください:

  1. 関数を追加します:初期化メソッドをMainActivityクラス(または任意のエントリーポイントアクティビティ)内に配置します。
  2. クレデンシャルを挿入します: SDK KEYSDK SECRET をダッシュボードの Singular SDK キーとシークレットに置き換えます。
  3. SingularConfigを更新します:SDKを初期化する前に、SingularConfigオブジェクトを作成し、SDKのプリファレンスを設定します。
  4. 関数を呼び出します:UI セットアップ後、イベントをログする前にonCreate()initSingularSDK() を呼び出します。

基本的な実装

基本的な設定で初期化メソッドを作成します。

KotlinJava
private fun initSingularSDK() {
    // Configure Singular with SDK key and secret
    val config = SingularConfig("SDK KEY", "SDK SECRET")

    try {
        Singular.init(applicationContext, config)
        Log.d("Singular", "SDK initialized successfully")
    } catch (e: Exception) {
        Log.e("Singular", "SDK initialization failed: ${e.message}")
    }
}

MainActivityのonCreateから呼び出します。

MainActivityのonCreate() メソッドで初期化メソッドを呼び出します。

KotlinJava
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // Initialize Singular SDK
    initSingularSDK()

    // Proceed with your app setup (e.g., UI initialization)
}

実装ガイドライン

SDK初期化を実装する際は、以下の主要なガイドラインに従ってください。

  • 配置:適切なセッション追跡を保証するために、初期化メソッドを Application クラスではなく MainActivity に追加します。
  • エラー処理:try-catchブロックは、アプリをクラッシュさせることなく、初期化エラー(無効な認証情報など)を記録します。
  • ディープリンク:ディープリンク(アプリを起動するURL)を処理するには、ディープリンクのサポートを参照してください。
  • META Install Referrer: config.withFacebookAppId("FacebookAppID") を追加してMeta Install Referrer の帰属を有効にします。

2025年6月18日より、MetaのAdvanced Mobile Measurement Reporting(AMM)では、Meta Install Referrerを実装する必要がなくなりました。AMM レポートが有効になっている場合は、Meta Install Referrer を実装することは推奨されません。

プロヒント:アプリが複数のエントリーポイント(ディープリンクなど)をサポートしている場合は、一貫した動作を保証するために、関連する各アクティビティのonCreate()initSingularSDK() が呼び出されるようにしてください。


設定オプション

SingularConfig メソッド

SingularConfigオブジェクトでは、連鎖可能な設定メソッドを使用してSDKの動作をカスタマイズできます。利用可能なオプションは以下の表を参照してください。

メソッド 説明
.withFacebookAppId(String facebookAppID) FacebookアプリIDを設定します。Meta Install Referrerアトリビューションに必要です。アプリのFacebookアプリIDはどこで確認できますか?

2025年6月18日より、MetaのAdvanced Mobile Measurement Reporting(AMM)ではMeta Install Referrerを実装する必要がなくなりました。 AMMレポートが有効になっている場合、Meta Install Referrerを実装することは推奨されません。

.withCustomUserId(String customId) ユーザーIDをSingularに送信する
.withSingularLink(getIntent(), SingularLinkHandler handler) Singular Linksでディープリンクを有効にする
.withDDLTimeoutInSec(long timeout) アプリを最初に開いたときに、Singularがディファードディープリンクを検索する時間の長さを設定します。
.withOpenURI(URI openURI) インテントからURIをフェッチする(Singularから発信されていないリンクでアプリが開かれた場合にディープリンクを処理するため
.withGlobalProperty(String key, String value, boolean overrideExisting) グローバルプロパティを指定された値に設定します。キーと値は、アプリから送信されるイベント/セッションと一緒にSingularに送信されます。
.withSessionTimeoutInSec(long timeout) セッションタイムアウトを設定する
.withFCMDeviceToken(String token) 最初のセッションで送信されるFCMトークンを設定する
.withLoggingEnabled() ロギングの有効化
.withLogLevel(int level) ロギングレベルを設定する(デフォルトはLog.ERROR)