Flutter集成Dito服务插件dito_sdk的使用

Flutter集成Dito服务插件dito_sdk的使用

Dito SDK (Flutter) 是一个 Dart 库,它提供了将应用程序与 Dito 平台集成的方法。它允许识别用户、注册事件并发送自定义数据。

安装

要将 Dito SDK 库安装到您的 Flutter 应用程序中,请遵循以下说明:

# 添加依赖包
flutter pub add dito_sdk

方法

初始化

此方法应在调用 SDK 的任何其他操作之前调用。它初始化用于在 Dito 平台上进行身份验证所需的 API 和 SECRET 密钥。

void initialize({required String apiKey, required String secretKey});

参数

  • apiKey (String, 必填): Dito 平台的 API 密钥。
  • secretKey (String, 必填): Dito 平台的 API 密钥的密钥。

初始化推送通知服务

此方法应在 SDK 初始化之后调用。它初始化推送通知功能所需的服务和配置。

void initializePushNotificationService();

参数

  • apiKey (String, 必填): Dito 平台的 API 密钥。
  • secretKey (String, 必填): Dito 平台的 API 密钥的密钥。

识别用户

此方法定义将在所有后续操作中使用的用户 ID。

void identify(String userId);

参数

  • userID (String, 必填): 用于在 Dito 平台上标识用户的 ID。
  • name (String): 用于在 Dito 平台上标识用户的名称。
  • email (String): 用于在 Dito 平台上标识用户的电子邮件。
  • gender (String): 用于在 Dito 平台上标识用户的性别。
  • birthday (String): 用于在 Dito 平台上标识用户的生日。
  • location (String): 用于在 Dito 平台上标识用户的地点。
  • customData (Map<String, dynamic>): 用于在 Dito 平台上标识用户的自定义数据。

注册用户

此方法使用先前通过 identify() 方法提供的信息在 Dito 平台上注册用户。

Future<http.Response> identifyUser() async;

