Flutter签名调用与数据分析插件clevertap_signedcall_flutter的使用
Flutter签名调用与数据分析插件clevertap_signedcall_flutter的使用
CleverTap Signed Call Flutter SDK
👋 简介
CleverTap的Signed Call Flutter SDK 提供了移动应用内的通话服务,如果设备具有互联网连接并且安装了Signed Call Flutter SDK,则可以实现通话功能。
更多关于Signed Call功能的信息,请参阅 Signed Call文档。
要开始使用,请在此处 注册。
🚀 安装与快速入门
- 要将 CleverTap Signed Call Flutter SDK 添加到您的项目,请编辑项目的
pubspec.yaml
文件:
dependencies:
clevertap_signedcall_plugin: 0.0.7
-
运行
flutter pub get
来安装SDK。 -
现在,可以在Dart代码中使用:
import 'package:clevertap_signedcall_flutter/plugin/clevertap_signedcall_flutter.dart';
📑 文档与示例
- 查看我们的 技术文档 以了解如何将Signed Call集成到您的Flutter应用中。
- 查看我们的 示例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
更多关于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进行分析。根据你的具体需求,你可能需要调整或扩展这个示例。