tencent cloud

文档反馈

最后更新时间:2024-06-24 16:48:55
    本文会引导您构建聊天界面。

    效果展示

    聊天界面发送消息效果如下所示:
    单聊界面
    群聊界面
    
    
    

    开发环境要求

    Android Studio-Giraffe
    Gradle-7.2
    Android Gradle Plugin Version-7.0.0
    kotlin-gradle-plugin-1.5.31

    前置条件

    在构建界面之前,请确保您已经完成了以下 4 件事:
    1. 在控制台创建了一个应用。
    2. 在控制台创建了一些用户账号。
    3. 集成了 TUIKitTUIChat
    4. 调用 TUILoginlogin 接口登录组件。
    注意:
    1. 所有组件都是这个登录接口。每次启动应用,登录一次即可。
    2. 请确保登录成功,我们建议您在登录成功的回调里进行下文的操作。
    如果您尚未完成以上4步,请先参见 快速开始 中的对应步骤完成,否则在实现下文功能时可能遭遇阻碍。
    如果您已经完成,请继续阅读下文。

    步骤说明

    如果您想跳转到单聊消息界面,可以直接参考 快速开始,本文不再赘述。
    如果跳转群聊界面,需要传入有效 groupID。这里的前提是您有一个已经存在群组的 groupID。有两种简便方式可获取:
    1. 控制台创建一个 group,操作路径:Applications > Your App > Chat > Groups > Group Management > Add Group。创建成功后,您可以直接在当前页看到 groupID。
    2. 按照文档 创建群组 的指引,手动在 TUIKit 里创建一个群组,群组详情页中会展示 groupID。
    跳转群聊界面示例代码如下所示:
    简约版
    经典版
    Intent intent; if (isGroup) { intent = new Intent(this, TUIGroupChatMinimalistActivity.class); } else { intent = new Intent(this, TUIC2CChatMinimalistActivity.class); } // If it's a C2C chat, chatID is the other person's UserID; if it's a Group chat, chatID is the GroupID. intent.putExtra(TUIConstants.TUIChat.CHAT_ID, "chatID"); intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, isGroup ? V2TIMConversation.V2TIM_GROUP : V2TIMConversation.V2TIM_C2C); startActivity(intent);
    Intent intent; if (isGroup) { intent = new Intent(this, TUIGroupChatActivity.class); } else { intent = new Intent(this, TUIC2CChatActivity.class); } // If it's a C2C chat, chatID is the other person's UserID; if it's a Group chat, chatID is the GroupID. intent.putExtra(TUIConstants.TUIChat.CHAT_ID, "chatID"); intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, isGroup ? V2TIMConversation.V2TIM_GROUP : V2TIMConversation.V2TIM_C2C); startActivity(intent);
    您也可以将 TUIChat 聊天界面,嵌入到自己的 Activity 中。
    示例代码如下所示:
    简约版
    经典版
    Fragment fragment;
    // If it's a C2C chat, chatID is the other person's UserID; if it's a Group chat, chatID is the GroupID.
    if (isGroup) { GroupInfo groupInfo = new GroupInfo(); groupInfo.setId(chatID); Bundle bundle = new Bundle(); bundle.putSerializable(TUIChatConstants.CHAT_INFO, groupInfo); TUIGroupChatMinimalistFragment tuiGroupChatFragment = new TUIGroupChatMinimalistFragment(); tuiGroupChatFragment.setArguments(bundle); GroupChatPresenter presenter = new GroupChatPresenter(); presenter.initListener(); tuiGroupChatFragment.setPresenter(presenter); fragment = tuiGroupChatFragment; } else { ChatInfo chatInfo = new ChatInfo(); chatInfo.setId(chatID); Bundle bundle = new Bundle(); bundle.putSerializable(TUIChatConstants.CHAT_INFO, chatInfo); TUIC2CChatMinimalistFragment tuic2CChatFragment = new TUIC2CChatMinimalistFragment(); tuic2CChatFragment.setArguments(bundle); C2CChatPresenter presenter = new C2CChatPresenter(); presenter.initListener(); tuic2CChatFragment.setPresenter(presenter); fragment = tuic2CChatFragment; }
    getSupportFragmentManager().beginTransaction() .add(R.id.chat_fragment_container, fragment).commitAllowingStateLoss();
    Fragment fragment;
    // If it's a C2C chat, chatID is the other person's UserID; if it's a Group chat, chatID is the GroupID.
    if (isGroup) { GroupInfo groupInfo = new GroupInfo(); groupInfo.setId(chatID); Bundle bundle = new Bundle(); bundle.putSerializable(TUIChatConstants.CHAT_INFO, groupInfo); TUIGroupChatFragment tuiGroupChatFragment = new TUIGroupChatFragment(); tuiGroupChatFragment.setArguments(bundle); GroupChatPresenter presenter = new GroupChatPresenter(); presenter.initListener(); tuiGroupChatFragment.setPresenter(presenter); fragment = tuiGroupChatFragment; } else { ChatInfo chatInfo = new ChatInfo(); chatInfo.setId(chatID); Bundle bundle = new Bundle(); bundle.putSerializable(TUIChatConstants.CHAT_INFO, chatInfo); TUIC2CChatFragment tuic2CChatFragment = new TUIC2CChatFragment(); tuic2CChatFragment.setArguments(bundle); C2CChatPresenter presenter = new C2CChatPresenter(); presenter.initListener(); tuic2CChatFragment.setPresenter(presenter); fragment = tuic2CChatFragment; }
    getSupportFragmentManager().beginTransaction() .add(R.id.chat_fragment_container, fragment).commitAllowingStateLoss();

    更多实践

    您可以本地 运行 TUIKitDemo 源码,探索更多的界面实现。

    联系我们

    如果您对本文有疑问,欢迎加入Telegram 技术交流群,您将获得可靠的技术支持。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持