Singular
Singular は、マーケティングキャンペーンのデータを収集・表示するモバイル計測パートナー(MMP)プラットフォームです。
Adaptyは、選択したサブスクリプションイベントをSingularに送信します。Singularダッシュボードでは、各キャンペーンが生み出す収益を確認し、広告の効果を評価できます。
連携のセットアップ
Singular を Adapty に接続する
Singular とのインテグレーションを設定するには、Adapty ダッシュボードの Integrations > Singular に移動し、トグルをオンにして各フィールドを入力してください。
以下の認証情報を設定できます:
- Singular SDK Key: 必須。Singular アプリの本番用 SDK キー。
- Singular SDK Key (Sandbox): 任意。サンドボックス用 Singular アプリの SDK キー。未設定の場合、サンドボックスイベントは Singular に送信されません。
両方のキーは、Singular ダッシュボードの Developer tools -> SDK Keys -> SDK Key (not SDK Secret) で確認できます:
イベントとタグの設定
認証情報の下に、AdaptyからSingularに送信できる3つのイベントグループがあります。Adaptyイベントの全一覧については、イベントをご参照ください。
Adaptyが提供するデフォルトのイベント名を使用することをお勧めします。ただし、必要に応じてイベント名を変更することも可能です。
Adapty はサブスクリプションイベントを Singular にサーバー間通信で送信するため、すべてのサブスクリプションイベントを Singular ダッシュボードで確認し、獲得キャンペーンと紐付けることができます。
インテグレーションを設定する前に作成されたプロファイルは、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に送信するため、アプリのコード変更は不要です。
- Adapty を有効化し、その後 Singular SDK を SDID コールバック付きで起動します。iOS では
sdidReceivedHandler、Android ではSDIDAccessorHandler、React Native と Flutter ではsdidReceivedCallback、Unity ではSingularSdidAccessorHandlerを使用します。 - Singular がコールバックを呼び出すまで待ちます。SDID は Singular SDK の起動後、非同期でアプリに届きます。SDID がデバイスにすでに保存されている場合も含め、Singular はすべての起動でコールバックを呼び出します。
- コールバック内で、
setIntegrationIdentifier()とsingular_sdidキーを使用して SDID を Adapty に渡します。このキーに対して定義済みの定数を持つ Adapty SDK はないため、キーは文字列リテラルとして記述してください。 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...\"}"
}
各パラメーターの説明:
| パラメータ | 型 | 説明 |
|---|---|---|
n | String | イベント名(Adapty イベントからマッピングされたもの)。 |
a | String | Singular SDK キー。 |
p | String | プラットフォーム(“iOS” または “Android”)。 |
i | String | ストアアプリ ID(バンドル ID)。 |
ip | String | ユーザーの IP アドレス。 |
sdid | String | v2 のみ。Singular デバイス ID。singular_sdid インテグレーション識別子から取得。 |
idfa | String | iOS、v1 のみ。広告主向け ID(大文字)。 |
idfv | String | iOS、v1 のみ。ベンダー向け ID(大文字)。 |
aifa | String | Android、v1 のみ。Google 広告 ID(小文字)。 |
andi | String | Android、v1 のみ。Android ID(小文字)。 |
asid | String | Android、v1 のみ。アプリセット ID(小文字)。 |
ve | String | OS バージョン。 |
att_authorization_status | Integer | iOS のみ。ATT ステータス(例:3 は承認済み)。 |
custom_user_id | String | ユーザーのカスタマーユーザー ID。 |
utime | Long | イベントの UNIX タイムスタンプ(秒単位)。 |
partner | String | 常に adapty。イベントが Adapty から送信されたことを示す識別子。 |
use_ip | Boolean | Adapty がユーザーの IP アドレスを持っていない場合は true。 |
is_revenue_event | Boolean | イベントに収益が含まれる場合は true。収益イベントのみ送信される。 |
amt | Float | 収益額。 |
cur | String | 通貨コード(例:“USD”)。 |
purchase_product_id | String | ストアのプロダクト ID。 |
purchase_transaction_id | String | オリジナルトランザクション ID。 |
e | String | イベント詳細を含む JSON 文字列(下記参照)。 |
e パラメーター(カスタムイベントデータ)は、以下を含むJSONエンコード文字列です:
| パラメーター | タイプ | 説明 |
|---|---|---|
is_revenue_event | Boolean | true(イベントに収益が含まれる場合)。 |
amt | Float | 収益額。 |
cur | String | 通貨コード。 |
purchase_product_id | String | ストアのプロダクト ID。 |
purchase_transaction_id | String | 元のトランザクション 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 は有効なすべてのインテグレーションに対して結果を記録するため、サポートされていないイベントは失敗として表示されます。