Singular

Singular は、マーケティングキャンペーンのデータを収集・表示するモバイル計測パートナー(MMP)プラットフォームです。

Adaptyは、選択したサブスクリプションイベントをSingularに送信します。Singularダッシュボードでは、各キャンペーンが生み出す収益を確認し、広告の効果を評価できます。

連携のセットアップ

Singular を Adapty に接続する

Singular とのインテグレーションを設定するには、Adapty ダッシュボードの Integrations > Singular に移動し、トグルをオンにして各フィールドを入力してください。

singular-creds.webp

以下の認証情報を設定できます:

  • Singular SDK Key: 必須。Singular アプリの本番用 SDK キー。
  • Singular SDK Key (Sandbox): 任意。サンドボックス用 Singular アプリの SDK キー。未設定の場合、サンドボックスイベントは Singular に送信されません。

両方のキーは、Singular ダッシュボードの Developer tools -> SDK Keys -> SDK Key (not SDK Secret) で確認できます:

4bc50d1-singular_sdk_key.webp

イベントとタグの設定

認証情報の下に、AdaptyからSingularに送信できる3つのイベントグループがあります。Adaptyイベントの全一覧については、イベントをご参照ください。

e67de0c-singular_events.webp

Adaptyが提供するデフォルトのイベント名を使用することをお勧めします。ただし、必要に応じてイベント名を変更することも可能です。

Adapty はサブスクリプションイベントを Singular にサーバー間通信で送信するため、すべてのサブスクリプションイベントを Singular ダッシュボードで確認し、獲得キャンペーンと紐付けることができます。

Warning

インテグレーションを設定する前に作成されたプロファイルは、Singular にイベントを送信できません。

アプリをSingularに接続する

Singularは、2026年7月15日以降に作成されたアカウントに対して、Singular Device ID(SDID)をデフォルトで有効にします。これらのアカウントはv2 Event APIを通じてのみイベントを受け付けており、AdaptyはユーザーのプロファイルにSDIDがある場合のみv2にイベントを送信します。このようなアカウントにイベントを配信するには、アプリからAdaptyにSDIDを渡す必要があります。

Singularアカウントが2026年7月15日より前に作成されており、SDIDが有効になっていない場合は、この手順をスキップしてください。Adatyはイベントをv1 Event APIに送信するため、アプリのコード変更は不要です。

  1. Adapty を有効化し、その後 Singular SDK を SDID コールバック付きで起動します。iOS では sdidReceivedHandler、Android では SDIDAccessorHandler、React Native と Flutter では sdidReceivedCallback、Unity では SingularSdidAccessorHandler を使用します。
  2. Singular がコールバックを呼び出すまで待ちます。SDID は Singular SDK の起動後、非同期でアプリに届きます。SDID がデバイスにすでに保存されている場合も含め、Singular はすべての起動でコールバックを呼び出します。
  3. コールバック内で、setIntegrationIdentifier() と singular_sdid キーを使用して SDID を Adapty に渡します。このキーに対して定義済みの定数を持つ Adapty SDK はないため、キーは文字列リテラルとして記述してください。
  4. setIntegrationIdentifier() が完了した後にのみ Adapty.identify() を呼び出してください。Adapty は有効化時に匿名プロファイルを作成し、identify() が解決されると識別済みプロファイルに切り替わります。この切り替え中に設定された SDID は失われる可能性があります。

イベント構造

Adapty は、ユーザーのプロファイルに SDID があるかどうかに基づいて、各イベントに使用する Singular Event API バージョンを選択します。

  • SDID ありの場合: Adapty は https://s2s.singular.net/api/v2/evt に POST リクエストを送信し、フォームURLエンコードされたボディを使用します。sdid パラメーターがデバイス識別子 idfa、idfv、aifa、andi、asid の代わりに使用されます。ブール値は true または false として送信されます。
  • SDID なしの場合: Adapty は https://s2s.singular.net/api/v1/evt にクエリパラメーターを付けた GET リクエストを送信します。

それ以外のパラメーターはどちらのバージョンでも同じです。v1 イベントの構造は次のとおりです。

{
  "n": "subscription_renewed",
  "a": "singular_sdk_key_123",
  "p": "iOS",
  "i": "com.example.app",
  "ip": "192.168.100.1",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "ve": "17.0.1",
  "att_authorization_status": 3,
  "custom_user_id": "user_12345",
  "utime": 1709294400,
  "partner": "adapty",
  "use_ip": false,
  "is_revenue_event": true,
  "amt": 9.99,
  "cur": "USD",
  "purchase_product_id": "yearly.premium.6999",
  "purchase_transaction_id": "GPA.3383...",
  "e": "{\"is_revenue_event\":true,\"amt\":9.99,\"cur\":\"USD\",\"purchase_product_id\":\"yearly.premium.6999\",\"purchase_transaction_id\":\"GPA.3383...\"}"
}

各パラメーターの説明:

パラメータ型説明
nStringイベント名(Adapty イベントからマッピングされたもの)。
aStringSingular SDK キー。
pStringプラットフォーム(“iOS” または “Android”)。
iStringストアアプリ ID(バンドル ID)。
ipStringユーザーの IP アドレス。
sdidStringv2 のみ。Singular デバイス ID。singular_sdid インテグレーション識別子から取得。
idfaStringiOS、v1 のみ。広告主向け ID(大文字)。
idfvStringiOS、v1 のみ。ベンダー向け ID(大文字)。
aifaStringAndroid、v1 のみ。Google 広告 ID(小文字)。
andiStringAndroid、v1 のみ。Android ID(小文字)。
asidStringAndroid、v1 のみ。アプリセット ID(小文字)。
veStringOS バージョン。
att_authorization_statusIntegeriOS のみ。ATT ステータス(例:3 は承認済み)。
custom_user_idStringユーザーのカスタマーユーザー ID。
utimeLongイベントの UNIX タイムスタンプ(秒単位)。
partnerString常に adapty。イベントが Adapty から送信されたことを示す識別子。
use_ipBooleanAdapty がユーザーの IP アドレスを持っていない場合は true。
is_revenue_eventBooleanイベントに収益が含まれる場合は true。収益イベントのみ送信される。
amtFloat収益額。
curString通貨コード(例:“USD”)。
purchase_product_idStringストアのプロダクト ID。
purchase_transaction_idStringオリジナルトランザクション ID。
eStringイベント詳細を含む JSON 文字列(下記参照)。

e パラメーター(カスタムイベントデータ)は、以下を含むJSONエンコード文字列です:

パラメータータイプ説明
is_revenue_eventBooleantrue(イベントに収益が含まれる場合)。
amtFloat収益額。
curString通貨コード。
purchase_product_idStringストアのプロダクト ID。
purchase_transaction_idString元のトランザクション ID。

トラブルシューティング

invalid api version: v1 エラーでイベントが失敗する

Singular アカウントが2026年7月15日以降に作成された場合、イベントの受信は v2 Event API のみを通じて行われます。ユーザーのプロファイルに SDID が存在しないため、Adapty はイベントを v1 に送信しました。修正するには、アプリを Singular に接続する に記載されているとおり、アプリから Adapty に SDID を渡してください。setIntegrationIdentifier() の呼び出しを含まないアプリバージョンを使用しているユーザーからのイベントは、そのユーザーがアプリをアップデートするまで失敗し続けます。

access_level_updated がイベントフィードで失敗と表示される

access_level_updated は webhook 専用イベントです。Adapty はこのインテグレーションにこのイベントを送信しません。ただし、Adapty は有効なすべてのインテグレーションに対して結果を記録するため、サポートされていないイベントは失敗として表示されます。