Flutter SDK インテグレーションガイド
このページでは、Rokt Ecommerce の Flutter SDK を実装して、チェックアウト時により関連性の高い顧客体験を提供する方法を説明します。SDK を使用すると、設定されたページで発火し、ユーザーとトランザクションデータを Rokt に戻してパーソナライズと測定を行うことにより、これらの体験(確認ページでのオファーの表示など)をトリガーおよび追跡することができます。
専任のアカウント担当者が、Flutter アプリでターゲットにしているプラットフォーム用にアカウントを設定するお手伝いをします。彼らは、SDK を初期化するために必要な key (iOS/Android/Web) と secret (iOS/Android) の両方、および顧客に最も関連性の高い体験を提供するために必要な追加リソースを提供します。
これらの手順を完了するには、開発リソースが必要です。追加の支援が必要な場合は、Rokt のアカウントマネージャーにお問い合わせください。Shopify ストアは、Rokt Ecommerce アプリ を使用して数秒で Rokt プレースメントを設定できます — コーディングは不要です!
1. Flutter セットアップ
Flutter アプリケーションに Flutter SDK を依存関係として追加します:
flutter pub add mparticle_flutter_sdk
Rokt Flutter SDK 依存関係をアプリケーションに追加した後、次の(または類似の)行がパッケージの pubspec.yaml ファイルに追加されます:
dependencies:
mparticle_flutter_sdk: ^1.1.0
Dart コードにパッケージをインポートし、mParticle のインスタンスを取得します:
import 'package:mparticle_flutter_sdk/mparticle_flutter_sdk.dart';
MparticleFlutterSdk? mpInstance = await MparticleFlutterSdk.getInstance();
Dart プラグインをインストールした後、以下の手順に従って Rokt SDK をモバイルアプリまたはウェブサイトに統合し続けます。アプリまたはサイトを起動する際にログにエラーが表示されないように、アカウントマネージャーから提供された key と secret を必要な場所に必ず含めてください。
1.1. iOSアプリにRokt SDKを追加する
SPMまたはCocoaPodsのいずれかを使用して、アプリケーションにRokt SDKを含めます:
CocoaPods
CocoaPodsを使用してSDKを統合するには、Podfileに以下を指定します:
pod 'mParticle-Apple-SDK', '~> 8.0'
pod 'mParticle-Rokt','~> 8.0'
SPM
Swift Package Managerを使用してSDKを統合するには:
- Xcodeでプロジェクトを開き、「Package Dependencies」タブに移動します。
- パッケージリストの下にある**+**ボタンをクリックします。
- 検索ボックスの右上にリポジトリURL
https://github.com/mParticle/mparticle-apple-sdkを入力し、パッケージリストからmparticle-apple-sdkを選択し、「Dependency Rule」を「Up to Next Major Version」に変更します。 - 右下の「Add Package」ボタンをクリックし、「Package Product」として
mParticle-Apple-SDKを選択します。位置情報追跡サポートを含まないSDKバージョンを使用したい場合は、mParticle-Apple-SDK-NoLocationを選択します。 - Rokt KitリポジトリURL
https://github.com/mparticle-integrations/mparticle-apple-integration-rokt.gitについても手順3と4を繰り返します。mParticle-Apple-SDK-NoLocationパッケージプロダクトを選択した場合は、import mParticle_Apple_SDK_NoLocationを使用してSDKをインポートする必要があります。
1.2. Rokt SDKを初期化する
SDKを初期化するには、以下の初期化スニペットをAppDelegateファイルに挿入します:
your-keyとyour-secretを、専用のRoktチームから提供されたキーとシークレットに置き換えてください。
- Swift
- Objective-C
import mParticle_Apple_SDK
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// SDKを初期化する
let options = MParticleOptions(key: "your-key",
secret: "your-secret")
// 環境を指定する:
// 統合をテスト中の場合は.developmentに設定します。
// 統合が本番データの準備ができた場合は.productionに設定します。
// デフォルトは.autoDetectで、自動的に環境を検出しようとします
options.environment = .development
MParticle.sharedInstance().start(with: options)
return true
}
#import <mParticle_Apple_SDK/mParticle.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// SDKを初期化する
MParticleOptions *options = [MParticleOptions optionsWithKey:@"your-key"
secret:@"your-secret"];
// 環境を指定する:
// 統合をテスト中の場合はMPEnvironmentDevelopmentに設定します。
// 統合が本番データの準備ができた場合はMPEnvironmentProductionに設定します。
// デフォルトはMPEnvironmentAutoDetectで、自動的に環境を検出しよう とします
options.environment = MPEnvironmentDevelopment;
[[MParticle sharedInstance] startWithOptions:options];
return YES;
}
追加セットアップ
詳細なヘルプについては、完全なiOS SDK 統合ガイドを参照してください。
1.1 依存関係を追加する
SDKに必要な依存関係を含めるようにgradleファイルを更新してください:
- build.gradle.kts
- build.gradle
dependencies {
implementation("com.mparticle:android-rokt-kit:5.70.2")
implementation("com.mparticle:android-core:5.70.2")
}
dependencies {
implementation "com.mparticle:android-rokt-kit:5.70.2"
implementation "com.mparticle:android-core:5.70.2"
}
1.2. Androidクラスを設定する
ルートのAndroid ActivityがFlutterFragmentActivityを拡張していることを確認してください
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity : FlutterFragmentActivity()
1.3. アプリでSDKを初期化する
Android SDKは、ApplicationクラスのonCreate()内でMParticleOptionsオブジェクトとビルダークラスを使用して設定できます。mParticle Android SDKは、他のSDK API呼び出しが行われる前に初期化されるべきです。
上記のコードサンプル内のyour-keyとyour-secretを、あなた専用のRoktアカウント担当者から提供されたキーとシークレットに置き換えてください。
- Kotlin
- Java
import com.mparticle.MParticle
import com.mparticle.MParticleOptions
class YourApplicationClass : Application() {
override fun onCreate() {
super.onCreate()
val options: MParticleOptions = MParticleOptions.builder(this)
.credentials(
"your-key", // Roktアカウント担当者から提供されたキー
"your-secret" // Roktアカウント担当者から提供されたシークレット
).environment(MParticle.Environment.Development) // 環境を指定します:
// 統合をテスト中の場合は.developmentに設定します。
// 統合が本番データの準備ができている場合は.productionに設定します。
// デフォルトは.autoDetectで、自動的に環境を検出しようとします
.build()
MParticle.start(options)
}
}
import com.mparticle.MParticle;
import com.mparticle.MParticleOptions;
public class YourApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
MParticleOptions options = MParticleOptions.builder(this)
.configuration(kitOptions)
.credentials(
"your-key", // Roktアカウント担当者から提供されたキー
"your-secret" // Roktアカウント担当者から提供されたシークレット
).environment(MParticle.Environment.Production) // 環境を指定します:
// 統合をテスト中の場合は.developmentに設定します。
// 統合が本番データの準備ができている場合は.productionに設定します。
// デフォルトは.autoDetectで、自動的に環境を検出しようとします
.build();
MParticle.start(options);
}
}
さらなるセットアップ
詳細については、完全な Android SDK 統合ガイド を参照してください。
1.1. Rokt SDKの初期化
SDKを初期化するには、SDK初期化スクリプト全体をサイトにコピー&ペーストしてください。
各サイトは異なりますが、RoktはサイトのすべてのページにSDK初期化スクリプトを含めることを推奨しています。これにより、SDKが常に初期化され、最も低いオファー配信の遅延と最高のユーザー識別精度が提供されます。
- シングルページアプリケーション (SPA): ウェブサイトがSPAの場合、初期化スクリプトをメインの
index.htmlページの<head>、または他のコンテンツがレンダリングされる主要な場所に挿入してください。 - マルチページアプリケーション (MPA): ウェブサイトがMPAでテンプレートベースのレンダリングシステムを使用している場合(最も一般的)、初期化スクリプトを主要な共有レイアウトファイルに配置してください。テンプレートベースのレンダリングシステムを使用していない場合は、ウェブサイトの各HTMLファイルにスクリプトを配置してください。
各ページにスクリプトが含まれている場合でも、ブラウザのキャッシュにより、SDKはデフォルトでキャッシュから読み込まれ、ウェブサイトの各ページロード時に再度読み込まれることはありませんのでご注意ください。
SDK 初期化スクリプト
"YOUR_API_KEY"をあなたの専任の Rokt チームから提供された API キーに置き換えてください。DOMAINを ファーストパーティドメイン設定 中に作成したサブドメインに設定してください。これはオプションです: デフォルトの DOMAIN 設定をそのままにした場合、リクエストはapps.rokt-api.comを経由します。
<script type="text/javascript">
// Rokt API キーを入力してください
const API_KEY = "YOUR_API_KEY";
// ファーストパーティドメインを設定した場合、デフォルトの apps.rokt-api ドメインの代わりにその値を DOMAIN に設定してください
const ROKT_DOMAIN = "https://apps.rokt-api.com";
// SDK 設定を設定します
window.mParticle = {
config: {
// データ環境を isDevelopmentMode で指定します:
// 統合をテスト中の場合は、isDevelopmentMode を true に設定してください。
// 統合が本番データの準備ができたら、isDevelopmentMode を false に設定してください。
isDevelopmentMode: true,
// 現在のユーザーを識別します:
// ユーザーのメールアドレスがある場合は、以下のように `identifyRequest` 内の `userIdentities` というオブジェクトに含めてください。
identifyRequest: {
userIdentities: {
// ハッシュされていないメールアドレスを使用している場合は、それを 'email' に設定してください。
email: 'j.smith@example.com',
// ハッシュされたメールアドレスを使用している場合は、`email` の代わりに 'other' に設定してください。
other: 'sha256 hashed email goes here'
},
}
},
};
// SDK をロードします
(function(e) { window.mParticle = window.mParticle || {}; window.mParticle.EventType = { Unknown: 0, Navigation: 1, Location: 2, Search: 3, Transaction: 4, UserContent: 5, UserPreference: 6, Social: 7, Other: 8, Media: 9 }; window.mParticle.eCommerce = { Cart: {} }; window.mParticle.Identity = {}; window.mParticle.Rokt = {}; window.mParticle.config = window.mParticle.config || {}; window.mParticle.config.rq = []; window.mParticle.config.snippetVersion = 2.7; window.mParticle.ready = function(e) { window.mParticle.config.rq.push(e); }; ["endSession", "logError", "logBaseEvent", "logEvent", "logForm", "logLink", "logPageView", "setSessionAttribute", "setAppName", "setAppVersion", "setOptOut", "setPosition", "startNewSession", "startTrackingLocation", "stopTrackingLocation"].forEach(function(e) { window.mParticle[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift(e); window.mParticle.config.rq.push(t); }; }); ["setCurrencyCode", "logCheckout"].forEach(function(e) { window.mParticle.eCommerce[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift("eCommerce." + e); window.mParticle.config.rq.push(t); }; }); ["identify", "login", "logout", "modify"].forEach(function(e) { window.mParticle.Identity[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift("Identity." + e); window.mParticle.config.rq.push(t); }; }); ["selectPlacements","hashAttributes","setExtensionData","use","getVersion","terminate"].forEach(function(e) { window.mParticle.Rokt[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift("Rokt." + e); window.mParticle.config.rq.push(t); }; }); var t = window.mParticle.config.isDevelopmentMode ? 1 : 0, n = "?env=" + t, a = window.mParticle.config.dataPlan; if (a) { var o = a.planId, r = a.planVersion; o && (r && (r < 1 || r > 1e3) && (r = null), n += "&plan_id=" + o + (r ? "&plan_version=" + r : "")); } var i = window.mParticle.config.versions, s = []; i && Object.keys(i).forEach(function(e) { s.push(e + "=" + i[e]); }); var c = document.createElement("script"); c.type = "text/javascript"; c.async = !0; window.ROKT_DOMAIN = ROKT_DOMAIN || 'https://apps.rokt-api.com'; mParticle.config.domain = ROKT_DOMAIN.split('//')[1]; c.src = ROKT_DOMAIN + "/js/v2/" + e + "/app.js" + n + "&" + s.join("&"); var l = document.getElementsByTagName("script")[0]; l.parentNode.insertBefore(c, l); })(API_KEY);
</script>
初期化スクリプトには、以下の設定が含まれています:
isDevelopmentMode
上記の例では、isDevelopmentMode が true に設定されています。これにより、「開発」データを収集してSDK統合をテストすることができます。統合を本番環境で稼働させる準備ができたら、isDevelopmentMode を false に設定して、本番データをRoktに収集して送信します。
identifyRequest
SDKは、SDKが初期化された時点でユーザーのメールアドレスを含めることで、現在のユーザーを識別することができます。Roktは、識別子として顧客の生の(ハッシュ化されていない)メールアドレスを使用することを推奨しています。