統合プロセスの詳細については、このビデオをご覧ください。ビデオと以下のガイドの両方を使用することをお勧めします。
始める前にSDKの前提条件
Singular SDKの統合の手順に従ってください:計画と前提条件』の手順に従ってください。
これらのステップはSingular SDKを統合するための前提条件です。
SDKのインストール
Singular SDKはFlutterのプラグインとして利用できます。以下の手順では、SingularをFlutterアプリに統合する方法を紹介します。
- この記事はFlutterアプリが動作していることを前提としています。
- SDKを初期化するには、Singular SDK KeyとSDK Secretが必要です。これらはSingularプラットフォームの"Developer Tools > SDK Integration > SDK Keys"から入手できます。
Singular Flutterプラグインをプロジェクトに追加するには:
-
pubspec.yaml ファイルにsingular_flutter_sdk: ^1.6.2 を追加します:
dependencies: flutter: sdk: flutter singular_flutter_sdk: ^1.6.2
-
それからターミナルでプロジェクトに移動し、以下を実行する:
flutter packages get
前提条件の設定
iOSの前提条件
Singular Flutterプラグインを使うには、AdServicesフレームワークを追加する。
-
iOSプロジェクトにAdServicesフレームワークを追加する:
- Flutterプロジェクトのios フォルダに移動する。
- XcodeでRunner.xcworkspace (CocoaPodsを使用している場合は.xcworkspace 、そうでない場合は.xcodeproj )を開きます。
-
AdServices Frameworkを追加します:
- Xcodeで、プロジェクトのターゲット(例えば、"Runner")を選択します。
- General]タブに移動します。
- Frameworks, Libraries, and Embedded Contentセクションまでスクロールします。
- ボタンをクリックします。
- AdServices.framework を検索し、追加する。
- フレームワークのステータスをOptionalに設定する(フレームワークが古いiOSバージョンで利用できない場合の互換性を確保するため)。
Androidの前提条件
必要なAndroid権限と依存関係の追加
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" />
Samsung Galaxy Storeのインストール・リファラーをサポートするには、以下を追加します:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Singular SDKのtransitive dependenciesを無効にしている場合は、 android/app/build.gradleに以下を追加してください:
dependencies {
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.0'
}
Proguardを使用する場合の設定要件
React Native AndroidでSingular SDK用のProGuardを設定する
Singular Android SDKをFlutter Androidアプリに統合する場合、リリースビルドでSDKが正しく機能するように、特定のProGuardルールを追加する必要があります。ProGuard(または最新の代替であるR8)はコードの最適化と難読化に使用されます。適切なProGuardルールがないと、Singular SDKまたはその依存関係が削除または難読化され、実行時に問題が発生する可能性があります。
以下の手順に従って、Singular SDK用にProGuardを設定してください:
- ProGuardルールファイルを見つける:Flutterプロジェクトで、android/app/proguard-rules.pro ファイルに移動します。このファイルには、アプリ用のカスタムProGuardルールが含まれています。
- Singular SDK ProGuard Rulesを追加する:Singular SDKとその依存関係を保持するために、以下の行をandroid/app/proguard-rules.pro :
# Preserve Singular SDK classes
-keep class com.singular.sdk.** { *; }
# Preserve Android Install Referrer library
-keep public class com.android.installreferrer.** { *; }
# Uncomment the following line if you are using the Singular 'revenue' function with Google Play Billing Library
#-keep public class com.android.billingclient.** { *; }
SDKを統合する
注:Singular SDKを実装する際には、GDPR、CCPA、COPPAを含むがこれに限定されない、ビジネスを行う地域で制定された様々なプライバシー法を遵守することを忘れないでください。詳しくはSDKのオプトインとオプトアウトをご覧ください。
SDK初期化コードは、アプリを開くたびに呼び出す必要があります。これはSingularのすべてのアトリビューション機能の前提条件であり、またSingularに新しいユーザーセッションを送信します。セッションはユーザーのリテンションを計算するために使用されます。
Singularライブラリのインポート
main.dart ファイルに以下のコードを追加し、Singular クラスをインポートします。
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
Singular SDKの初期化
Singular SDKの初期化コードは、アプリを開くたびに呼び出す必要があります。これはSingularのすべてのアトリビューション機能の前提条件であり、また新しいユーザーセッションをSingularに送信します(セッションはユーザーのリテンションを計算するために使用されます)。
初期化コードは、メインアプリのウィジェット(つまりmain.dart )に記述します。このウィジェットはステートフルである必要があり、コードはウィジェットのinitState() メソッドに追加する必要があります。
- SingularConfig オブジェクトを作成します。このオブジェクトにはSDKキーとSDKシークレットが含まれます(キーとシークレットはSingularアカウントにログインし、"Developer Tools > SDK Integration > SDK Keys"に移動して取得します)。
-
オプションで、さまざまなSDK機能を設定または有効にするための複数の設定メソッドを追加します。
- 次に、start メソッドを使用して SDK を初期化します。 SingularConfigオブジェクトを渡します。
- main.dart で_MyHomePageState クラスを更新し、初期化コードを含めます。
main.dart を修正した例:
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
//...
class MyHomePage extends StatefulWidget {
//...
}
class _MyHomePageState extends State<MyHomePage> {
//...
@override
void initState() {
super.initState();
//...
SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
// Enable Logging for testing
config.logLevel = 3;
config.enableLogging = true;
// Set hashed User ID if available
config.customUserId = "b642b4217b34b1e8d3bd915fc65c4452";
// For iOS (Remove this if you are not displaying an ATT prompt)!
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
// To enable SkAdNetwork Support
config.skAdNetworkEnabled = true;
// To enable META Install Referrer
config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE";
// (optional) Using Singular Global Properties feature to capture
// third party identifiers. The respective SDK(s) must be initialized
// before the Singular SDK. Example of passing the CleverTapID.
// var cleverTapId = CleverTapPlugin.getCleverTapID();
// config.withGlobalProperty("CLEVERTAPID", cleverTapId, true);
Singular.start(config);
}