ユーザーIDの設定
社内ユーザーIDをSingularに送信して、クロスデバイス追跡とユーザーレベルデータレポートを有効にします。
注: Singularのクロスデバイスソリューションをご利用の場合は、すべてのプラットフォームでユーザーIDを収集する必要があります。
ユーザーIDの要件
プライバシーとベストプラクティス
プライバシーコンプライアンスと適切なクロスデバイス測定を保証するため、ユーザーIDトラッキングを実施する際は以下のガイドラインに従ってください。
- PIIを使用しない:ユーザIDは、電子メールアドレス、ユーザ名、電話番号などの個人を特定できる情報(PII)を公開すべきではありません。ファーストパーティデータに固有のハッシュ化された値を使用してください。
- プラットフォーム間の一貫性:ユーザーIDの値は、正確なクロスデバイス測定のために、すべてのプラットフォーム(ウェブ/モバイル/PC/コンソール/オフライン)で同じ内部識別子でなければなりません。
- ファーストパーティデータ:Singularは、ユーザーレベルのエクスポート、ETL、内部BIポストバック(設定されている場合)にユーザーIDを含めます。ユーザーIDはファーストパーティデータであり、第三者と共有されることはありません。
-
永続性:ユーザー ID は、
unsetCustomUserId()を使用して明示的に設定が解除されるか、アプリがアンインストールされるまで保持されます。アプリを終了または再起動しても、ユーザIDはクリアされません。
実装の概要
ユーザIDを設定するタイミング
ユーザーIDを設定するにはSingular.setCustomUserId() 、ログアウト時にクリアするにはSingular.unsetCustomUserId() 。
ベストプラクティス複数のユーザーが1つのデバイスを共有する場合は、ログイン時にsetCustomUserId() を呼び出し、ログアウト時にunsetCustomUserId() を呼び出すログアウトフローを実装します。
アプリを開いたときのユーザーIDをすでに知っている場合は、Singular SDKを初期化する前にcustomUserId プロパティを使って設定します。これにより、Singularは最初のセッションからユーザーIDを受け取ります。ただし、ユーザIDは通常、ユーザが登録またはログインするまで使用できません。その場合は、登録または認証フローが完了した後にsetCustomUserId() を呼び出します。
SDKメソッド
カスタムユーザーIDの設定
クロスデバイスのトラッキングとユーザーレベルのレポートのために、内部ユーザーIDをSingularに送信します。
import 'package:singular_flutter_sdk/singular.dart';
// Set the user ID after login or registration
Singular.setCustomUserId('user_123456');
メソッドの署名:
static void setCustomUserId(String customUserId)
例ログイン後にユーザーIDを設定
ユーザーが認証に成功した直後にsetCustomUserId() を呼び出し、その後のすべてのイベントがユーザーIDに関連付けられるようにします。
import 'package:singular_flutter_sdk/singular.dart';
Future<void> handleUserLogin(String email, String password) async {
try {
// Your authentication logic
final response = await authenticateUser(email, password);
if (response.success) {
// Set the user ID in Singular after successful login
Singular.setCustomUserId(response.userId);
print('User ID set: ${response.userId}');
// Navigate to home screen
navigateToHome();
}
} catch (error) {
print('Login failed: $error');
}
}
カスタム・ユーザIDの設定解除
ユーザーがログアウトしたときにユーザーIDをクリアして、マルチユーザーデバイスの正確なセッション追跡を保証します。
import 'package:singular_flutter_sdk/singular.dart';
// Unset the user ID on logout
Singular.unsetCustomUserId();
メソッドの署名:
static void unsetCustomUserId()
例ログアウト時のユーザーIDのアンセット
ログアウトフロー中にunsetCustomUserId() を呼び出し、ユーザーID をクリアし、その後のイベントの不正な帰属を防ぎます。
import 'package:singular_flutter_sdk/singular.dart';
Future<void> handleUserLogout() async {
try {
// Clear app data and user session
await clearUserSession();
// Unset the user ID in Singular
Singular.unsetCustomUserId();
print('User ID cleared');
// Navigate to login screen
navigateToLogin();
} catch (error) {
print('Logout failed: $error');
}
}
初期化時にユーザーIDを設定する
アプリ起動時にユーザーIDが利用可能な場合(ユーザーが既にログインしているなど)、SDK初期化時にcustomUserId プロパティを使用して設定します。これにより、最初のセッションにユーザーIDが含まれるようになります。
import 'package:flutter/material.dart';
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
initializeSingular();
}
Future<void> initializeSingular() async {
// Check if user is already logged in
final prefs = await SharedPreferences.getInstance();
final userId = prefs.getString('user_id');
// Create configuration
SingularConfig config = SingularConfig(
'YOUR_SDK_KEY',
'YOUR_SDK_SECRET'
);
// If user ID exists, set it during initialization
if (userId != null) {
config.customUserId = userId;
}
// Initialize SDK
Singular.start(config);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
構成プロパティ:
String? customUserId
推奨:永続的なログインセッションを持つアプリでは、初期化時にcustomUserId構成プロパティを使用します。ユーザーが毎回ログインする必要があるアプリでは、認証後にsetCustomUserId() を呼び出します。