Flutter签名调用与数据分析插件clevertap_signedcall_flutter的使用

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

Flutter签名调用与数据分析插件clevertap_signedcall_flutter的使用

CleverTap Signed Call Flutter SDK

pub package GitHub Release

👋 简介

CleverTap的Signed Call Flutter SDK 提供了移动应用内的通话服务,如果设备具有互联网连接并且安装了Signed Call Flutter SDK,则可以实现通话功能。

更多关于Signed Call功能的信息,请参阅 Signed Call文档

要开始使用,请在此处 注册

🚀 安装与快速入门

  1. 要将 CleverTap Signed Call Flutter SDK 添加到您的项目,请编辑项目的 pubspec.yaml 文件:
dependencies:
  clevertap_signedcall_plugin: 0.0.7
  1. 运行 flutter pub get 来安装SDK。

  2. 现在,可以在Dart代码中使用:

import 'package:clevertap_signedcall_flutter/plugin/clevertap_signedcall_flutter.dart';

📑 文档与示例

  1. 查看我们的 技术文档 以了解如何将Signed Call集成到您的Flutter应用中。
  2. 查看我们的 示例Flutter项目

🆕 更新日志

请参阅 Signed Call Flutter SDK更新日志

❓ 问题

如果您有任何问题或疑虑,可以通过CleverTap仪表板联系CleverTap支持团队。


示例代码

以下是示例代码,位于 example/lib/main.dart

import 'dart:async';

import 'package:clevertap_signedcall_flutter/models/call_event_result.dart';
import 'package:clevertap_signedcall_flutter/models/call_events.dart';
import 'package:clevertap_signedcall_flutter/models/call_state.dart';
import 'package:clevertap_signedcall_flutter/models/log_level.dart';
import 'package:clevertap_signedcall_flutter/models/missed_call_action_click_result.dart';
import 'package:clevertap_signedcall_flutter/plugin/clevertap_signedcall_flutter.dart';
import 'package:clevertap_signedcall_flutter_example/pages/dialler_page.dart';
import 'package:clevertap_signedcall_flutter_example/route_generator.dart';
import 'package:flutter/material.dart';

import 'Utils.dart';

[@pragma](/user/pragma)('vm:entry-point')
void backgroundCallEventHandler(CallEventResult result) async {
  debugPrint(
      "CleverTap:SignedCallFlutter: backgroundCallEventHandler called from headless task with payload1: $result");
  Utils.showToast("${result.callEvent} is called!" );

  getCallState().then((value) => {
    debugPrint(
        "CleverTap:SignedCallFlutter: CallState in killed state is: => $value")
  });
}

[@pragma](/user/pragma)('vm:entry-point')
void backgroundMissedCallActionClickedHandler(
    MissedCallActionClickResult result) async {
  debugPrint(
      "CleverTap:SignedCallFlutter: backgroundMissedCallActionClickedHandler called from headless task with payload: $result");
  Utils.showToast("${result.action.actionLabel} is clicked!" );
}

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  CleverTapSignedCallFlutter.shared
      .onBackgroundCallEvent(backgroundCallEventHandler);
  CleverTapSignedCallFlutter.shared.onBackgroundMissedCallActionClicked(
      backgroundMissedCallActionClickedHandler);
  runApp(const MyApp());
}

