uni-app中cid为空时给所有用户发了消息

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app中cid为空时给所有用户发了消息

问题描述

[unipush/ac1cc3171735804603642182474/1ms/DEBUG]

{ 
  "payload": {
    "tenantId": null,
    "page": "/pages/im/chat?id=GRP1870369716297125890"
  },
  "cids": null,
  "title": "有聊消息",
  "request_id": "1874726455297560578",
  "content": "nIvGOlq0"
}

请求响应状态: success

cids为空,为什么还有人能收到消息

图片


2 回复

请求的哪个接口完整的传参是什么
请联系个推技术支持协助解决


在uni-app开发中,如果遇到cid(通常代表用户或客户端的唯一标识符)为空的情况,并向所有用户发送了消息,这显然是一个严重的逻辑错误。为了防止这种情况的发生,我们需要确保在发送消息之前,cid已经正确赋值并且不为空。

以下是一个简单的示例,展示如何在uni-app中检查cid是否为空,并据此决定是否发送消息。假设我们有一个发送消息的函数sendMessage,以及一个获取用户信息的函数getUserInfo

// 假设这是我们的发送消息函数
function sendMessage(cid, message) {
    if (!cid) {
        console.error("CID为空,无法发送消息!");
        return;
    }
    // 这里是发送消息的具体实现,比如通过WebSocket、HTTP请求等
    console.log(`向CID为${cid}的用户发送消息: ${message}`);
    // 示例:通过WebSocket发送消息
    // ws.send(JSON.stringify({ cid, message }));
}

// 假设这是我们的获取用户信息的函数(可能从本地存储、服务器请求等获取)
async function getUserInfo() {
    // 这里应该是从某处获取用户信息,为了演示,我们直接返回一个对象
    return {
        cid: uni.getStorageSync('cid') || null, // 尝试从本地存储获取cid,如果没有则默认为null
        name: '用户名称'
    };
}

// 主逻辑
async function main() {
    try {
        const userInfo = await getUserInfo();
        const message = "这是一条测试消息";

        if (!userInfo.cid) {
            console.error("用户信息中CID为空,无法发送消息!");
            // 可以选择在这里进行一些错误处理,比如提示用户登录等
        } else {
            sendMessage(userInfo.cid, message);
        }
    } catch (error) {
        console.error("获取用户信息或发送消息时出错:", error);
    }
}

// 执行主逻辑
main();

在这个示例中,我们首先定义了一个sendMessage函数,该函数在cid为空时会记录错误并返回,不执行发送操作。然后,我们定义了一个getUserInfo函数,该函数尝试从本地存储中获取cid。最后,在main函数中,我们调用getUserInfo获取用户信息,并检查cid是否为空,如果不为空则调用sendMessage发送消息。

请注意,这只是一个简单的示例。在实际应用中,你可能需要处理更多的错误情况,比如网络请求失败、本地存储访问失败等。此外,发送消息的具体实现也会根据你的后端接口和通信协议而有所不同。

回到顶部