资优聊天缺少消息“ _id”-React Native

时间:2019-02-05 16:26:19

标签: react-native chat sendbird react-native-gifted-chat

因此,我正在为我的应用程序构建聊天功能部分。我在UI上使用sendbird sdk以及天才聊天。

我的消息不会显示,并且继续收到以下警告。 “礼物聊天:_id缺少消息”

messages show blank up blank

现在,我已经三遍检查了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
    />

3 个答案:

答案 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: 名称: 头像: }

  1. 选项1:您可以从sendbird中获取所有相应的字段值,并使用预期的属性名称更新中间数组,然后更新this.state.messages 选项2:Onsend函数应在sendbird中插入以下列标题的值 ID: 文本: createdAt: 用户:{ _ID: 名称: 头像: }

因此,当您从sendbird检索消息时,您将获得与Giftedchat格式完全相同的字段。