因此,我正在为我的应用程序构建聊天功能部分。我在UI上使用sendbird sdk以及天才聊天。
我的消息不会显示,并且继续收到以下警告。
“礼物聊天:_id
缺少消息”
现在,我已经三遍检查了sendbird的配置是否正确,我已正确登录并且还创建了适当的频道。这些都可以。
查看他们所发布的消息日志,如图所示。
{ messageType: 'user',
messageId: 2122453749,
etc ... }
但是他们以 messageId 的身份发布,是否需要更改其结构?如果是这样,我如何处理此问题,因为sendbird已经对其进行了预配置。还是可以在“天才聊天”中更改此设置?
请在下面查看我的代码段。
getChannelMetaData(channel) {
if (channel) {
const self = this;
const messagesQuery = channel.createPreviousMessageListQuery();
messagesQuery.load(50, true, (messages, error) => {
if (error) {
console.error(error);
}
this.setState({
messages,
});
});
}
}
onSend(messages = []) {
const handle = this;
const sb = SendBird.getInstance();
const { channel } = this.props.navigation.state.params;
this.setState(previousState => {
channel.sendUserMessage(messages[0].text, (response, error) => {
if (!error) {
handle.getChannelMetaData(channel);
}
});
console.log(this.state.messages);
return { messages: GiftedChat.append(previousState.messages, messages) };
});
}
<GiftedChat
messages={this.state.messages}
renderBubble={bubble}
loadEarlier
renderLoadEarlier={loadEarlier}
isAnimated
keyboardShouldPersistTaps="never"
onSend={messages => this.onSend(messages)}
user={{
_id: userID,
}}
showUserAvatar
/>
答案 0 :(得分:2)
您应使用以下格式:
{
_id: 1,
text: 'message',
createdAt: new Date(),
user: {
_id: 2,
name: 'nickname',
avatar: 'YourimageURL',
},
},
答案 1 :(得分:0)
如果不遵循他们指定的格式,则会引发此警告。因此,我们为此所做的...我们只是从如下
的聊天消息数组中定制了JSON对象let giftedChatMessages = chatMessages.map((chatMessage) => {
let gcm = {
_id: chatMessage.id,
text: chatMessage.get("text"),
createdAt: chatMessage.get("createdAt"),
user: {
_id: chatMessage.get("user").id,
name: chatMessage.get("user").get("name"),
avatar: chatMessage.get("user").get("avatarUrl")
}
};
return gcm;
});
答案 2 :(得分:0)
messages = {this.state.messages} 在这里,{this.state.messages}应该具有以下结构
id:
文本:
createdAt:
用户:{ _ID: 名称: 头像: }
因此,当您从sendbird检索消息时,您将获得与Giftedchat格式完全相同的字段。