Flutter插件robin_flutter的使用方法详解

Flutter插件robin_flutter的使用方法详解

Overview

需要为您的新应用或现有Flutter应用添加即时通讯功能吗?在本文中,我们将探讨如何使用Flutter实现Robin SDK。我们将使用一个示例Flutter应用程序进行演示。

💡 Flutter 是由Google管理的框架,用于构建原生编译的跨平台应用程序。本指南假定您了解如何使用Flutter构建跨平台应用程序。如果您需要快速复习,请随时查看 这里


Pre-requisites

在开始向我们的Flutter应用添加即时通讯功能之前,您需要具备以下条件:

  1. 首先,您需要一个 Robin账户,可以通过在 dashboard.robinapp.co/ 注册来创建。
  2. 创建Robin账户后,您需要创建一个 Robin应用,成功注册后会提示您创建第一个Robin应用。
  3. 最后,确保您的机器上已安装Flutter。

如果您已经准备好上述所有内容,我们可以开始了。

ℹ️ 想查看完整的代码设置?可以在这里查看:Notion文档


The Robin App

Robin 被设计用于多种通信场景,这意味着您可以创建多个应用以利用您的Robin账户的所有功能,并且每个应用之间有明确的职责分离。这就是我们所说的 Robin App 的来源。

完全认证的Robin App确保所有通信在传输过程中完全加密,这样即使您(拥有Robin账户的人)或Robin也无法看到通信频道中的消息。而受监管的Robin App允许您查看通信内容但不设置任何加密机制。


Project Setup

Minimum Supported Platforms

Android iOS
Support SDK 19+ 11.0+

Create Flutter Application

导航到您希望的文件夹并创建一个新的Flutter项目,我们将其命名为 robin_test_app

flutter create robin_test_app

Add Robin Flutter SDK to your Flutter application

打开任意IDE中的 robin_test_app 应用程序,并通过将 robin_flutter 包添加到项目的 pubspec.yaml 文件中来添加Robin Flutter SDK。

dependencies:
  robin_flutter: ^version-number

然后在终端中运行以下命令:

flutter pub get

Permissions

Robin 需要您在 AndroidManifest.xmlinfo.plist 文件中请求对资源的权限。

iOS Permissions

您的 info.plist 文件位于 <project root>/ios/Runner/Info.plist

<key>NSPhotoLibraryUsageDescription</key>
<string>解释为什么您的应用需要访问照片库权限</string>

<key>NSCameraUsageDescription</key>
<string>解释为什么您的应用需要访问摄像头权限</string>

<key>NSMicrophoneUsageDescription</key>
<string>解释为什么您的应用需要访问麦克风权限</string>

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>https</string>
  <string>http</string>
</array>

Android Permissions

您的 AndroidManifest.xml 文件位于 <project root>/android/app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<queries>
	<intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="https" />
  </intent>
	<intent>
    <action android:name="android.intent.action.SEND" />
    <data android:mimeType="*/*" />
  </intent>
</queries>

Connect Flutter App to Robin

现在,您已经创建了一个 Robin账户、一个 Robin应用 和一个 Flutter应用。接下来,我们将使用Flutter SDK将Flutter应用连接到Robin仪表板。

为了在Flutter上使用Robin,需要以下几项内容:

  • 您的Robin应用的API密钥。
  • 当前用户的相关信息。
  • 用户模型中的键值。
  • 一个回调函数以获取平台上的所有可用用户。

Robin App API Key

我们将使用此演示的API密钥。您可以在Robin用户仪表板的 API Configurations 页面获取自己的API密钥。

获取API密钥后,将其存储为常量 apiKey,以便在整个代码库中轻松引用。

final String apiKey = '/* YOUR API KEY */';

您现在可以导入Robin SDK到您的文件中:

import 'package:robin_flutter/robin_flutter.dart';

Information of Logged In User

Robin需要某些有关当前用户的信息,这些信息将用于个性化用户在使用Robin时的体验。

  1. 用户的名称:这是您希望在此用户在Robin中显示的名称。
  2. 用户的Robin令牌:这是Robin用来唯一标识每个用户的标识符。当用户首次注册您的平台时应创建它;如果已有现有用户,则应在数据库中更新用户信息以包含Robin令牌。
