基本的な統合

新機能ビデオガイド

統合プロセスの詳細については、このビデオをご覧ください。ビデオと以下のガイドの両方を使用することをお勧めします。

始める前にSDKの前提条件

Singular SDKはFlutterのプラグインとして利用できます。以下の説明では、SingularをFlutterアプリに統合する方法を紹介します。

  • この記事はFlutterアプリが動作していることを前提としています。
  • SDKを初期化するには、Singular SDK KeyとSDK Secretが必要です。これらはSingularプラットフォームの"Developer Tools > SDK Integration > SDK Keys"から入手できます。

SDKの統合

FlutterアプリにSingularプラグインを追加するには、pubspec.yamlファイルに以下の行を追加します:

dependencies:
  singular_flutter_sdk: ^1.6.1

それからターミナルでプロジェクトに移動し、以下を実行します:

flutter packages get

Android用の追加ステップ

依存関係の追加

Androidアプリの場合、以下のようにapp/build.gradleの依存関係リストにSingularライブラリを追加する必要があります:

dependencies {  
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation 'com.android.support:appcompat-v7:28.0.0'
  //...
}

Singular SDKにはGoogle Play Services APIs 17.0.0+の一部であるGoogle Mobile Ads APIが必要です。すでにGoogle Play Servicesをアプリに統合していれば、この要件は満たされています。そうでない場合は、アプリのbuild.gradle に以下の依存関係を含めることで、Google Mobile Ads を個別に統合できます:

implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'

Singular SDKのtransitive dependenciesを無効にしている場合は、アプリのbuild.gradleに以下を追加してください。

implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.2'

さらに、アプリをSamsung Galaxy Storeを通じて配布する場合は、Samsung Galaxy Storeのインストール・リファラーをサポートするために以下を追加してください:

implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0'

注意: ビルド時にDuplicateClasses エラーが表示される場合は、すでにGoogle play-servicesがインストールされている可能性があるので、依存関係をコメントアウトしてください。

パーミッションの追加

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" />

さらに、アプリがSamsung Galaxy Storeを通じて配布され、Android 11以上をターゲットにしている場合は、Samsung Galaxy Storeのインストール・リファラーをサポートするために以下を追加します:

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

アプリのビルドがAndroid 12/APIレベル31以上をターゲットにしている場合は、Google Advertising IDにアクセスするためのパーミッションを追加します:

<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

注意: Kids SDKを統合する場合は、このパーミッションを追加しないでください。

ご注意ください:アプリにandroid.permission.GET_TASKSパーミッションがある場合、ユーザーが実際にアプリを開く前にアプリが初期化される可能性があります。これはSingular SDKを初期化し、インストール時間の不一致を引き起こす可能性があります。この問題を防ぐには、パーミッションが不要であれば削除するか、Singular SDKの初期化コールをコード内の別の場所に移動し、ユーザーが初めてアプリを開いた後にのみ呼び出されるようにします。

iOSのための追加ステップ

Singularプラグインを使用するには、AdServicesフレームワークを追加する必要があります。


Singular SDKの初期化

アプリを開くたびにSingular SDKの初期化コードを呼び出す必要があります。これはSingularのすべてのアトリビューション機能の前提条件であり、また新しいユーザーセッションをSingularに送信します(セッションはユーザーのリテンションを計算するために使用されます)。

初期化コードは、アプリを開いたときに最初にロードされるメインウィジェット(main.dartなど)に記述します。このウィジェットはステートフルである必要があり、コードはウィジェットのinitState()メソッドに追加する必要があります。

  1. まず、SingularConfig オブジェクトを作成する必要があります。このオブジェクトには Singular SDK Key と Secret が含まれます。
  2. オプションで、様々なSDK機能を有効にする設定を追加できます。オプションの一覧はこちら。
  3. META インストール リファラー帰属のサポート

    Meta Install Referrer」アトリビューションを有効にするために必要なSDK設定です:

    1. Singular Configuration ObjectにFacebookアプリIDを入力してください。
      // To enable META Install Referrer
      
      
                config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE";
    アプリのFacebookアプリIDはどこで確認できますか?

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');
      // 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);
  }

ATT同意の処理(初期化遅延の設定)

ATT(App Tracking Transparency)プロンプトの表示

iOS 14.5から、アプリは、デバイスのIDFAを含む追跡目的に役立ついくつかのユーザーデータにアクセスして共有する前に、(App Tracking Transparencyフレームワークを使用して)ユーザーの同意を求める必要があります。

