Flutter集成carrotquest_sdk插件的功能使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter集成carrotquest_sdk插件的功能使用

目录

安装

通过Flutter命令行工具安装carrotquest_sdk

$ flutter pub add carrotquest_sdk

这会在你的pubspec.yaml文件中添加如下依赖(并运行flutter pub get):

dependencies:
  carrotquest_sdk: <latest-version>

导入

在Dart代码中,添加以下导入语句:

import 'package:carrotquest_sdk/carrotquest_sdk.dart';

Android配置

对于Android部分,需要在build.gradle文件中启用multiDex支持:

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
    }
}

初始化

要初始化CarrotQuest SDK,你需要API Key和User Auth Key。这些可以在开发者设置页面找到。

在应用的onCreate()方法中执行以下代码进行初始化:

Carrot.setup(apiKey, appId);  

确保检查SDK是否已经初始化以避免重复初始化:

final isInit = await Carrot.isInit();
if (isInit) return;

用户授权

有两种方式可以为用户授权:

直接传递userAuthKey:

String? carrotId = await Carrot.auth(userId, userAuthKey: _userAuthKey);

或传递后端生成的hash值:

String? carrotId = await Carrot.auth(id, userHash: _hash);

切换用户时调用logout方法:

Carrot.logOut();  

用户属性和事件

你可以设置用户的自定义属性:

Carrot.setUserProperty(UserProperty('key', 'value'));

也可以追踪事件:

Carrot.trackEvent('eventName', params: {'param1': 'value1'});

获取未读对话数量:

int unreadCount = await Carrot.getUnreadConversationsCount();

订阅未读对话数量变化:

Stream<int> unreadCountStream = Carrot.getUnreadConversationsCountStream();

聊天功能

打开与客服人员的聊天界面:

Carrot.openChat();

通知 </>

为了处理推送通知,你需要配置Firebase Cloud Messaging,并将FCM Token发送给CarrotQuest服务端。具体步骤请参考官方文档中的详细说明

示例代码如下:

[@pragma](/user/pragma)('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  bool isCarrotPush = Carrot.isCarrotQuestPush(message.data);
  if (isCarrotPush) {
    Carrot.sendFirebasePushNotification(message.data);
  }
}

Future<void> _initCarrotSdk() async {
  await Carrot.setup(_appId, _apiKey, appGroup: _appGroup);
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  await FirebaseMessaging.instance.setAutoInitEnabled(true);

  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  String? token = await FirebaseMessaging.instance.getToken();
  if (token != null) {
    await Carrot.sendFcmToken(token);

    FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
      bool isCarrotPush = Carrot.isCarrotQuestPush(message.data);
      if (isCarrotPush) {
        Carrot.sendFirebasePushNotification(message.data);
      }
    });
  }
}

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

1 回复

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


当然,以下是一个Flutter项目中集成并使用carrotquest_sdk插件的代码示例。假设你已经在pubspec.yaml文件中添加了carrotquest_sdk依赖,并且已经运行了flutter pub get

1. 在pubspec.yaml中添加依赖

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

2. 初始化插件并配置(例如在main.dart文件中)

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

void main() {
  runApp(MyApp());
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  CarrotQuestSdk? carrotQuestSdk;

  @override
  void initState() {
    super.initState();
    initCarrotQuestSdk();
  }

  void initCarrotQuestSdk() async {
    // 初始化CarrotQuest SDK
    carrotQuestSdk = CarrotQuestSdk(
      apiKey: 'YOUR_API_KEY',  // 替换为你的API Key
      userId: 'USER_ID',       // 替换为你的用户ID
      environment: 'production' // 或 'development'
    );

    // 检查SDK是否初始化成功
    try {
      await carrotQuestSdk!.initialize();
      print('CarrotQuest SDK initialized successfully');
    } catch (e) {
      print('Failed to initialize CarrotQuest SDK: $e');
    }
  }

  void trackEvent() async {
    // 示例:跟踪一个事件
    try {
      await carrotQuestSdk!.trackEvent(
        eventName: 'user_login',
        properties: {
          'method': 'email',
          'success': true,
        },
      );
      print('Event tracked successfully');
    } catch (e) {
      print('Failed to track event: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter CarrotQuest SDK Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Press the button to track an event',
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: trackEvent,
              child: Text('Track Event'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 注意事项

  • API Key和用户ID:请确保在初始化CarrotQuestSdk时,使用你实际的API Key和用户ID。
  • 环境配置:根据你的需求选择productiondevelopment环境。
  • 事件跟踪:在trackEvent方法中,你可以根据需要自定义事件名称和属性。

4. 运行项目

确保你已经正确配置了Flutter开发环境,然后在终端中运行以下命令:

flutter run

这个示例展示了如何在Flutter项目中集成并使用carrotquest_sdk插件来跟踪事件。如果你有更具体的需求,比如处理用户会话、设置自定义属性等,可以查阅carrotquest_sdk的官方文档,根据提供的API进行更详细的实现。

回到顶部