🐡

Salesforce Data Cloud Mobile SDKからデータを取り込んでみた

2024/10/07に公開

TL;DR

Salesforce Data CloudはMobile SDKも提供しており、ネイティブアプリ上で発生せいたイベントを取り込むことが可能です。ここでは、どのようにアプリ内イベントを取り込めるのかについて書いてみたいと思います。

SDKのインストール

Developerサイトに記載の通りにSDKをインストールします。

スキーマファイルのアップロード

サンプルとして eventHoge という名前のアクションをData Cloudに取り込みます。スキーマファイルに下記のような値を追加します。アクション名に加えて、属性値として foo, bar, baz も取得できるように externalDataTranFields に値を記載しています。

{
  "developerName": "eventHoge",
  "masterLabel": "eventHoge",
  "category": "Engagement",
  "availabilityStatus": "INUSE",
  "externalDataTranFields": [
    {
      "masterLabel": "Name",
      "dataType": "Text",
      "developerName": "name",
      "isDataRequired": false,
      "isCurrencyIsoCode": false
    },
    {
      "masterLabel": "foo",
      "dataType": "Text",
      "developerName": "foo",
      "isDataRequired": false,
      "isCurrencyIsoCode": false
    },
    {
      "masterLabel": "bar",
      "dataType": "Text",
      "developerName": "bar",
      "isDataRequired": false,
      "isCurrencyIsoCode": false
    },
    {
      "masterLabel": "baz",
      "dataType": "Number",
      "developerName": "baz",
      "isDataRequired": false,
      "isCurrencyIsoCode": false
    },
    ...
  ]
}

SDK初期化

setCdpメソッドにData Cloudの環境変数を設定することで、後続のトラッキング処理が可能となります。ポイントとなるのが,OptInの取得です。ここのステップが抜けているとSDKからのデータ収集がされません。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    configureSDK()
    return true
}

private func configureSDK() {
    let cdpConfig = createCDPConfig()
    
    SFMCSdk.initializeSdk(ConfigBuilder()
        .setCdp(config: cdpConfig, onCompletion: handleCDPInitialization)
        .build())
}

private func createCDPConfig() -> CdpConfig {
    return CdpConfigBuilder(appId: "xxx", endpoint: "https://xxx.c360a.salesforce.com")
        .trackScreens(true)
        .trackLifecycle(true)
        .sessionTimeout(600)
        .build()
}

private func handleCDPInitialization(_ result: OperationResult) {
    if result == .success {
        CdpModule.shared.setConsent(consent: Consent.optIn)
    }
}

補足ですが、こちらにあるように、Marketing Cloud EngagementのMobile Pushの機能も同時に初期化することが可能です。
これにより、アプリ内のアクションをトリガーに、プッシュ通知やアプリ内メッセージの配信はMobile Push、Data Cloudにデータの保管をすることを一度実行できます。

アクションの取得

特定のボタンタップ時に下記のコードを実行することで、Data Cloudへのデータ取り込みがなされます。

@objc func hogeAction(_ sender: Any) {
    SFMCSdk.track(
        event: CustomEvent(
        name: "eventHoge",
        attributes: [
            "name": "hoge",
            "foo": "foo1",
            "bar": "bar1",
            "baz": 100,
        ])
    )
}

Data CloudのData Explorerから取り込んだデータを確認できます。

以上となります。

このように基本的にWeb SDKの実装ステップと似たような流れでデータ取り込みができ、さらにはアプリ特有のライフサイクルイベントと絡めてデータ取得をすることで柔軟な顧客データの取得が可能になるかと考えております。

※本記事は、私が所属する会社とは一切関係のない事柄です。

Discussion