1

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

我的消息不会显示,并且我不断收到以下警告。'GiftedChat:_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
/>
4

3 回答 3

3

您应该使用这种格式:

{   
      _id: 1,
      text: 'message',
      createdAt: new Date(),
      user: {
        _id: 2,
        name: 'nickname',
        avatar: 'YourimageURL',
      },
    },
于 2019-02-06T17:13:30.593 回答
1

如果您不遵循他们指定的格式,则会引发此警告。所以我们为此做了什么……我们只是从下面的聊天消息数组中自定义了我们的 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;
    });
于 2019-04-25T07:06:28.290 回答
0

messages={this.state.messages} 这里,{this.state.messages} 应该具有以下结构

ID:

文本:

创建于:

用户:{_id:名称:头像:}

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

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

于 2020-04-29T02:27:20.910 回答