我的联系方式
邮箱mesophia@protonmail.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
В эпоху мобильного Интернета функция обмена мгновенными сообщениями (IM) является неотъемлемой частью многих приложений. Однако при разработке приложений для обмена мгновенными сообщениями разработчики часто сталкиваются с трудным выбором: разрабатывать отдельные приложения для каждой платформы или делать это отдельно. разработать ограниченную разработку для определенной платформы? Появление uni-app дает эффективный ответ на эту проблему. Благодаря своей концепции «напиши один раз, запусти на нескольких терминалах», uni-app обеспечивает беспрецедентное удобство для разработчиков.
uni-app — это фреймворк для разработки всех интерфейсных приложений на базе Vue.js. Он поддерживает одновременную компиляцию для iOS, Android, Web и различных небольших программных платформ с помощью набора кодов. Эта модель разработки «напиши один раз, запусти на нескольких терминалах» не только значительно повышает эффективность разработки, но и снижает затраты на обслуживание. Функции быстрой итерации и горячего обновления позволяют приложениям быстро реагировать на потребности рынка и пользователей и оставаться конкурентоспособными.
Эта статья будет основана наNetEase Yunxin IM SDK для единого приложенияВ качестве основы мы научим вас, как интегрировать возможности общения в чате в проект uni-app.
После завершения подготовительных работ, чтобы гарантировать корректное и стабильное взаимодействие SDK с серверными сервисами NetEase Yunxin, нам необходимо выполнить операции инициализации.
В ходе этого процесса SDK выполнит ряд подготовительных действий, таких как загрузка необходимых ресурсов, установка соединения с сервером, проверка личности приложения и т. д. Только после успешной инициализации SDK ваше приложение сможет использовать различные функции, предоставляемые SDK, такие как отправка и получение сообщений, управление сеансами пользователей и т. д.
Шаги инициализации:
Пример кода:
import Nim from '@path/to/nim-sdk.js';
// 初始化SDK
Nim.init({
appKey: 'YOUR_APP_KEY' // 替换为你的App Key
});
// 用户登录函数
async function login(accid, password) {
try {
// 调用SDK登录接口获取accessToken
let loginResult = await Nim.login({
accid: accid,
password: password,
rememberMe: true
});
// 存储accessToken到本地(这里使用uni-app的API)
uni.setStorageSync('accessToken', loginResult.accessToken);
console.log('登录成功', loginResult);
// 成果:用户登录成功,accessToken已被存储,可以进行后续的IM操作
} catch (error) {
console.error('登录失败', error);
// 处理登录失败的情况,例如提示用户重新输入账号密码或检查网络状态
}
}
// 调用登录函数(这里只是示例,实际开发中你需要从用户输入或其他地方获取accid和password)
login('testUser', 'password123');
// 调用login函数后,将尝试使用提供的accid和password登录,并处理登录结果
После завершения инициализации нам необходимо выполнить основные действия по реализации функции обмена мгновенными сообщениями, которая предполагает установление, управление и запрос дружеских отношений между пользователями. С помощью этих операций пользователи могут легко приглашать других пользователей присоединиться к их кругу общения и управлять отношениями с друзьями:
(1) Добавить друзей: это достигается путем вызова интерфейса добавления друзей SDK.
let accessToken = uni.getStorageSync('accessToken');
// 添加好友函数
async function addFriend(userId, friendId) {
try {
// 检查accessToken是否有效
if (!accessToken) {
console.error('accessToken无效或不存在');
return;
}
// 调用SDK添加好友接口
let result = await Nim.friend.add({
fromAccid: userId, // 当前用户ID
toAccid: friendId, // 目标用户ID
msg: '添加你为好友', // 邀请消息
}, accessToken);
console.log('添加好友结果', result);
// 成果:如果成功,result将包含添加好友操作的响应信息
} catch (error) {
console.error('添加好友失败', error);
// 处理添加好友失败的情况,例如提示用户检查网络或重新尝试
}
}
// 调用添加好友函数(这里只是示例,实际开发中你需要从用户输入或其他地方获取userId和friendId)
addFriend('currentUser', 'targetUser');
// 调用addFriend函数后,将尝试添加指定的friendId为好友,并处理结果
(2) Удаление друзей: это достигается путем вызова интерфейса удаления друзей SDK.
let accessToken = uni.getStorageSync('accessToken');
// 删除好友函数
async function deleteFriend(userId, friendId) {
try {
// 检查accessToken是否有效
if (!accessToken) {
console.error('accessToken无效或不存在');
return;
}
// 调用SDK删除好友接口
let result = await Nim.friend.delete({
fromAccid: userId, // 当前用户ID
toAccid: friendId, // 目标用户ID
}, accessToken);
console.log('删除好友结果', result);
// 成果:如果成功,result将包含删除好友操作的响应信息
// 根据返回结果更新本地好友列表(如果需要)
} catch (error) {
console.error('删除好友失败', error);
// 处理删除好友失败的情况,例如提示用户检查网络或重新尝试
}
}
// 调用删除好友函数(这里只是示例,实际开发中你需要从用户列表或其他地方获取userId和friendId)
deleteFriend('currentUser', 'targetUser');
// 调用deleteFriend函数后,将尝试删除指定的friendId为好友,并处理结果
(3) Получение списка друзей. Это достигается путем вызова интерфейса SDK для получения списка друзей.
let accessToken = uni.getStorageSync('accessToken');
// 获取好友列表函数
async function getFriendList(userId) {
try {
// 检查accessToken是否有效
if (!accessToken) {
console.error('accessToken无效或不存在');
return;
}
// 调用SDK获取好友列表接口
let result = await Nim.friend.getFriendList({
accid: userId, // 当前用户ID
}, accessToken);
console.log('好友列表', result);
// 成果:成功获取好友列表,result将包含好友信息
// 根据返回结果更新本地好友列表(如果需要)
} catch (error) {
console.error('获取好友列表失败', error);
// 处理获取好友列表失败的情况,例如提示用户检查网络或重新尝试
}
}
// 调用获取好友列表函数(这里只需要当前用户ID)
getFriendList('currentUser');
// 调用getFriendList函数后,将尝试获取当前用户的好友列表,并处理结果
Далее мы реализуем основные возможности чата, которые включают в себя несколько шагов, таких как отправка сообщений, получение сообщений и отображение сообщений.
1. Отправьте текстовое сообщение:
// 发送文本消息函数
async function sendTextMessage(toAccid, content) {
try {
// 从本地存储中获取accessToken
let accessToken = uni.getStorageSync('accessToken');
// 检查accessToken是否有效
if (!accessToken) {
console.error('accessToken无效或不存在');
return;
}
// 调用SDK发送文本消息接口
let result = await Nim.message.sendText({
toSessionType: Nim.SESSION_TYPE_SINGLE, // 会话类型:单人会话
toAccid: toAccid, // 目标用户ID
msgBody: {
text: content // 消息内容
}
}, accessToken);
console.log('发送文本消息结果', result);
// 成果:如果成功,result将包含发送消息操作的响应信息
} catch (error) {
console.error('发送文本消息失败', error);
// 处理发送文本消息失败的情况,例如提示用户检查网络或重新发送消息
}
}
// 调用发送文本消息函数(这里只是示例,实际开发中你需要从用户输入或其他界面元素获取toAccid和content)
sendTextMessage('receiverAccid', 'Hello, this is a test message.');
// 调用sendTextMessage函数后,将尝试向指定用户发送文本消息,并处理结果
2. Получайте сообщения
Получение сообщений обычно достигается путем прослушивания событий, предоставляемых SDK. Вот пример прослушивания событий текстовых сообщений:
// 监听文本消息事件
Nim.message.on(Nim.EVENT.NEW_MSG, function(msg) {
if (msg.sessionType === Nim.SESSION_TYPE_SINGLE