异常

  • 如果在调用此方法时 SDK 中尚未注册 userId,则会在应用程序中引发错误。(请使用 setUserId() 方法设置 userId

跟踪事件

trackEvent() 方法的目的是在 Dito 平台上注册一个事件。如果 userID 已经注册,则该事件会立即发送。然而,如果 userID 还未注册,则事件将被本地存储,并在通过 setUserId() 方法注册 userID 后发送。

Future<void> trackEvent(
{
required String eventName,
double? revenue,
Map<String, String>? customData,
}
)
async;

参数

  • eventName (String, 必填): 要注册的事件名称。
  • revenue (double, 可选): 与事件相关的收入。
  • customData (Map<String, String>, 可选): 与事件关联的额外自定义数据。

注册移动令牌

此方法允许为用户注册移动令牌。

Future<http.Response> registryMobileToken({
  required String token,
  String? platform,
});

参数

  • token (String, 必填): 将要注册的移动令牌。
  • platform (String, 可选): 用户访问应用程序的平台名称。有效值:‘iPhone’ 和 ‘Android’。
    如果没有传递此属性的值,SDK 将默认使用 platform 属性的值。

异常

  • 如果传递给 platform 属性的值不是 ‘iPhone’ 或 ‘Android’,则会在应用程序中引发错误。
  • 如果在调用此方法时 SDK 中尚未注册 identify,则会在应用程序中引发错误。(请使用 identify() 方法设置用户的 ID)

移除移动令牌

此方法允许为用户移除移动令牌。

Future<http.Response> removeMobileToken({
  required String token,
  String? platform,
});

参数

  • token (String, 必填): 将要移除的移动令牌。
  • platform (String, 可选): 用户访问应用程序的平台名称。有效值:‘iPhone’ 和 ‘Android’。
    如果没有传递此属性的值,SDK 将默认使用 platform 属性的值。

异常

  • 如果传递给 platform 属性的值不是 ‘iPhone’ 或 ‘Android’,则会在应用程序中引发错误。
  • 如果在调用此方法时 SDK 中尚未注册 identify,则会在应用程序中引发错误。(请使用 identify() 方法设置用户的 ID)

打开通知

此方法允许注册移动通知的打开。

Future<http.Response> openNotification
(
{
required String notificationId,
required String identifier,
required String reference
}) async

参数

  • notificationId (String, 必填): 应用程序接收到的通知的 Dito ID。
  • identifier (String, 必填): 用于在 Dito 平台上标识通知的参数。
  • reference (String, 必填): 用于在 Dito 平台上标识用户的参数。

注意事项

  • 这些参数将存在于通知的数据中。

用户类

用于处理用户数据的类。

User user = User(sha1("joao@example.com"), 'João da Silva', 'joao@example.com', 'São Paulo');

参数

  • userID (String, 必填): 用于在 Dito 平台上标识用户的 ID。
  • name (String): 用于在 Dito 平台上标识用户的名称。
  • email (String): 用于在 Dito 平台上标识用户的电子邮件。
  • gender (String): 用于在 Dito 平台上标识用户的性别。
  • birthday (String): 用于在 Dito 平台上标识用户的生日。
  • location (String): 用于在 Dito 平台上标识用户的地点。
  • customData (Map<String, dynamic>): 用于在 Dito 平台上标识用户的自定义数据。

示例

基本使用

import 'package:dito_sdk/dito_sdk.dart';

final dito = DitoSDK();

// 使用 API 密钥和密钥初始化 SDK
dito.initialize(
apiKey: 'your_api_key', secretKey: 'your_secret_key');

// 定义或更新实例中的用户信息(此时还没有与 Dito 通信)
dito.identify(sha1("joao@example.com"), 'João da Silva', 'joao@example.com', 'São Paulo');

// 发送由 identify 定义或更新的用户信息到 Dito
await dito.identifyUser();

// 在 Dito 上注册一个事件
await dito.trackEvent(eventName: 'login');

高级使用

main.dart
import 'package:dito_sdk/dito_sdk.dart';

final dito = DitoSDK();

// 使用 API 密钥和密钥初始化 SDK
dito.initialize(
apiKey: 'your_api_key', secretKey: 'your_secret_key');
login.dart
import 'package:dito_sdk/dito_sdk.dart';

final dito = DitoSDK();

// 设置用户 ID
dito.setUserId('user_id');
dito.identify(sha1("joao@example.com"), 'João da Silva', 'joao@example.com', 'São Paulo');
await dito.identifyUser();
arquivoX.dart
import 'package:dito_sdk/dito_sdk.dart';

final dito = DitoSDK();

// 定义或更新实例中的用户信息(此时还没有与 Dito 通信)
dito.identify(
sha1("joao@example.com"), 'João da Silva', 'joao@example.com', 'São Paulo');
await dito.identifyUser();
await dito.registryMobileToken(token: 'your_token');
arquivoY.dart
import 'package:dito_sdk/dito_sdk.dart';

final dito = DitoSDK();

// 定义或更新实例中的用户信息(此时还没有与 Dito 通信)
dito.identify(
sha1("joao@example.com"), 'João da Silva', 'joao@example.com', 'Rio de Janeiro', {
'loja preferida': 'LojaX',
'canal preferido': 'Loja Física'
});
await dito.identifyUser();

这将导致调用 identifyUser() 时发送以下用户 payload:

{
  name: 'João da Silva',
  email: 'joao@example.com',
  location: 'Rio de Janeiro',
  customData: {
    'loja preferida': 'LojaX',
    'canal preferido': 'Loja Física'
  }
}

我们的 SDK 是一个单例,这意味着即使它在一个文件中多次初始化或在多个文件中初始化,它始终引用之前存储的信息。这使我们能够随时调用 identify() 方法添加或更新用户详细信息,并仅在必要时通过 identifyUser() 方法发送它们。

arquivoZ.dart
import 'package:dito_sdk/dito_sdk.dart';

final dito = DitoSDK();

// 在 Dito 上注册一个事件
dito.trackEvent(
eventName: 'comprou produto',
revenue: 99.90,
customData: {
'produto': 'produtoX',
'sku_produto': '99999999',
'metodo_pagamento': 'Visa',
},
);

使用 SDK 处理推送通知

为了使其正常工作,需要配置 Firebase Cloud Messaging (FCM) 库,遵循以下步骤:

dart pub global activate flutterfire_cli
flutter pub add firebase_core firebase_messaging
flutterfire configure

按照 CLI 中出现的步骤操作,以便在 Android 和 iOS 应用程序中配置 Firebase 访问密钥。

main.dart
import 'package:dito_sdk/dito_sdk.dart';

// 注册一个服务以接收完全关闭的应用程序的推送
[@pragma](/user/pragma)('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  final notification = DataPayload.fromJson(jsonDecode(message.data["data"]));

  dito.notificationService().showLocalNotification(CustomNotification(
      id: message.hashCode,
      title: notification.details.title ?? "应用名称",
      body: notification.details.message,
      payload: notification));
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  DitoSDK dito = DitoSDK();
  dito.initialize(apiKey: 'your_api_key', secretKey: 'your_secret_key');
  await dito.initializePushService();
}

更多关于Flutter集成Dito服务插件dito_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成Dito服务插件dito_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中集成并使用dito_sdk插件的示例代码。这个示例假设你已经有一个Flutter项目,并且了解基本的Flutter开发流程。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加dito_sdk依赖。打开你的pubspec.yaml文件,并在dependencies部分添加以下行:

dependencies:
  flutter:
    sdk: flutter
  dito_sdk: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

步骤 2: 配置Dito服务

在使用dito_sdk之前,你需要在Dito平台上创建一个应用并获取必要的配置信息,如API密钥、应用ID等。

步骤 3: 初始化Dito SDK

在你的Flutter项目的入口文件(通常是main.dart)中,初始化dito_sdk

import 'package:flutter/material.dart';
import 'package:dito_sdk/dito_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Dito SDK
  await DitoSdk.initialize(
    apiKey: '你的API密钥',
    appId: '你的应用ID',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Dito SDK Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // 在这里你可以添加更多的UI和逻辑来处理Dito SDK的功能
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Dito SDK Demo'),
      ),
      body: Center(
        child: Text('Dito SDK 已初始化'),
      ),
    );
  }
}