Singularは、デバイスを識別し、インストールアトリビューションを実行するために、IDFAを取得することで大きなメリットを得ています(ただし、IDFAを取得せずにアトリビューションを実行する方法もあります)。IDFAを取得するために、ユーザーの同意を求めることを強く推奨します。

初期化を遅らせてATTの応答を待つ

デフォルトでは、Singular SDKは初期化時にユーザーセッションを送信します。新しいデバイスからセッションが送信されると、Singularのアトリビューションプロセスが即座にトリガーされます。したがって、Singular SDKが最初のセッションを送信する前に、同意を求め、IDFAを取得することが 不可欠です。

ユーザーセッションの開始を遅らせるには、Singular SDKを初期化し、ConfigオブジェクトにwatefForTrackingAuthorizationWithTimeoutIntervalオプションを指定します。このオプションは上記のコードサンプルにすでに含まれています。

Flutterを使う場合は、App Tracking Transparencyを実装するためにサードパーティのパッケージに頼る必要があります。例:Flutterのapp_tracking_transparencyプラグイン

ヒント:初期化遅延を設定すると、アプリの流れは次のようになります:

  1. アプリが開くと、Singular SDKはセッションとユーザーイベントの記録を開始しますが、Singularサーバーにはまだ送信しません。
  2. App Tracking Transparencyの同意が許可/拒否されるか、設定された時間が経過すると、SDKはセッションとキューに入ったイベントをSingularサーバーに送信します(IDFAの有無は問いません)。
  3. その後Singularは、IDFAが利用可能であればそれを利用してアトリビューションプロセスを開始します。
すべての可能なATTシナリオについて学ぶ

次の表は、この統合を使用したシナリオをまとめたものです:

シナリオ IDFAの利用可能性
ユーザーが同意ダイアログを表示し、設定された時間が経過する前に同意する。 IDFAが利用可能
ユーザーが同意ダイアログを表示し、設定時間が経過する前に同意を拒否する。 IDFAが利用できない
設定時間が経過し、同意ダイアログが表示され、同意する。 IDFA は、同意の後に報告されるユーザーイベントでのみ利用可能である。
設定時間が経過し、同意ダイアログが表示され、同意が拒否される。 IDFA は利用できない
ユーザが同意ダイアログを表示し、アクションを起こさずにアプリを終了し、設定時間が経過した後にアプリを開いて同意を与えた。 アプリが再び開かれると、キューに入れられたイベントがSingularサーバーに送信されます。IDFAはこれらのイベントでは使用できません。同意が付与された後に追跡されるイベントには、IDFAが関連付けられます。
ユーザーは同意ダイアログを表示され、アクションを起こさずにアプリを終了し、後でアプリを開いて同意を拒否します。 キューに入れられたイベントは、アプリが再び開かれたときにSingularサーバーに送信されます。IDFAは、これらのイベントやその後に追跡されるイベントには使用できません。

SKAdNetworkサポートの追加

アプリのSKAdNetworkトラッキングを有効にするには、Singularを初期化する前にskAdNetworkEnabled コンフィギュレーションオプションを有効にしてください。

マネージドモード(推奨)

マネージドモードでは、Singularプラットフォームで設定できるお好みのコンバージョンモデルに基づいて、Singularが自動的にSKAdNetworkのコンバージョン値を管理します。

詳しくは、Singularのコンバージョンバリュー管理についてと SKAdNetworkモデル設定FAQをご覧ください。SingularでSKAdNetworkを使用するためのステップバイステップガイドは、SKAdNetworkの始め方をご覧ください。

注:上記の初期化コードでは、SKAN Managedモードがすでに有効になっています。これらの設定項目が設定されていることを確認してください。

マネージドモードでSKAdNetworkを有効にするには、以下のコードを使用してください:

SingularConfig config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
config.skAdNetworkEnabled = true;
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
Singular.init(config);

マニュアルモード

SKAdNetworkの変換値を管理するための独自の戦略やツールをすでにお持ちの場合は、SKAdNetworkをマニュアルモードで有効にすることができます。

SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
config.skAdNetworkEnabled = true;
config.manualSkanConversionManagement = true;
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
Singular.init(config);

そして、コンバージョン値を更新するには、以下のコードを使用します:

ingular.skanUpdateConversionValue(conversionValue)

コンバージョン値の変更を追跡するには、以下のコールバック関数を使用します:

config.conversionValueUpdatedCallback = (int conversionValue) {
  print('Received conversionValueUpdatedCallback: ' + conversionValue.toString());
};

現在の変換値を取得するには、以下のコードを使用します:

Singular.skanGetConversionValue().then((conversionValue) {
  print('conversion value: ' + conversionValue.toString());
});