Create Robin Tokens for Users

metadata 是一组键值对,帮助Robin知道为哪个用户创建Robin令牌。metadata Map可以包含您希望共享的关于用户的所有信息;例如,用户的全名、电话号码或电子邮件地址。

Map<String, dynamic> metadata = {
	"firstName": user.firstName,
	"lastName": user.lastName,
	"emailAddress": user.email,
	...
};
final String robinToken = await RobinCore.createUserToken(apiKey, metaData);

在添加了您的 metadata 对象后,您可以使用 createUserToken 方法并通过提供API密钥和用户的元数据来为该用户创建 robinToken

现在,我们已经有了当前用户的姓名及其 robinToken,我们可以创建 RobinCurrentUser,以便SDK能够识别当前登录的用户。

RobinCurrentUser currentUser = RobinCurrentUser(
  robinToken: robinToken,
  fullName: userFullName,
);

Users on your Robin Chat Application

Getting all Users for Robin Chat

为了使用Robin聊天功能为特定的一组人服务,您需要创建一个返回这些人身份的函数,理想情况下,它可以是您平台上的所有用户,但您可以限制为符合您目标的任何内容,例如平台上的所有版主或管理员。

此函数应该返回一个 List<Map>,其结构可能类似于以下代码片段。

List<Map> getAllUsers() async {
	http.Response response = await http.get(
	    Uri.parse('https://my-url.com/api/v1/users'),
	    headers: {
	      "Content-Type": "application/json",
	    },
	  );
      final String res = response.body;
      final int statusCode = response.statusCode;
      return _decoder.convert(res)['users'];
}

最终,您的函数应该返回类似以下代码片段的类型和结构。下面的片段是一个具有 emailAddressfullNamerobinToken 字段的 Map 对象列表。

[
	{
		emailAddress: "johndoe@mail.com",
		fullName: "John Doe",
		robinToken: "BLAaUGurGvTewxIGKKrVANhn",
		...
	},
	{
		emailAddress: "janedoe@mail.com",
		fullName: "Jane Doe",
		robinToken: "BLAaUGurGvTewxIGKKrVANhn",
		...
	},
	...
]
Parse Robin Chat Users

在成功获取所有希望用于Robin聊天应用的用户之后,Robin Flutter SDK要求我们解析 List<Map> 形式的用户。我们通过使用 RobinKeys 来完成此操作;RobinKeys 告诉SDK在哪里查找用户对象中的Robin令牌、全名和其他所需字段/键。

对于Robin Flutter聊天SDK,为了使应用中的每个人都能无缝地进行聊天,需要提供用户的 令牌、他们的 显示名称 和一个 分隔符 来创建 RobinKeys 对象。

User Robin Token

robinToken 接受一个字符串列表 List<String>,其中列表中的每个字符串表示在对象点符号表示法中引用的字段。本质上,您输入的是Robin必须经过的所有键/字段,以便在用户对象中找到Robin令牌。

例如,如果您的用户模型看起来像这样:

[{
		"emailAddress": "johndoe@mail.com",
		"fullName": "John Doe",
		"robinDetails": {
			"token": "BLAaUGurGvTewxIGKKrVANhn"
		},...
	},...
]

您的 robinToken 值将是 ["robinDetails", "token"],因为我们首先需要访问 robinDetails 键,然后才能访问 token 键以获取其值。

User Display Name

displayName 类似于 robinToken,但它接受一个字符串列表的列表 List<List<String>>。这是因为您可能想要连接不同的值,例如 firstNamelastName。您输入的是Robin必须经过的所有键,以便在每个单独的列表中找到某个值。

例如,如果您的用户模型看起来像这样:

[{
		"emailAddress": "johndoe@mail.com",
		"firstName": "John",
		"lastName": "Doe",
		...
	},...
]

您的 displayName 值将是 [["firstName"],["lastName"],],以显示“John Doe”。

或者,如果您的用户模型看起来像这样:

