Flutter SDK - ユーザーIDの設定

ドキュメント

ユーザー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に送信します。

Dart
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に関連付けられるようにします。

Dart
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をクリアして、マルチユーザーデバイスの正確なセッション追跡を保証します。

Dart
import 'package:singular_flutter_sdk/singular.dart';

// Unset the user ID on logout
Singular.unsetCustomUserId();

メソッドの署名

static void unsetCustomUserId()

例ログアウト時のユーザーIDのアンセット

ログアウトフロー中にunsetCustomUserId() を呼び出し、ユーザーID をクリアし、その後のイベントの不正な帰属を防ぎます。

Dart
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が含まれるようになります。

Dart
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() を呼び出します。