RudderStack はオープンソースのカスタマーデータプラットフォーム (CDP) です 企業が顧客データを収集、統合し、さまざまな宛先へルーティングできるようにします。顧客データパイプラインを管理するための一元化されたプラットフォームを提供し、Webサイト、モバイルアプリ、サーバー、クラウドサービスなどのさまざまなソースから組織が簡単にデータを収集できるようにします。
Singular SDK は Rudderstack のプラグインとして提供されており、 「Device-Mode」宛先 と呼ばれます。以下の手順では、Rudderstack に Singular 宛先を追加する方法を説明します。
この統合は Rudderstack によって構築および保守されていることにご注意ください。実装中に問題が発生した場合は、Rudderstack にお問い合わせください。
| 対象ガイド | エンジニアリングチーム |
| 前提条件 | この記事では、 Rudderstack iOS、Android、React Native、または Cordova SDK がすでにアプリに統合されていることを前提としています。 device-mode およびモバイル SDK の詳細については、Rudderstack のドキュメントを参照してください。 |
この統合を使用するには、次のいずれかの Rudderstack モバイル SDK を使用している必要があります。iOS (ネイティブ Obj-C または Swift)、Android (Java または Kotlin)、React Native、または Cordova。 この統合は他のフレームワークとは互換性がありません。
- 基本的なインストールアトリビューション
- SkAdNetwork サポート
- Apple Search Ads アトリビューション
- カスタムアプリ内イベントトラッキング
- 収益トラッキング
- カスタムユーザー ID
- META インストールリファラーアトリビューション
- ディープリンク
- Limited Data Sharing サポート
他の フレームワーク のサポートが必要な場合、または Singular SDK が提供する「フル機能」をご利用になりたい場合は、Rudderstack とは別に Singular SDK を独自に実装する必要があります。SDK のオプションとフレームワークについては こちら をご覧ください。
はじめに
- RudderStack ダッシュボード からソースを追加します。次に、宛先のリストから Singular を選択します。
- 宛先に名前を割り当て、 Continue をクリックします。
接続設定
Singular を宛先として正常に構成するには、次の設定を構成する必要があります。
- API Key: ここに Singular の 「SDK Key」 を入力します。これは必須フィールドです。
-
Secret:
Singular のシークレットを入力します。これは必須フィールドで、RudderStack iOS および Android SDK とのデバイスモード統合には必須です。
Singular の 「SDK KEY」 を取得します。これは Singular ダッシュボードの 「Developer Tools > SDK Integration > SDK Keys」 にあります。
注: 「Cloud-Mode」統合の場合は、 API Key (SDK Key) の値のみを入力します 。
「Secret」は空欄のままにしてください。 - Session Event Name: この設定は、クラウドモード経由でイベントを送信する場合にのみ適用されます。
-
Use device mode to send events:
Android または iOS プラットフォームを使用している場合、この設定を有効にすると、デバイスモード経由でイベントを送信できます。次に、Singular Device Mode ガイドに従って、プロジェクトに Singular を追加する手順を実行します。
デバイスモード経由でイベントを送信する場合、RudderStack ではどのイベントを破棄し、どのイベントを通過させるかを指定することもできます。詳細については、 Client-side Event Filtering ガイドを参照してください。
デバイスモード統合の追加
RudderStack で Singular を宛先として設定したら、統合するプラットフォームに応じて、次の手順でプロジェクトに追加します。
React Native アプリに Singular を追加するには、次の手順に従います。
-
次のコマンドを実行して、 RudderStack-Singular モジュールをアプリに追加します。
bash
npm install @rudderstack/rudder-integration-singular-react-native // OR // yarn add @rudderstack/rudder-integration-singular-react-native -
プロジェクトレベルの android/build.gradle ファイルを開き、次のスニペットを追加します。
groovy
repositories { maven { url "https://maven.singular.net/" } } -
上記のモジュールをインポートし、SDK の初期化に追加します。
typescript
import rudderClient from "@rudderstack/rudder-sdk-react-native" import singular from "@rudderstack/rudder-integration-singular-react-native" const config = { dataPlaneUrl: <data_plane_url>, trackAppLifecycleEvents: true, withFactories: [singular], } rudderClient.setup(<write_key>, config)
Cordova アプリに Singular を追加するには、次の手順に従います。
-
アプリケーションのルートフォルダに移動し、次のコマンドを実行します。
bash
cordova plugin add rudder-integration-singular-cordova -
SDK を初期化するために、アプリのホームページの onDeviceReady() 関数に次のコードを追加します。
javascript
RudderClient.initialize(<write_key>, { dataPlaneUrl: <data_plane_url>, factories: [RudderSingularFactory] })重要: 必ず `await` キーワードを `initialize` 呼び出しとともに使用してください。
iOS アプリに Singular を追加するには、次の手順に従います。
-
Podfile に次の依存関係を追加します。
ruby
pod 'Singular-SDK', '11.0.4' pod 'Rudder-Singular', '1.0.0' -
依存関係を追加した後、 pod install コマンドを実行してから、 AppDelegate.m ファイルに次のインポートを追加します。
Obj-C
//Objective-C
#import <rudder> #import <ruddersingularfactory.h> -
RSClient を初期化します。
Obj-C
//Objective-C
RSConfigBuilder *configBuilder = [[RSConfigBuilder alloc] init]; [configBuilder withDataPlaneUrl:<data_plane_url>]; [configBuilder withFactory:[RudderSingularFactory instance]]; RSClient *rudderClient = [RSClient getInstance:<write_key> config:[configBuilder build]];
このデバイスモード統合は、Singular v11.0.4 以降でサポートされています。
iOS プロジェクトに Singular を追加するには、次の手順に従います。
-
Podfile に次の行を追加して、 RudderSingular ( CocoaPods から利用可能) をインストールします。
pod 'RudderSingular', '~> 1.0.0' -
依存関係を追加した後、 pod install コマンドを実行してから、使用するプラットフォームに応じて、 AppDelegate ファイルにインポートを追加します。
Swift
import RudderSingularObj-C
@import RudderSingular; -
AppDelegate ファイルで didFinishLaunchingWithOptions メソッドを更新します。
重要:
- manualSkanConversionManagement = true を設定すると、Conversion Value を手動で更新する必要があります。この場合、Singular の SKAN モデルがユーザーに代わって CV 値を更新することはできません。「managed」モードを有効にするには、これを「false」に設定します。
- waitForTrackingAuthorizationWithTimeoutInterval の設定は、アプリが iOS App Tracking Transparency (ATT) プロンプトを使用する場合にのみ使用してください。ATT を表示する場合は、これを 300 に設定してください。
Swift
let config: RSConfig = RSConfig(writeKey: WRITE_KEY) .dataPlaneURL(DATA_PLANE_URL) RSClient.sharedInstance().configure(with: config) let rudderSingularConfig = RudderSingularConfig() .skAdNetworkEnabled(true) .manualSkanConversionManagement(true) .conversionValueUpdatedCallback({ value in print("Your SKAN handler \(value)") }) .waitForTrackingAuthorizationWithTimeoutInterval(300) RSClient.sharedInstance().addDestination(RudderSingularDestination(rudderSingularConfig: rudderSingularConfig))Obj-C
RSConfig *config = [[RSConfig alloc] initWithWriteKey:WRITE_KEY]; [config dataPlaneURL:DATA_PLANE_URL]; [[RSClient sharedInstance] configureWith:config]; RudderSingularConfig *rudderSingularConfig = [[RudderSingularConfig alloc] init]; [rudderSingularConfig skAdNetworkEnabled:YES]; [rudderSingularConfig manualSkanConversionManagement:YES]; [rudderSingularConfig conversionValueUpdatedCallback:^(NSInteger value) { printf("Your SKAN handler %ld", value); }]; [rudderSingularConfig waitForTrackingAuthorizationWithTimeoutInterval:300]; [[RSClient sharedInstance] addDestination:[[RudderSingularDestination alloc] initWithRudderSingularConfig:rudderSingularConfig]];
Android アプリに Singular を追加するには、次の手順に従います。
-
app/build.gradle (Module: app ) ファイルを開き、 dependencies セクションの下に次を追加します。
groovy
implementation 'com.rudderstack.android.sdk:core:[1.0,2.0)' implementation 'com.rudderstack.android.integration:singular:1.0.0' implementation 'com.google.code.gson:gson:2.8.6' -
ビルドスクリプトに Singular Maven プラグインを追加します。これを行うには、ルートの build.gradle の Gradle Scripts セクションに次のスニペットを追加します。
groovy
buildscript { repositories { google() mavenCentral() maven { url 'https://maven.singular.net/' } } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10' } } allprojects { repositories { google() mavenCentral() maven { url 'https://maven.singular.net/' } } } -
次の権限を (まだ存在しない場合) AndroidManifest.xml に追加します。
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> -
最後に、 Application クラスの onCreate() メソッドで RudderStack SDK を初期化します。
// initialize Rudder SDK val rudderClient = RudderClient.getInstance( this, WRITE_KEY, RudderConfig.Builder() .withDataPlaneUrl(DATA_PLANE_URL) .withFactory(SingularIntegrationFactory.FACTORY) .build() )
Identify
デバイスモード統合の場合、Singular SDK は RudderStack の identify メソッドを使用して、ユーザー ID をカスタムユーザー ID にマッピングします。RudderStack は Singular の setCustomUserId API を使用して、識別されたユーザー ID を Singular へ転送します。
Android と iOS の両方の SDK のサンプル identify 呼び出しを以下に示します。
[[RSClient getInstance] identify:@"1hKOmRA4el9Zt1WSfVJIVo4GRlm"];
RudderClient.getInstance()?.identify("1hKOmRA4el9Zt1WSfVJIVo4GRlm")
Track
track 呼び出しを使用すると、あらゆるユーザーアクションとそれに関連するプロパティをキャプチャできます。各ユーザーアクションはイベントとみなされます。
カスタムイベントのトラッキング
カスタム track 呼び出しを使用すると、アプリで発生するカスタムイベントをトラッキングできます。RudderStack はこれらの呼び出しを Singular へ送信し、そこでカスタムインストール後イベントとして処理され、関連レポートで利用できるようになります。
Android と iOS の両方の SDK のサンプルカスタム track 呼び出しを以下に示します。
[[RSClient getInstance] track:@"Product Reviewed" properties:@{
@"product_id" : @"345676543",
@"review_id" : @"123454387"
}];
RudderClient.getInstance()
?.track(
"Product Reviewed",
RudderProperty()
.putValue("product_id", "345676543")
.putValue("review_id", "123454387")
)
収益のトラッキング
Singular は収益イベントのトラッキングをサポートしています。 revenue プロパティを含むイベントが (ゼロ値を含めて) 送信されるたびに収益トラッキングを実行します。オプションで、 currency フィールドを ISO コード として渡すこともできます。
デフォルトの通貨は USD に設定されています。
サンプルの revenue track 呼び出しを以下に示します。
[[RSClient getInstance] track:@"Order Completed" properties:@{
@"revenue" : @1251,
@"currency" : @"INR"
}];
RudderClient.getInstance()
?.track(
"Order Completed",
RudderProperty().putValue("revenue", 1251).putValue("currency", "INR")
)
Screen
screen メソッドを使用すると、ユーザーがモバイル画面を見るたびに、関連するオプションのプロパティとともに記録できます。この呼び出しは、Web アプリケーションの page 呼び出しに似ていますが、モバイルデバイス専用です。
Android と iOS の両方の SDK のサンプル screen 呼び出しを以下に示します。
[[RSClient sharedInstance] screen:@"Home" properties:@{
@"category" : @"launcher"
}];
RudderClient.getInstance()
?.screen(
"Home",
RudderProperty().putValue("category", "launcher")
)
上記のスニペットでは、RudderStack は表示された画面に関連するすべての情報を、画面に関する追加情報とともにキャプチャします。
RudderStack は screen イベントをカスタムイベントとして Singular へ送信します。
Reset
reset メソッドは、現在のユーザーの ID をリセットし、新しい匿名セッションを作成します。ユーザーがログアウトしたときに呼び出す必要があります。
RudderStack は Singular の unsetCustomUserId メソッドを呼び出して、ユーザーの ID をリセットします。
Android と iOS の両方の SDK のサンプル reset 呼び出しを以下に示します。
[[RSClient getInstance] reset];
RudderClient.getInstance()?.reset();
SKAdNetwork (SKAN) サポートの実装
SKAdNetwork 統合の制御を Singular に渡すには、iOS SDK の初期化前に次のコードを追加します。
重要:
- manualSkanConversionManagement = true を設定すると、Conversion Value を手動で更新する必要があります。この場合、Singular の SKAN モデルがユーザーに代わって CV 値を更新することはできません。「managed」モードを有効にするには、これを「false」に設定します。
- waitForTrackingAuthorizationWithTimeoutInterval の設定は、アプリが iOS App Tracking Transparency (ATT) プロンプトを使用する場合にのみ使用してください。ATT を表示する場合は、これを 300 に設定してください。
Obj-C
[RudderSingularIntegration setSKANOptions:YES
isManualSkanConversionManagementMode:NO
withWaitForTrackingAuthorizationWithTimeoutInterval:@300
withConversionValueUpdatedHandler:^(NSInteger conversionValue){
// Receive a callback whenever the Conversion Value is updated
NSLog(@"SKAN handler %ld",conversionValue);
}];