[
	{
		"emailAddress": "johndoe@mail.com",
		"firstName": "John",
		"lastName": "Doe",
		"userDetails": {
			"middleName": "Clay",
			"address": ...,
			}
		...
	},
	...
]

您的 displayName 值将是 [["firstName"],["userDetails", "middleName"],["lastName"],以显示“John Clay Doe”。

User Separator

默认情况下,displayName 的值由空格分隔,即 " "。但是,您可以选择性地添加任何您希望使用的字符串作为分隔符。

Instantiate Robin Keys

最后,您的 RobinKeys 应该看起来像这样。

RobinKeys keys =  RobinKeys(
  robinToken: ['robinToken'],
  displayName: [
    ['firstName'],['lastName']
  ],
	separator: " "
);

Create Robin App Instance

现在,我们已经拥有了启动Robin所需的全部内容。您可以根据自己的喜好进行操作;您可以使用Navigator将新屏幕推入以使聊天占据整个页面,或者您可以将其设置为底部导航栏中的子项之一。

无论如何,您在Flutter应用程序中实例化Robin的代码应该看起来像这样:

Robin(
  apiKey: apiKey,
  getUsers: getAllUsers,
  currentUser: currentUser,
  keys: keys,
);

这将是全部!您的用户可以开始使用Robin及其所有功能互相聊天。


Your full setup code should look like this

总之,在以上步骤之后,Robin应用的整个设置和初始化将采取这种形式。

final String apiKey = '/* YOUR API KEY */';

/* CREATE ROBIN CURRENT USER FOR SDK IDENTIFICATION */
RobinCurrentUser currentUser = RobinCurrentUser(
  robinToken: robinToken,
  fullName: userFullName,
);

/* GET ALL USERS FOR ROBIN CHAT */
List<Map> getAllUsers() async {
	http.Response response = await http.get(
	    Uri.parse('https://my-url.com/api/v1/users'),
	    headers: {
	      "Content-Type": "application/json",
	    },
	  );
	  final String res = response.body;
	  final int statusCode = response.statusCode;
	  return _decoder.convert(res)['users'];
}

/*  */
RobinKeys keys =  RobinKeys(
  robinToken: ['robinToken'],
  displayName: [
    ['firstName'],['lastName']
  ],
	separator: " "
);

/* CREATE ROBIN INSTANCE */
Robin(
  apiKey: apiKey,
  getUsers: getAllUsers,
  currentUser: currentUser,
  keys: keys,
);

更多关于Flutter插件robin_flutter的使用方法详解的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件robin_flutter的使用方法详解的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


robin_flutter 是一个未知的 Flutter 插件,可能是一个第三方插件或者你自己创建的插件。由于它不是一个广泛使用的插件,因此没有官方的文档或社区支持。为了探索和使用这个插件,你可以按照以下步骤进行:

1. 查找插件的源代码和文档

首先,尝试找到 robin_flutter 插件的源代码和文档。你可以通过以下方式查找:

  • GitHub: 在 GitHub 上搜索 robin_flutter,看看是否有相关的仓库。
  • Pub.dev: 在 pub.dev 上搜索 robin_flutter,看看是否有相关的插件包。
  • 其他代码托管平台: 如果在 GitHub 和 pub.dev 上找不到,可以尝试在其他代码托管平台如 GitLab、Bitbucket 等搜索。

2. 阅读插件的 README 文件

如果找到了插件的源代码,通常会有一个 README.md 文件,里面包含了插件的基本介绍、使用方法和示例代码。仔细阅读这个文件,了解插件的主要功能和用法。

3. 检查插件的 pubspec.yaml 文件

插件的 pubspec.yaml 文件包含了插件的依赖、版本信息和其他元数据。你可以通过这个文件了解插件的依赖关系,以及它是否与其他 Flutter 插件兼容。

4. 导入插件到你的 Flutter 项目

pubspec.yaml 文件中添加 robin_flutter 插件的依赖项。例如:

dependencies:
  flutter:
    sdk: flutter
  robin_flutter: ^1.0.0  # 使用实际的版本号
回到顶部