統合プロセスの詳細については、こちらの動画をご覧ください。 動画と以下の文書によるガイドを 併せてご利用いただくことをお勧めします。
前提条件
Singular Flutter SDK をインストールする前に、以下の前提条件をすべて満たし、スムーズな統合プロセスを確保してください。
必須の前提条件:
- 計画手順の完了:「Singular SDKの統合:計画と前提条件」のガイドに従ってください。これらの手順は、Singular SDKを統合する際に必須です。
- Flutterのバージョン:Flutter SDKがインストールされた、正常に動作するFlutterアプリケーションがあることを確認してください。
- SDK 認証情報:Singular プラットフォームの [Developer Tools] > [SDK Integration] > [SDK Keys] から SDK キーとシークレットを取得してください。
インストール
SDKパッケージのインストール
pubspec.yamlの依存関係マネージャーを使用して、Singular Flutter SDKをプロジェクトに追加します。 このSDKは、iOSおよびAndroid向けのネイティブSingular SDKへのDartバインディングを提供します。 iOSおよびAndroid向けのネイティブSingular SDKへのDartバインディングを提供します。
SDK 依存関係の追加
-
pubspec.yamlの更新:Singular Flutter SDKの
依存関係をプロジェクトの
pubspec.yamlファイルに追加します:dependencies: flutter: sdk: flutter singular_flutter_sdk: ^1.8.0 -
依存関係をインストールする:ターミナルでプロジェクトディレクトリに移動し、
以下を実行します:
flutter packages get
プラットフォーム設定
iOSの設定
iOSアトリビューション追跡のためのAdServicesフレームワークのサポートを有効にするため、 iOS固有の設定を完了してください。
AdServicesフレームワークの追加
Apple Search AdsのアトリビューションおよびiOS 14.3以降のSKAdNetwork統合には、 AdServicesフレームワークが必要です。
-
iOSプロジェクトに移動する:Flutterプロジェクトの
iOSディレクトリを開き、Xcodeワークスペースを探します。
-
Flutterプロジェクトの
iosフォルダに移動します。 -
Xcodeで
Runner.xcworkspaceを開きます(CocoaPodsを使用している場合は.xcworkspaceを、そうでない場合は.xcodeprojを使用してください)。
-
Flutterプロジェクトの
-
AdServicesフレームワークを追加します:Xcodeプロジェクトの設定で
フレームワークを設定します。
- Xcodeで、プロジェクトのターゲット(例:「Runner」)を選択します。
- 「General」タブに移動します。
- 「フレームワーク、ライブラリ、および埋め込みコンテンツ」 セクションまでスクロールします。
- 「+」ボタンをクリックします。
-
「
AdServices.framework」を検索して追加します。 - フレームワークのステータスを「オプション」に設定します(これにより、 古い iOS バージョンとの互換性が確保されます)。
なぜ「オプション」なのか?AdServicesをオプションに設定することで、 このフレームワークが含まれていないiOSバージョン(iOS 14.2以前)との 互換性を維持できます。
Androidの設定
SDK が正常に機能するように、必要な権限と依存関係を追加するよう Android ビルドファイルを設定してください。
必要な権限の追加
AndroidManifest.xml ファイルの
<manifest> タグの下にこれらの権限を追加し、
SDKのコア機能を有効にしてください。
<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 権限を除外してください。
この権限は、標準アプリでのGAID収集には必要ですが、
13歳未満の子供を対象とするアプリでは省略する必要があります。
Samsung Galaxy Storeのサポート
Samsung Galaxy Storeからのインストール参照元追跡を有効にするには、
AndroidManifest.xml に以下を追加してください:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
推移的依存関係
Gradle設定でSingular SDKの推移的依存関係を無効にしている場合は、 以下の必須依存関係を手動で追加してください:
dependencies {
// Required for install referrer tracking
implementation 'com.android.installreferrer:installreferrer:2.2'
// Required for App Set ID
implementation 'com.google.android.gms:play-services-appset:16.0.0'
}
ProGuardの設定
リリース用APKをビルドする際、ProGuard(またはR8)によってSDKの クラスが削除または難読化される可能性があります。Singularの機能を維持するために、以下のkeepルールを追加してください。
重要:Flutter Androidのリリースビルドでは、ProGuardはデフォルトで有効になっています。 適切なkeepルールを設定しないと、本番環境でSDKが正常に動作しない可能性があります。
-
ProGuard ファイルの場所:Flutter プロジェクト内の
android/app/proguard-rules.proに移動します。 -
keepルールの追加:SDKクラスを保持するために、
以下のルールを末尾に追加してください:
# Preserve Singular SDK classes -keep class com.singular.sdk.** { *; } # Preserve Android Install Referrer library -keep public class com.android.installreferrer.** { *; } # Uncomment if using Singular revenue tracking with Google Play Billing Library #-keep public class com.android.billingclient.** { *; }
SDKの統合
プライバシーコンプライアンス:Singular SDKを実装する際は、 GDPR、CCPA、COPPAなど、事業展開地域のプライバシー関連法規を遵守してください。 詳細については、「SDKのオプトインおよびオプトアウトの実践」を参照してください。
アプリが起動するたびに Singular SDK を初期化してください。SDK の初期化は Singular のすべてのアトリビューション機能に不可欠であり、ユーザーリテンション指標を 算出するための新しいセッションを作成します。
SDKクラスのインポート
メインのアプリケーションファイル(通常は `main.dart`)の先頭に、Singular SDKのクラスをインポートしてください。
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
SDKの初期化
SDKの認証情報を使用してSingularConfig オブジェクトを作成し、
オプション機能を設定した後、
start() メソッドを使用してSDKを初期化します。
基本的な初期化
- 認証情報の取得:Singularアカウントにログインし、 「Developer Tools」>「SDK Integration」>「SDK Keys」 に移動して、SDKキーとシークレットを確認します。
-
設定の作成:認証情報を使用して
SingularConfigオブジェクトをインスタンス化します。 - 設定の追加:必要に応じて、プロパティセッターを使用して SDKの動作を設定します( 「設定リファレンス」を参照)。
-
SDKの初期化:
Singular.start()を呼び出し、 SDKを起動します。
初期化の例
アプリのエントリポイント(通常はメインの StatefulWidget 内の
initState() メソッド内)で SDK を初期化します。
import 'package:flutter/material.dart';
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
// Create configuration with credentials
SingularConfig config = SingularConfig(
'YOUR_SDK_KEY',
'YOUR_SDK_SECRET'
);
// Enable debug logging
config.enableLogging = true;
config.logLevel = 4;
// Set session timeout (in seconds)
config.sessionTimeout = 60.0;
// Initialize SDK
Singular.start(config);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
詳細な設定の例
初期化時に複数の SDK 機能を設定するには、
start() を呼び出す前に、SingularConfig オブジェクトに
追加のプロパティを設定します。
import 'package:flutter/material.dart';
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
import 'package:singular_flutter_sdk/singular_link_params.dart';
import 'package:singular_flutter_sdk/singular_global_property.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
initializeSingularSDK();
}
void initializeSingularSDK() {
// Create configuration with credentials
SingularConfig config = SingularConfig(
'YOUR_SDK_KEY',
'YOUR_SDK_SECRET'
);
// User identification
config.customUserId = 'user_123456';
// Privacy settings
config.limitDataSharing = false;
// Deep linking handler
config.singularLinksHandler = (SingularLinkParams params) {
print('Deep link received: ${params.deeplink}');
print('Passthrough params: ${params.passthrough}');
print('Is deferred: ${params.isDeferred}');
// Handle navigation based on deep link
};
// Short link timeout
config.shortLinkResolveTimeOut = 10.0;
// Facebook integration
config.facebookAppId = 'YOUR_FACEBOOK_APP_ID';
// SKAdNetwork settings (iOS)
config.skAdNetworkEnabled = true;
config.manualSkanConversionManagement = false;
config.waitForTrackingAuthorizationWithTimeoutInterval = 30;
// Conversion value callbacks (iOS)
config.conversionValueUpdatedCallback = (int conversionValue) {
print('Conversion value updated: $conversionValue');
};
config.conversionValuesUpdatedCallback = (int cv, int coarse, bool lock) {
print('Fine: $cv, Coarse: $coarse, Locked: $lock');
};
// Global properties
config.globalProperties = [
SingularGlobalProperty('app_version', '2.5.0', true),
SingularGlobalProperty('user_tier', 'premium', false)
];
// Debugging
config.enableLogging = true;
config.logLevel = 4;
// Session timeout
config.sessionTimeout = 60.0;
// Initialize SDK
Singular.start(config);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
設定リファレンス:利用可能な設定オプションの完全な一覧については、 Flutter SDK 設定リファレンスを参照してください。
重要:Singular Reporting API Keyは絶対に使用しないでください。SDK統合 ページから取得したSDK固有の認証情報のみを使用してください。誤った認証情報を使用すると、データがSingularに送信されなくなります。
詳細設定
Google Ads iOS 統合コンバージョン測定に必要な設定
アプリで iOS 14.5 以降のユーザーを対象とした Google Ads キャンペーンを実行している場合、iOS 統合コンバージョン 測定 (ICM) をサポートするために、追加の SDK 設定手順が必要です。これには以下が含まれます:
- Googleのオンデバイス測定(ODM)SDKの統合
- Singular iOS SDK v12.8.1 以降への更新(Unity 版は v5.5.0 以降、Flutter/Cordova 版は v1.8.0 以降、React Native 版は v3.9.0 以降)
-
-ObjCリンカーフラグの追加およびSingularConfigでのenableOdmWithTimeoutIntervalの有効化
注: enableOdmWithTimeoutIntervalを有効にすると、
SDKの初期化が遅延し、
ディープリンクのコールバックが延期される可能性があります。
再作業を避けるため、SDKの初期実装時にこの設定を完了させてください。