Future<SCCallState?> getCallState() async {
  SCCallState? callState =
  await CleverTapSignedCallFlutter.shared.getCallState();
  return callState;
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late StreamSubscription<CallEventResult>? _callEventSubscription;
  late StreamSubscription<MissedCallActionClickResult>?
      _missedCallActionClickEventSubscription;
  static const int _callMeterDurationInSeconds = 15;

  [@override](/user/override)
  void initState() {
    super.initState();

    // 启用Signed Call插件的详细调试
    CleverTapSignedCallFlutter.shared.setDebugLevel(LogLevel.verbose);
    setup();
  }

  void setup() {
    _startObservingCallEvents();
    _startObservingMissedCallActionClickEvent();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      onGenerateRoute: RouteGenerator.generateRoute,
    );
  }

  // 监听实时的通话事件流
  void _startObservingCallEvents() {
    _callEventSubscription =
        CleverTapSignedCallFlutter.shared.callEventListener.listen((result) {
      getCallState().then((value) => {
            debugPrint(
                "CleverTap:SignedCallFlutter: Current CallState is: => $value")
          });

      debugPrint(
          "CleverTap:SignedCallFlutter: received callEvent stream with ${result.toString()}");
      var callDetails = result.callDetails;
      var callId = callDetails.callId;
      var channel = callDetails.channel;

      Utils.showToast("${callId?.substring(0, 3)}, ${channel.toString()}, ${result.callEvent.toString()} is called!");
      if (result.callEvent == CallEvent.callInProgress) {
        //_startCallDurationMeterToEndCall();
      }
    });
  }

  // 监听未接来电操作点击事件
  void _startObservingMissedCallActionClickEvent() {
    _missedCallActionClickEventSubscription = CleverTapSignedCallFlutter
        .shared.missedCallActionClickListener
        .listen((result) {
      debugPrint(
          "CleverTap:SignedCallFlutter: received missedCallActionClickResult stream with ${result.toString()}");
      Utils.showToast("${result.action.actionLabel} is clicked!" );

      Navigator.pushNamed(context, DiallerPage.routeName);
    });
  }

  // 启动计时器并在计时器结束时挂断正在进行的通话
  void _startCallDurationMeterToEndCall() {
    Timer(const Duration(seconds: _callMeterDurationInSeconds), () {
      CleverTapSignedCallFlutter.shared.hangUpCall();
    });
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
    _callEventSubscription?.cancel();
    _missedCallActionClickEventSubscription?.cancel();
  }
}

更多关于Flutter签名调用与数据分析插件clevertap_signedcall_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter签名调用与数据分析插件clevertap_signedcall_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中集成并使用clevertap_signedcall_flutter插件来进行签名调用和数据分析的示例代码。这个插件通常用于与CleverTap后端服务进行安全的数据交互。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加clevertap_signedcall_flutter依赖:

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

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

2. 配置CleverTap

在你的Flutter应用的入口文件(通常是main.dart)中,配置CleverTap。你需要提供你的CleverTap账户信息,例如账户ID和密钥。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化CleverTap
  CleverTapSignedCallFlutter.instance.initialize(
    accountId: '你的CleverTap账户ID',
    secretKey: '你的CleverTap密钥',
    region: '你的CleverTap区域', // 例如 'us' 或 'eu'
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('CleverTap Signed Call Example'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
      ),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        // 发送事件到CleverTap
        sendEventToCleverTap();
      },
      child: Text('Send Event to CleverTap'),
    );
  }

  void sendEventToCleverTap() async {
    try {
      // 创建一个事件
      Map<String, dynamic> eventData = {
        'event_name': 'user_action',
        'event_properties': {
          'action': 'button_clicked',
          'button_label': 'Send Event',
        },
      };

      // 签名并发送事件
      String signedCallResponse = await CleverTapSignedCallFlutter.instance.sendSignedCall(
        eventName: eventData['event_name'],
        eventData: eventData['event_properties'],
      );

      print('Signed Call Response: $signedCallResponse');
    } catch (e) {
      print('Error sending event to CleverTap: $e');
    }
  }
}

3. 运行应用

确保你已经正确配置了CleverTap账户信息,然后运行你的Flutter应用。点击按钮时,应用将生成一个签名的事件并发送到CleverTap。

注意事项

  • 安全性:确保你的CleverTap密钥和账户信息不会硬编码在客户端代码中,特别是在生产环境中。可以考虑使用环境变量或安全的密钥管理服务。
  • 事件数据:根据你的业务需求调整事件名称和属性。
  • 错误处理:在生产环境中,添加更详细的错误处理和日志记录。

这个示例展示了如何在Flutter应用中集成clevertap_signedcall_flutter插件,并通过它发送签名的事件到CleverTap进行分析。根据你的具体需求,你可能需要调整或扩展这个示例。

回到顶部