ビデオガイドあり
統合プロセスの詳細なウォークスルーについては、このビデオをご覧ください。 最良の結果を得るために、ビデオと以下の書面ガイドの両方を使用してください。
前提条件
Singular SDKの統合のステップを完了してください:この統合を進める前に、計画と前提条件のステップを完了してください。
重要:これらの前提条件はSingular SDKを統合する際に必要です。
インストール
インストール方法
注意:Android Studioでは、新規プロジェクトのデフォルトがKotlin DSL(build.gradle.kts)になりました。 以下のコード例では、Kotlin DSL(推奨)とGroovy DSLの両方の形式を使用しています。
方法 1: Gradle (推奨)
SDKリポジトリの追加
プロジェクトの依存関係管理でSingular Mavenリポジトリを設定します。
Note:Gradle 7 以降、Android はプロジェクトやモジュールレベルのbuild.gradle 宣言よりもsettings.gradle やsettings.gradle.ktsで集中リポジトリの宣言を使用することを推奨します。
Gradle 7+ の設定
Singular SDK リポジトリを設定ファイルに追加します:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url = uri("https://maven.singular.net/")
}
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url 'https://maven.singular.net/'
}
}
}
古いGradleバージョン
古いGradleバージョンの場合は、プロジェクトレベルのビルドファイルにリポジトリを追加します:
repositories {
mavenCentral()
maven {
url = uri("https://maven.singular.net/")
}
}
repositories {
mavenCentral()
maven {
url 'https://maven.singular.net/'
}
}
Singular ライブラリ依存の追加
Singularライブラリをアプリモジュールの依存関係に追加します。
dependencies {
implementation("com.singular.sdk:singular_sdk:12.10.0")
}
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 または他の依存関係から競合する依存関係を除外します。
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")
}
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'
}
グローバル除外ルール
重複クラスの競合がプロジェクト全体の複数の依存関係に影響する場合は、グローバル除外ルールを適用できます。
configurations.all {
exclude(group = "com.google.android.gms", module = "play-services")
}
configurations.all {
exclude group: 'com.google.android.gms', module: 'play-services'
}
依存関係の解決の検証
除外ルールを適用した後、依存関係ツリーを検証して競合が解決されていることを確認します。
./gradlew app:dependencies --configuration debugRuntimeClasspath
このコマンドは、アプリの完全な依存関係ツリーを表示し、どのライブラリが含まれ、どれが除外されているかを示します。
サムスンギャラクシーストアのサポート
アプリが Samsung Galaxy Store を通じて配布される場合は、Samsung Galaxy Store インストール リファラー依存関係を追加します。
dependencies {
implementation("store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0")
}
dependencies {
implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0'
}
推移的依存関係
Singular SDKの推移的依存関係を無効にしている場合は、これらの必要なライブラリをアプリモジュールの依存関係に手動で追加してください。
dependencies {
implementation("com.android.installreferrer:installreferrer:2.2")
implementation("com.google.android.gms:play-services-appset:16.0.0")
}
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以降を実装していない場合は、以下の依存関係を追加してください。
dependencies {
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
}
dependencies {
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0+'
}
別のインストール方法
手動ダウンロード
SDK AARファイルをダウンロードし、手動でプロジェクトに統合します。
- SDKをダウンロードします:このページの上部にあるリンクからSDKをダウンロードしてください。
-
解凍してlibsに追加する:SDKパッケージを解凍し、
Singular.aarをAndroidプロジェクトのlibsディレクトリに追加します。 -
libsディレクトリを作成します:libsディレクトリが存在しない場合は、プロジェクトフォルダ(通常は
<project>/app/libs)にlibsというディレクトリを作成します。
Mavenのインストール
Singular Maven リポジトリをプロジェクトのpom.xmlファイルに追加します。
<project ...>
<repositories>
<repository>
<id>singular.net</id>
<url>http://maven.singular.net/</url>
</repository>
</repositories>
</project>
依存関係を追加します:
<dependency>
<groupId>com.singular.sdk</groupId>
<artifactId>singular_sdk</artifactId>
<version>12.10.0</version>
</dependency>
Eclipseのインストール
以下の手順でEclipseを使用してSDKを統合します。
EclipseのAARプラグインを使うことができます:gradle-eclipse-aar-plugin
プラグインを使いたくない場合は、以下の手順に従ってください:
-
AARを解凍します:解凍
singular_sdk-12.10.0.aar -
JARファイルの名前を変更します:
classes.jarをsingular_sdk-12.10.0.jarにリネームします。 -
Add install referrer:
com.android.installreferrer:installreferrer:2.2ライブラリをプロジェクトに追加します。 -
パーミッションをコピーします:AAR に含まれる
AndroidManifest.xmlのBIND_GET_INSTALL_REFERRER_SERVICEパーミッションをAndroidManifest.xmlにコピーします。 -
ライセンス許可をコピーします:AAR に含まれる
AndroidManifest.xmlからCHECK_LICENSEパーミッションをAndroidManifest.xmlにコピーします。
ProGuardの設定
ProGuardルール
コードの難読化の問題を防ぐために、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> タグの下に追加します。
<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 に以下を追加します。
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
SDKインテグレーション
プライバシーの遵守:Singular SDKを実装する際は、GDPR、CCPA、COPPAなど、お客様がビジネスを展開する地域で制定されているプライバシーに関する法律に準拠してください。SDKのオプトインとオプトアウトの実践をご覧ください。
Singular SDKのインポート
インポートステートメントの追加
MainActivityファイルにSingularライブラリをインポートします。
import com.singular.sdk.*
import com.singular.sdk.*;
SDKの初期化
初期化関数を作成
セッショントラッキングとアトリビューションを有効にするには、アプリを起動するたびにSingular SDKを初期化します。プライベートメソッドを作成し、MainActivityのonCreate() メソッドから呼び出します。
以下の手順に従ってください:
- 関数を追加します:初期化メソッドをMainActivityクラス(または任意のエントリーポイントアクティビティ)内に配置します。
-
クレデンシャルを挿入します:
SDK KEYとSDK SECRETをダッシュボードの Singular SDK キーとシークレットに置き換えます。 - SingularConfigを更新します:SDKを初期化する前に、SingularConfigオブジェクトを作成し、SDKのプリファレンスを設定します。
-
関数を呼び出します:UI セットアップ後、イベントをログする前に
onCreate()でinitSingularSDK()を呼び出します。
基本的な実装
基本的な設定で初期化メソッドを作成します。
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}")
}
}
private void initSingularSDK() {
// Configure Singular with SDK key and secret
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET");
try {
Singular.init(getApplicationContext(), config);
Log.d("Singular", "SDK initialized successfully");
} catch (Exception e) {
Log.e("Singular", "SDK initialization failed: " + e.getMessage());
}
}
MainActivityのonCreateから呼び出します。
MainActivityのonCreate() メソッドで初期化メソッドを呼び出します。
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)
}
@Override
protected void onCreate(Bundle savedInstanceState) {
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) |