Flutter聊天集成插件flutter_termii的使用

Flutter聊天集成插件flutter_termii的使用

pub package License: MIT style: very good analysis


一个帮助开发者在Flutter应用中使用消息通道来验证和认证客户交易的插件。

Android iOS Linux macOS Web Windows
支持 任何版本 任何版本 任何版本 任何版本 任何版本 任何版本

特性

使用此插件在你的Flutter应用中可以:

  • 发送消息
  • 发送批量消息
  • 发送验证码
  • 发送语音验证码
  • 进行语音通话
  • 生成应用内验证码
  • 验证验证码
  • 查看余额

开始使用

为了使用Termii的APIs,你需要首先在www.termii.com上免费创建一个账户。

基础URL

你的Termii账户有一个自己的基础URL,你应该在所有API请求中使用它。下面展示的基础URL是一个示例。你可以在你的仪表盘上找到你的基础URL。

获取API密钥

你可以从你的仪表盘设置中获取API密钥。

使用方法

要使用此插件,将flutter_termii作为依赖项添加到你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  flutter_termii:

以下是一个简单的示例代码:

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

final termii = Termii(
  url: 'https://api.ng.termii.com',
  apiKey: 'YOUR API KEY',
  senderId: 'CompanyName',
);

final responseData = await termii.sendSms(
  destination: "2349012672787",
  message: "This is a test message",
);

print(responseData);

完整示例代码

以下是在Flutter应用中使用flutter_termii插件的完整示例代码:

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Termii',
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}

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

  [@override](/user/override)
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final _formKey = GlobalKey<FormState>();
  final _phonenumberController = TextEditingController();

  // 使用有效的基础URL和API密钥进行身份验证
  final termii = Termii(
    url: 'https://api.ng.termii.com',
    apiKey: 'YOUR API KEY',
    senderId: 'CompanyName',
  );

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Form(
          key: _formKey,
          child: Padding(
            padding: const EdgeInsets.all(10.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                TextFormField(
                  controller: _phonenumberController,
                  decoration: const InputDecoration(
                    contentPadding: EdgeInsets.symmetric(
                      vertical: 8.0,
                      horizontal: 12.0,
                    ),
                    border: OutlineInputBorder(),
                  ),
                ),
                const SizedBox(
                  height: 20,
                ),
                SizedBox(
                  width: double.infinity,
                  height: 60,
                  child: TextButton(
                    onPressed: _submit,
                    style: TextButton.styleFrom(
                      backgroundColor: Colors.blue,
                      primary: Colors.white,
                    ),
                    child: const Text('提交'),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  _submit() async {
    // destination/手机号码必须以国际格式(例如:23490126727)。
    final responseData = await termii.sendSms(
      destination: _phonenumberController.text,
      message: "This is working",
    );

    final bulkResponseData = await termii.sendBulkSms(
      multipleDestinations: ["23490555546", "23423490126999", "23490555546"],
      message: "This is working for multiple numbers",
      // channel 是消息发送的途径。它可以是dnd、whatsapp或generic(默认)
      channel: "whatsapp",
    );

    final tokenResponseData = await termii.sendToken(
      destination: _phonenumberController.text,
      pinAttempts: 2, // 2次
      // pinExpiryTime 表示PIN码的有效期,单位为分钟。最小值为0,最大值为60
      pinExpiryTime: 2, // 2分钟
      pinLength: 6,
      // 在发送消息之前,PIN码占位符将被生成的PIN码替换。
      pinPlaceholder: "< 1234 >",
      messageText: "Your pin is < 1234 >",
      messageType: MessageType.numeric,
      pinType: MessageType.numeric,
    );

    final inAppTokenResponseData = await termii.generateInAppToken(
      destination: _phonenumberController.text, // 示例:2349012672789
      pinAttempts: 6, // 6次
      pinExpiryTime: 5, // 5分钟
      pinLength: 3,
      pinType: MessageType.numeric,
    );

    final verifyTokenResponseData = await termii.verifyToken(
      pinId: "c8dcd048-5e7f-4347-8c89-4470c3af0b",
      pin: "195558",
    );

    final searchResponseData = await termii.searchPhoneNumber(
      phoneNumber: _phonenumberController.text,
    );

    print(responseData);
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用flutter_termii插件来创建聊天功能的示例代码。flutter_termii是一个用于Flutter的聊天UI库,可以方便地集成到应用中。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_termii: ^latest_version  # 请替换为最新版本号

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

2. 导入包

在你的主Dart文件中(通常是main.dart),导入flutter_termii包:

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

3. 配置和初始化Termii

main.dart中配置和初始化Termii聊天界面。这里假设你已经有一个后端服务来提供聊天数据。

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

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

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  TermiiController termiiController;

  @override
  void initState() {
    super.initState();
    termiiController = TermiiController(
      // 替换为你的后端API端点
      baseUrl: 'https://your-backend-api.com/api',
      userId: 'user_123', // 当前用户的ID
      socketUrl: 'wss://your-websocket-url', // WebSocket URL
      onConnected: () {
        print('Connected to the chat server');
      },
      onMessageReceived: (message) {
        print('New message received: ${message.body}');
      },
      onTyping: (typingUser) {
        print('User ${typingUser.userId} is typing...');
      },
      onError: (error) {
        print('Error: $error');
      },
    );
  }

  @override
  void dispose() {
    termiiController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat'),
      ),
      body: TermiiWidget(
        controller: termiiController,
        inputFieldPlaceholder: 'Type a message...',
        sendButtonIcon: Icons.send,
        onSendPressed: (message) async {
          // 发送消息前可以添加自定义逻辑
          await termiiController.sendMessage(message);
        },
      ),
    );
  }
}

4. 运行应用

确保你的后端服务正在运行,并且API端点和WebSocket URL是可访问的。然后运行你的Flutter应用:

flutter run

注意事项

  1. 后端服务flutter_termii依赖于后端服务来获取和发送聊天消息。你需要确保后端服务能够处理这些请求,并且返回正确的数据格式。
  2. 身份验证:在实际应用中,你可能需要添加身份验证逻辑,以确保用户只能访问他们有权访问的聊天数据。
  3. 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,以提高应用的健壮性。

这个示例代码展示了如何在Flutter应用中集成flutter_termii插件来创建一个简单的聊天界面。根据你的具体需求,你可能需要进一步自定义和扩展这个示例。

回到顶部