2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Di era Internet seluler, fungsi pesan instan (IM) merupakan bagian tak terpisahkan dari banyak aplikasi. Namun, saat mengembangkan aplikasi pesan instan, pengembang sering kali dihadapkan pada pilihan sulit: apakah akan mengembangkan aplikasi terpisah untuk setiap platform, atau justru mengembangkannya mengembangkan pengembangan terbatas untuk platform tertentu. Kemunculan uni-app memberikan jawaban efisien terhadap permasalahan ini. Dengan konsep "tulis sekali, jalankan di banyak terminal", uni-app menghadirkan kenyamanan yang belum pernah ada sebelumnya bagi pengembang.
uni-app adalah kerangka kerja untuk mengembangkan semua aplikasi front-end berdasarkan Vue.js. Ini mendukung kompilasi simultan ke iOS, Android, Web dan berbagai platform program kecil melalui serangkaian kode. Model pengembangan "tulis sekali, jalankan di banyak terminal" ini tidak hanya meningkatkan efisiensi pengembangan secara signifikan, namun juga mengurangi biaya pemeliharaan. Fungsi iterasi cepat dan pembaruan terbaru memungkinkan aplikasi merespons kebutuhan pasar dan pengguna dengan cepat dan tetap kompetitif.
Artikel ini akan didasarkan padaSDK uni-aplikasi NetEase Yunxin IMSebagai dasar, kami akan mengajari Anda cara mengintegrasikan kemampuan percakapan obrolan dalam proyek uni-app.
Setelah menyelesaikan pekerjaan persiapan, untuk memastikan bahwa SDK dapat berinteraksi dengan benar dan stabil dengan layanan back-end NetEase Yunxin, kita perlu melakukan operasi inisialisasi.
Selama proses ini, SDK akan melakukan serangkaian persiapan, seperti memuat sumber daya yang diperlukan, membuat koneksi dengan server, memverifikasi identitas aplikasi, dll. Hanya ketika SDK berhasil diinisialisasi, aplikasi Anda dapat menggunakan berbagai fungsi yang disediakan oleh SDK, seperti mengirim dan menerima pesan, mengelola sesi pengguna, dll.
Langkah-langkah inisialisasi:
Contoh kode:
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登录,并处理登录结果
Setelah inisialisasi selesai, kita perlu menyelesaikan tindakan dasar untuk mengimplementasikan fungsi pesan instan, yang melibatkan pembentukan, pengelolaan, dan kueri hubungan pertemanan antar pengguna. Melalui operasi ini, pengguna dapat dengan mudah mengundang pengguna lain untuk bergabung dengan lingkaran sosialnya dan mengelola hubungan pertemanannya:
(1) Tambahkan teman: Ini dicapai dengan memanggil antarmuka tambahkan teman di 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) Hapus teman: Hal ini dicapai dengan memanggil antarmuka hapus teman 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) Dapatkan daftar teman: Hal ini dicapai dengan memanggil antarmuka dapatkan daftar teman 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函数后,将尝试获取当前用户的好友列表,并处理结果
Selanjutnya, kami akan mengimplementasikan kemampuan inti obrolan, yang melibatkan beberapa langkah seperti mengirim pesan, menerima pesan, dan menampilkan pesan.
1. Kirim pesan teks:
// 发送文本消息函数
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. Menerima pesan
Penerimaan pesan biasanya dicapai dengan mendengarkan kejadian yang disediakan oleh SDK. Berikut adalah contoh mendengarkan kejadian pesan teks:
// 监听文本消息事件
Nim.message.on(Nim.EVENT.NEW_MSG, function(msg) {
if (msg.sessionType === Nim.SESSION_TYPE_SINGLE