RudderStackはオープンソースの顧客データプラットフォーム(CDP)であり、企業が顧客データを収集、統合し、さまざまな宛先にルーティングすることを可能にします。顧客データパイプラインを管理するための一元化されたプラットフォームを提供し、企業はウェブサイト、モバイルアプリ、サーバー、クラウドサービスなど様々なソースから簡単にデータを収集することができます。
Singular SDKはRudderstackのプラグインとして利用可能で、「デバイスモード」デスティネーションと呼ばれています。以下の説明は、RudderstackにSingular Destinationを追加する方法を説明しています。
この統合はRudderstackによって構築され、保守されています。実装中に問題が発生した場合は、Rudderstackにご相談ください。
ガイド | エンジニアリングチーム |
前提条件 | この記事では、 Rudderstack iOS、Android、React Native、または Cordova SDKがすでに アプリに統合されていることを前提としています 。 デバイスモードとモバイルSDKの詳細については、Rudderstackのドキュメントを参照してください。 |
このインテグレーションを使用するには、iOS(Native Obj-CまたはSwift)、Android(JavaまたはKotlin)、React Native、またはCordova用のRudderstackのモバイルSDKを使用する必要があります。このインテグレーションは他のフレームワークとは互換性がありません!
- 基本インストール属性
- SkAdNetwork サポート
- Apple検索広告のアトリビューション
- カスタムアプリ内イベントトラッキング
- 収益トラッキング
- カスタムユーザーID
- METAインストール・リファラー・アトリビューション
- ディープリンク
- 限定的なデータ共有サポート
他のフレームワークのサポートが必要な場合、またはSingular SDKが提供する「全機能」をご希望の場合は、Rudderstackとは別にSingular SDKを実装する必要があります。SDKオプションとフレームワークについてはこちらをご覧ください。
はじめに
- RudderStackダッシュボードからソースを追加します。次に、デスティネーションのリストからSingularを選択します。
- デスティネーションに名前を割り当て、Continueをクリックします。
接続設定
Singularをデスティネーションとして正しく設定するには、以下の設定を行う必要があります:
- APIキー:Singularの「SDKキー」をここに入力します。これは必須項目です。
-
シークレット:Singularのシークレットを入力します。これは必須フィールドで、RudderStack iOSおよびAndroid SDKとのデバイスモード統合に必要です。
Singularダッシュボードの"開発者ツール > SDK統合 > SDKキー "からSingularの"SDKキー "を取得してください。
注:「クラウドモード」インテグレーションでは、APIキー(SDKキー)のみを入力します。
シークレット」は空白のままにしてください。 - セッションイベント名:この設定はクラウドモードでイベントを送信する場合にのみ適用されます。
-
イベント送信にはデバイスモードを使用します:AndroidまたはiOSプラットフォームを使用している場合、この設定を有効にするとデバイスモードでイベントを送信できます。その後、Singularデバイスモードガイドに従ってSingularをプロジェクトに追加してください。
デバイスモード経由でイベントを送信する場合、RudderStackではどのイベントを破棄するか、または通過させるかを指定することもできます。詳細については、クライアント側イベントフィルタリングガイドを参照してください。
デバイスモード統合の追加
RudderStackでSingularをデスティネーションとして設定したら、統合するプラットフォームに応じて、以下の手順に従ってプロジェクトに追加します。
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 RudderSingular
Obj-C
@import RudderSingular;
-
AppDelegate ファイルの didFinishLaunchingWithOptions メソッドを更新する:
重要
- manualSkanConversionManagement = trueを設定すると、変換値を手動で更新する必要があります。この場合、SingularのSKANモデルがあなたの代わりにCV値を更新することはできません。マネージド "モードを有効にするには、これを "false "に設定してください。
- waitForTrackingAuthorizationWithTimeoutIntervalの設定は、あなたのアプリがiOS App Tracking Transparency(ATT) Promptを使用する場合にのみ使用してください。ATTを表示している場合、これは300の値に設定されるべきです。
スウィフト
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セクションに以下のスニペットを追加します:
グルーヴィ
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() )
あなたの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の初期化に追加します:
タイプスクリプト
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)
SingularをCordovaアプリに追加するには、以下の手順に従ってください:
-
アプリケーションのルートフォルダに移動し、以下のコマンドを実行します:
bash
cordova plugin add rudder-integration-singular-cordova
-
アプリのホームページのonDeviceReady()関数に以下のコードを追加し、SDKを初期化します:
javascript
RudderClient.initialize(<write_key>, { dataPlaneUrl: <data_plane_url>, factories: [RudderSingularFactory] })
重要: `initialize`呼び出しには必ず`await`キーワードを使用してください。
識別
デバイスモードの統合では、Singular SDKはRudderStackのidentifyメソッドを使用してユーザーIDをカスタムユーザーIDにマッピングします。RudderStackはSingularのsetCustomUserIdAPIを使用して、識別されたユーザーIDをSingularに転送します。
Android SDKとiOS SDKのidentifyコールのサンプルを以下に示します:
[[RSClient getInstance] identify:@"1hKOmRA4el9Zt1WSfVJIVo4GRlm"];
RudderClient.getInstance()?.identify("1hKOmRA4el9Zt1WSfVJIVo4GRlm")
追跡
trackコールにより、あらゆるユーザーアクションとそれに関連するプロパティをキャプチャできます。各ユーザーアクションはイベントとみなされます。
カスタムイベントのトラッキング
カスタムtrackコールを使用すると、アプリで発生したカスタムイベントを追跡できます。RudderStackはこれらのコールをSingularに送信し、そこでカスタムポストインストールイベントとして処理され、関連するレポートで利用可能になります。
Android SDKとiOS SDKのカスタム・トラック・コールのサンプルを以下に示します:
[[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は収益イベントのトラッキングをサポートしています。収益プロパティ(ゼロ値を含む)を含むイベントが送信されるたびに、収益のトラッキングを実装します。オプションで、通貨フィールドをISOコードとして渡すこともできます。
デフォルトの通貨はUSDに設定されています。
収益トラックコールのサンプルを以下に示します:
[[RSClient getInstance] track:@"Order Completed" properties:@{
@"revenue" : @1251,
@"currency" : @"INR"
}];
RudderClient.getInstance()
?.track(
"Order Completed",
RudderProperty().putValue("revenue", 1251).putValue("currency", "INR")
)
スクリーン
screenメソッドを使用すると、ユーザーがモバイル画面を見るたびに、関連するオプションのプロパティとともに記録できます。この呼び出しは、ウェブアプリケーションのページ呼び出しに似ていますが、モバイルデバイス専用です。
Android SDKとiOS SDKの両方のscreen呼び出しのサンプルを以下に示します:
[[RSClient sharedInstance] screen:@"Home" properties:@{
@"category" : @"launcher"
}];
RudderClient.getInstance()
?.screen(
"Home",
RudderProperty().putValue("category", "launcher")
)
上記のスニペットでは、RudderStackは、画面に関する追加情報とともに、表示されている画面に関連するすべての情報をキャプチャします。
RudderStackはスクリーンイベントをカスタムイベントとしてSingularに送信する。
リセット
resetメソッドは、現在のユーザの ID をリセットし、新しい匿名セッションを作成します。このメソッドは、ユーザがログアウトするときに呼び出されます。
RudderStackはSingularのunsetCustomUserIdメソッドを呼び出して、ユーザのIDをリセットします。
Android と iOS SDK のリセット呼び出しのサンプルを以下に示します:
[[RSClient getInstance] reset];
RudderClient.getInstance()?.reset();
SKAdNetwork(SKAN)サポートの実装
iOS SDKの初期化の前に以下のコードを追加して、SKAdNetwork統合のためのコントロールをSingularに与えます:
重要
- 重要:manualSkanConversionManagement = trueを設定すると、コンバージョン値を手動で更新する必要があります。この場合、SingularのSKANモデルがあなたの代わりにCV値を更新することはできません。マネージド "モードを有効にするには、これを "false "に設定してください。
- waitForTrackingAuthorizationWithTimeoutIntervalの設定は、あなたのアプリがiOS App Tracking Transparency(ATT) Promptを使用する場合にのみ使用してください。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);
}];