SDK do Flutter - Definir um ID de utilizador

Documento

Definindo um ID de usuário

Envie seu ID de usuário interno para a Singular para permitir o rastreamento entre dispositivos e relatórios de dados no nível do usuário.

Nota: Se você usar a solução Cross-Device da Singular, você deve coletar o ID do usuário em todas as plataformas.

Requisitos de ID de usuário

Privacidade e práticas recomendadas

Siga estas diretrizes ao implementar o rastreamento de ID de usuário para garantir a conformidade com a privacidade e a medição adequada entre dispositivos.

  • Sem PII: A ID de utilizador não deve expor informações de identificação pessoal (PII), tais como endereços de correio eletrónico, nomes de utilizador ou números de telefone. Use um valor com hash exclusivo para seus dados primários.
  • Consistência entre plataformas: O valor da ID de utilizador deve ser o mesmo identificador interno que capta em todas as plataformas (Web/Mobile/PC/Console/Offline) para uma medição precisa entre dispositivos.
  • Dados de primeira parte: A Singular inclui o ID de utilizador nas exportações ao nível do utilizador, ETL e postbacks do BI interno (se configurado). O ID de utilizador é um dado de primeira parte e não é partilhado com terceiros.
  • Persistência: O ID de utilizador persiste até ser explicitamente desativado utilizando unsetCustomUserId() ou até a aplicação ser desinstalada. Fechar ou reiniciar a aplicação não apaga o ID de utilizador.

Descrição geral da implementação

Quando definir o ID de utilizador

Utilize Singular.setCustomUserId() para definir o identificador de utilizador e Singular.unsetCustomUserId() para o limpar durante o fim de sessão.

Melhores práticas: Se vários utilizadores partilharem um único dispositivo, implemente um fluxo de fim de sessão que chame setCustomUserId() no início de sessão e unsetCustomUserId() no fim de sessão.

Se você já souber a ID de usuário quando o aplicativo for aberto, configure-a usando a propriedade customUserId antes de inicializar o SDK Singular. Isso garante que o Singular receba a ID de usuário da primeira sessão. No entanto, a ID de utilizador normalmente não está disponível até que o utilizador se registe ou inicie sessão, caso em que deve chamar setCustomUserId() após a conclusão do fluxo de registo ou autenticação.


Métodos do SDK

Definir ID de usuário personalizada

Envie sua ID de usuário interna para a Singular para rastreamento entre dispositivos e relatórios no nível do usuário.

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

// Set the user ID after login or registration
Singular.setCustomUserId('user_123456');

Assinatura do método:

static void setCustomUserId(String customUserId)

Exemplo: Definir ID de usuário após o login

Chame setCustomUserId() imediatamente após o utilizador concluir com sucesso a autenticação para garantir que todos os eventos subsequentes são associados ao seu ID de utilizador.

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');
  }
}

Anular a definição do ID de utilizador personalizado

Limpe o ID de utilizador quando um utilizador termina a sessão para garantir um acompanhamento preciso da sessão para dispositivos com vários utilizadores.

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

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

Assinatura do método:

static void unsetCustomUserId()

Exemplo: Anular a definição do ID de utilizador no fim da sessão

Chame unsetCustomUserId() durante o fluxo de logout para limpar o ID do usuário e evitar a atribuição incorreta de eventos subsequentes.

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');
  }
}

Definir ID de utilizador durante a inicialização

Se a ID de usuário estiver disponível quando o aplicativo for iniciado (por exemplo, o usuário já estiver conectado), configure-a durante a inicialização do SDK usando a propriedade customUserId. Isto garante que a primeira sessão inclui a ID de utilizador.

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(),
    );
  }
}

Propriedade de configuração:

String? customUserId

Recomendação: Utilize a propriedade de configuração customUserIddurante a inicialização para aplicações com sessões de início de sessão persistentes. Para aplicações em que os utilizadores têm de iniciar sessão de cada vez, chame setCustomUserId() após a autenticação.