本文主要介绍如何快速运行腾讯云即时通信 IM Demo(React Native)。
版本 | |
---|---|
React Native | 0.63.4 版本以上 |
Android | Android Studio 3.5 及以上版本,App 要求 Android 4.1 及以上版本设备。 |
iOS | Xcode 11.0 及以上版本,请确保您的项目已设置有效的开发者签名。 |
在 IM 控制台 选择您的应用,在左侧导航栏依次点击 辅助工具->UserSig 生成&校验 ,创建两个 UserID 及其对应的 UserSig,复制UserID
、签名(Key)
、UserSig
这三个,后续登录时会用到。
说明:该账户仅限开发测试使用。应用上线前,正确的
UserSig
签发方式是由服务器端生成,并提供面向 App 的接口,在需要UserSig
时由 App 向业务服务器发起请求获取动态UserSig
。更多详情请参见 服务端生成 UserSig。
您已经完成创建 React Native 项目,或有可以基于的 React Native 项目。
使用如下命令,安装 React Naitve IM SDK 最新版本。在命令行执行:
// npm
npm install react-native-tim-js
// yarn
yarn add react-native-tim-js
调用initSDK
,完成 SDK 初始化。将您的 sdkAppID
传入。
import { TencentImSDKPlugin, LogLevelEnum } from 'react-native-tim-js';
TencentImSDKPlugin.v2TIMManager.initSDK(
sdkAppID: 0, // Replace 0 with the SDKAppID of your IM application when integrating
loglevel: LogLevelEnum.V2TIM_LOG_DEBUG, // Log
listener: V2TimSDKListener(),
);
在本步骤,您可以针对 IM SDK 挂载一些监听,主要包括网络状态及用户信息变更等,详情可参见 该文档。
TencentImSDKPlugin.v2TIMManager.login
方法,登录一个测试账户。当返回值res.code
为 0 时,登录成功。import { TencentImSDKPlugin } from 'react-native-tim-js';
const res = await TencentImSDKPlugin.v2TIMManager.login(
userID: userID,
userSig: userSig,
);
说明:该账户仅限开发测试使用。应用上线前,正确的
UserSig
签发方式是将UserSig
的计算代码集成到您的服务端,并提供面向 App 的接口,在需要UserSig
时由您的 App 向业务服务器发起请求获取动态UserSig
。更多详情请参见 服务端生成 UserSig。
此处以发送文本消息举例,其流程为:
createTextMessage(String)
创建一个文本消息。sendMessage()
发送该 ID 的消息。receiver
可填入您此前创建的另一个测试账户 ID。发送单聊消息无需填入groupID
。代码示例:
import { TencentImSDKPlugin } from 'react-native-tim-js';
const createMessage =
await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.createTextMessage("The text to create");
const id = createMessage.data!.id!; // The message creation ID
const res = await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.sendMessage(
id: id, // Pass in the message creation ID to
receiver: "The userID of the destination user",
groupID: "The groupID of the destination group",
);
说明:如果发送失败,可能是由于您的 sdkAppID 不支持陌生人发送消息,您可至控制台开启,用于测试。
请单击此链接,关闭好友关系链检查。
在上一个步骤中,完成发送测试消息,现在可登录另一个测试账户,拉取会话列表。
获取会话列表的方式有两种:
常见应用场景为:
在启动应用程序后立即获取会话列表,然后监听长连接以实时更新会话列表的变化。
为了获取会话列表,需要维护nextSeq
,记录当前位置。
import { useState } from "react";
import { TencentImSDKPlugin } from "react-native-tim-js";
const [nextSeq, setNextSeq] = useState<string>("0");
const getConversationList = async () => {
const count = 10;
const res = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationList(count, nextSeq);
setNextSeq(res.data?.nextSeq ?? "0");
};
此时,您可以看到您在上一步中,使用另一个测试账号,发来消息的会话。
您在此步骤中,需要先在 SDK 上挂载监听,然后处理回调事件,更新 UI。
import { TencentImSDKPlugin } from "react-native-tim-js";
const addConversationListener = () => {
TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.addConversationListener({
onNewConversation: (conversationList) => {
// new conversation created callback
_onConversationListChanged(conversationList);
},
onConversationChanged: (conversationList) => {
// conversation changed callback
_onConversationListChanged(conversationList);
},
});
};
const _onConversationListChanged = (list) => {
// you can use conversation list to update UI
};
通过腾讯云 IM React Native SDK 接收消息有两种方式:
常见应用场景为:
每页拉取的消息数量不能太大,否则会影响拉取速度。建议此处设置为 20 左右。
您应该动态记录当前页数,用于下一轮请求。
示例代码如下:
import { TencentImSDKPlugin } from "react-native-tim-js";
const getGroupHistoryMessageList = async () => {
const groupID = "";
const count = 20;
const lastMsgID = "";
const res = await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.getGroupHistoryMessageList(groupID, count, lastMsgID);
const msgList = res.data ?? [];
// here you can use msgList to render your message list
};
历史消息列表初始化后,新消息来自长链接 V2TimAdvancedMsgListener.onRecvNewMessage
。
onRecvNewMessage
回调被触发后,您可以按需将新消息添加进历史消息列表中。
绑定监听器示例代码如下:
import { TencentImSDKPlugin } from "react-native-tim-js";
const adVancesMsgListener = {
onRecvNewMessage: (newMsg) => {
_onReceiveNewMsg(newMsg);
/// ... other listeners related to message
},
};
const addAdvancedMsgListener = () => {
TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.addAdvancedMsgListener(adVancesMsgListener);
};
此时,您已基本完成 IM 模块开发,可以发送接收消息,也可以进入不同的会话。
您可以继续完成群组,用户资料,关系链,离线推送,本地搜索等相关功能开发,详情可参见 SDK API 文档。
Undefined symbols for architecture x86_64 [duplicate]
如何解决?请参见 文档。
Failed to resolve: react-native-0.71.0-rc.0-debug
如何解决?请参见 文档。
本页内容是否解决了您的问题?