步骤 4: 使用Dito SDK的功能

一旦Dito SDK初始化完成,你就可以使用它提供的各种功能了。下面是一个示例,展示如何调用Dito SDK的一个假设功能(注意:这里的功能名称是假设的,你需要根据实际的Dito SDK文档来调整)。

class _MyHomePageState extends State<MyHomePage> {
  String result = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Dito SDK Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Dito SDK 功能调用结果:'),
            Text(result, style: TextStyle(fontSize: 20)),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                try {
                  // 调用Dito SDK的某个功能,这里以假设的fetchData为例
                  var data = await DitoSdk.fetchData();
                  setState(() {
                    result = '获取的数据: $data';
                  });
                } catch (e) {
                  setState(() {
                    result = '错误: ${e.message}';
                  });
                }
              },
              child: Text('调用Dito功能'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. API密钥和应用ID:确保你使用的是从Dito平台获取的正确的API密钥和应用ID。
  2. 错误处理:在实际应用中,你应该添加更多的错误处理逻辑来确保应用的健壮性。
  3. 文档参考:务必参考Dito SDK的官方文档,以获取最新的API信息和功能说明。

以上代码是一个基本的示例,展示了如何在Flutter项目中集成并使用dito_sdk。根据你的具体需求,你可能需要调用不同的API或处理不同的数据。

回到顶部