场景是这样的:

发一条消息要 1 个币,然后就是最终要在 Hook 上做判断,看这条消息是否真的钱够,然后能被送达。

如果钱不够不能送达的话,#发送失败# 的回执能回到客户端吗?或者说,如果发送消息在 Hook 这个流程被终止了,客户端能知道我消息发失败了吗?

如果你说的“消息”是数据库中的一条记录的话,那相当于要在数据库添加一条记录,这样可以使用 beforeSave Hook,在 Hook 中判断余额是否够,如果不够,调用 resp.error('余额不足'),客户端就可以收到一个保存失败的提示,信息大致说:云函数验证失败:余额不足

我说的是即时聊天,就是要给对方发聊天内容啊,然后发了之后不是会调用一下 Hook 么,我会判断余额是否足够并且扣除金币后再发送出去,否则发送失败。

对,所以说我的意思就是说是有回执给客户端吧?可是我看回执里面好像是没参数啊?

可否点开看一下我上面的文档链接,这个 hook 是有返回值的,文档也对每个返回值做了说明。可以通过 code 传递错误码。

服务端怎么返回失败我知道了,但是客户端

- (void)conversation:(AVIMConversation *)conversation messageDelivered:(AVIMMessage *)message{
    NSLog(@"%@", @"消息已送达。"); // 打印消息
}

好像我在回执回调里面没看到能接收到发送失败的参数啊?

你好,是在调用 sendMessage 函数时能传入一个 callback,失败信息会送到这个 callback 中,通过 callback 里面的 error 能拿到错误信息。

也就是说这里拿到的 error 其实是已经经过云函数过滤之后的 error 吧?而不是去调用云函数之前的

是的。拿到的 error 是 _messageReceived 之后的。