動画ガイド利用可能
統合プロセスの詳しいウォークスルーについては、この動画をご覧ください。 最良の結果を得るために、動画と以下のガイドの両方を活用してください。
前提条件
この統合を進める前に、 Singular SDK の統合: 計画と前提条件 の手順を完了してください。
重要: これらの前提条件の手順は、いかなる Singular SDK の統合にも必要です。
インストール
インストール方法
注: Android Studio は新規プロジェクトに対して、デフォルトで Kotlin DSL (build.gradle.kts) を使用するようになりました。 以下のすべてのコード例では、 Kotlin DSL (推奨) と Groovy DSL の両方の形式を示しています。
方法 1: Gradle (推奨)
SDK リポジトリを追加
プロジェクトの依存関係管理で Singular Maven リポジトリを設定してください。
注:
Gradle 7 以降、Android はプロジェクトまたはモジュールレベルの
build.gradle
での宣言よりも、
settings.gradle
または
settings.gradle.kts
での集中型リポジトリ宣言を使用することを推奨しています。
Gradle 7+ の設定
settings ファイルに 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.14.0")
}
dependencies {
implementation 'com.singular.sdk:singular_sdk:12.14.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.14.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.14.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 経由で配信される場合は、 Samsung Galaxy Store install referrer の依存関係を追加してください。
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.2")
}
dependencies {
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.2'
}
Google Play Services の依存関係
アプリが 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)
Maven インストール
プロジェクトの
pom.xml
ファイルに Singular Maven リポジトリを追加してください。
<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.14.0</version>
</dependency>
Eclipse インストール
次の手順に従って Eclipse を使用して SDK を統合してください。
Eclipse AAR プラグインを使用できます: gradle-eclipse-aar-plugin
プラグインを使用しない場合は、次の手順に従ってください:
-
AAR の解凍:
singular_sdk-12.14.0.aarを解凍してください -
JAR ファイル名の変更:
classes.jarの名前をsingular_sdk-12.14.0.jarに変更してください (これがメインの SDK jar です) -
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 の install referrer をサポートするには、
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 の初期化
初期化関数の作成
セッショントラッキングとアトリビューションを有効にするため、private メソッドを作成し、
MainActivity の
onCreate()
メソッドから呼び出して、アプリの起動ごとに Singular SDK を初期化してください。
次の手順に従ってください:
- 関数の追加: 初期化メソッドを MainActivity クラス (またはエントリーポイントとなる Activity) 内に配置してください
-
認証情報の挿入:
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 を実装しないことを 推奨します。
プロのヒント:
アプリが複数のエントリーポイント (例: ディープリンク) をサポートする場合、
一貫した動作を保証するため、関連する各 Activity の
onCreate()
内で
initSingularSDK()
が呼び出されるようにしてください。
構成オプション
SingularConfig メソッド
SingularConfig オブジェクトを使用すると、チェーン可能な構成メソッドで SDK の動作をカスタマイズできます。利用可能なすべてのオプションは、以下の表を 参照してください。
| メソッド | 説明 |
|---|---|
.withFacebookAppId(String facebookAppID)
|
Facebook App ID を設定します。
Meta Install Referrer によるアトリビューション
に必要です。
アプリの Facebook App ID はどこで見つかりますか?
を参照してください。
2025年6月18日時点 で、Meta の Advanced Mobile Measurement Reporting (AMM) によって Meta Install Referrer を実装する必要性がなくなりました。 AMM レポートが有効になっている場合は、Meta Install Referrer を 実装しないことを推奨します。 |
.withCustomUserId(String customId)
|
ユーザー ID を Singular に送信します |
.withSingularLink(Intent intent, SingularLinkHandler handler)
.withSingularLink(Intent intent, SingularLinkHandler handler, long shortlinkTimeoutSec)
|
Singular Links でディープリンクを有効にします。引数 1 つのオーバーロードは
デフォルトで 10 秒の短縮リンク解決タイムアウトを使用します。これを上書きするには、
引数 3 つのオーバーロードを使用してください。この呼び出しはディファード ディープリンクも
処理するため、別途
withDDLHandler
/
withDDLTimeoutInSec
の設定は不要になりました。
|
.withOpenURI(URI openURI)
|
intent から URI を取得します (Singular 由来でないリンクを通じて アプリが開かれた場合に、ディープリンクを処理するため) |
.withGlobalProperty(String key, String value, boolean overrideExisting)
|
グローバルプロパティを指定された値に設定します。キーと値は、 アプリから送信されるあらゆるイベント / セッションとともに Singular へ送信されます |
.withSessionTimeoutInSec(long timeout)
|
セッションタイムアウトを設定します |
.withFCMDeviceToken(String token)
|
最初のセッションで送信される FCM トークンを設定します |
.withLoggingEnabled()
|
ロギングを有効にします |
.withLogLevel(int level)
|
ロギングレベルを設定します (デフォルトは Log.ERROR) |