如何为约会应用构建一对一随机视频聊天

10 分钟阅读
Aug 7, 2025

如何为交友应用构建1v1随机视频聊天

概述

陌生人社交/交友应用可以帮助您快速结交来自世界各地的新朋友,让您享受交友和在线约会的乐趣。用户可以通过应用找到他们感兴趣的人,然后通过文字、语音或视频相互了解。

场景描述

基于腾讯实时通信Call和腾讯实时通信Chat,您可以快速构建自己的陌生人社交/交友应用。该服务提供覆盖全球的高连接、高可靠、强安全的网络连接通道。它使用自研的多路复用最优寻址算法,具备全网调度能力,拥有丰富的高带宽资源储备,确保您的社交体验流畅。

基于腾讯实时通信Call和腾讯实时通信Chat

技术解决方案

解决方案优势

快速集成。提供1v1社交场景定制化组件,帮助开发者快速轻松地实现功能。

功能完善且可扩展。满足1v1社交/在线交友场景的基本功能需求,业务场景API高度贴合,模块化组件支持美颜功能的自由扩展

超高质量,全球节点分布。凭借多年技术积累,消息收发成功率高于99.99%,抗网络抖动超过1,000毫秒,在高达70%的丢包率下仍能保持正常语音通话;节点覆盖亚太、北美、欧洲、中东和非洲等全球200多个国家和地区,端到端通话延迟低至300毫秒。能为客户在1v1海外社交业务中提供保障。

接入准备

服务激活

您需要同时激活Call和Chat服务。

为了给音视频通话和聊天互动功能提供更好的体验,我们为每个SDKAppID提供Call服务的7天免费试用套餐(试用版不包括额外通话时长)和Chat服务的1个月试用套餐。每个SDKAppID可以免费体验两次试用,一个账号下所有SDKAppID的试用总次数为10次。

您可以在腾讯实时通信(TRTC)控制台激活Call和Chat试用版。具体步骤如下:

1. 登录TRTC控制台,点击创建应用

2. 在弹出窗口中,选择Call,输入应用名称,选择数据存储区域,然后点击创建

3. 创建应用后,默认显示Call应用详情页。此时,您已快速创建应用并成功获得音视频通话(Call)试用套餐。您可以查看当前Call应用详情页或应用概览页面的信并参考集成指南进行集成。在集成指南中将使用SDKAppIDSDKSecretKey

4. 点击左侧菜单中的Chat,然后在页面上点击开始使用。现在您已经快速激活了Chat服务并成功获得Chat试用套餐。

注意:

TUICallKit支、Android、Web、uni-app和Flutter等多平台。为方续集成和功能实现将以Android为例进行演示。关于其他平台的接入指南,请参考快速接入文档。

  • Android 5.0(SDK API Level 21)或更高版本。
  • Gradle 4.2.1或更高版本。
  • 搭载Android 5.0或更高版本的移动设备。

TUIKit组件集成

步骤1:项目导入

从GitHub下载TUIKit源代码。确保TUIKit文件夹与您自己的项目文件夹位于同一级别,例如:

步骤2:项目配置

1. 在项目根目录中找到settings.gradle.kts(或settings.gradle)文件,添加以下代码以将tuikit组件导入到项目中。

settings.gradle.kts

// 包含内部组件通信模块(必需模块)
include(":tuicore")
project(":tuicore").projectDir = File(settingsDir, "../TUIKit/TUICore/tuicore")

// 包含IM组件公共模块(必需模块)
include(":timcommon")
project(":timcommon").projectDir = new File(settingsDir, "../TUIKit/TIMCommon/timcommon")

// 包含聊天功能模块(基础功能模块)
include(":tuichat")
project(":tuichat").projectDir = File(settingsDir, "../TUIKit/TUIChat/tuichat")

// 包含会话功能模块(基础功能模块)include(":tuiconversation")
include(":tuiconversation")
project(":tuiconversation").projectDir = File(settingsDir, "../TUIKit/TUIConversation/tuiconversation")

// 包含音视频通话功能模块
include(":tuicallkit-kt")
project(":tuicallkit-kt").projectDir = File(settingsDir, "../TUIKit/TUICallKit/tuicallkit-kt")

settings.gradle

// 包含内部组件通信模块(必需模块)。
include ':tuicore'
project(':tuicore').projectDir = new File(settingsDir, '../TUIKit/TUICore/tuicore')

// 包含IM组件通用模块(必需模块)。
include ':timcommon'
project(':timcommon').projectDir = new File(settingsDir, '../TUIKit/TIMCommon/timcommon')

// 包含聊天功能模块(基础功能模块)。
include ':tuichat'
project(':tuichat').projectDir = new File(settingsDir, '../TUIKit/TUIChat/tuichat')

// 包含会话功能模块(基础功能模块)。
include ':tuiconversation'
project(':tuiconversation').projectDir = new File(settingsDir, '../TUIKit/TUIConversation/tuiconversation')

// 包含音视频通话功能模块。
include ':tuicallkit-kt'
project(':tuicallkit-kt').projectDir = new File(settingsDir, '../TUIKit/TUICallKit/tuicallkit-kt')

2.在app目录中,找到build.gradle.kts (或 build.gradle)文件,并在dependencies部分添加以下代码,声明当前应用对新添加组件的依赖关系。

build.gradle.kts

">dependencies {
    api(project(":tuicore"))
    api(project(":tuichat"))
    api(project(":tuiconversation"))
    api(project(":tuicallkit-kt"))
}

build.gradle

dependencies {
    api project(':tuicore')
    api project(':tuichat')
    api project(':tuiconversation')
    api project(':tuicallkit-kt')
}

3.由于SDK内部使用了Java的反射特性,你需要通过在app目录下的proguard-rules.pro文件末尾添加以下代码,将SDK中的某些类添加到混淆白名单中。添加后,点击右上角的Sync Now同步代码。

-keep class com.tencent.** { *; }

4.在app目录下找到AndroidManifest.xml文件,在application节点添加tools:replace="android:allowBackup",用自己的设置覆盖组件设置。

步骤3:登录组件

在你的项目中添加以下代码。其功能是通过调用TUICore中的相关接口完成TUI组件的登录。这一步骤非常关键,只有在成功登录后,你才能正常使用TUIKit提供的功能。

Java:

 com.tencent.qcloud.tuicore.TUILogin;
import com.tencent.qcloud.tuicore.interfaces.TUICallback;
import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSig;

public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //begin
        String userID = "denny";     // 替换为你的用户ID。
        int sdkAppID = 0;            // 替换为第1步在控制台获取的SDKAppID。
        String secretKey = "****";   // 替换为第1步在控制台获取的SecretKey。
        
        String userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppITUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {Success() {
            }
            
            @Override
            public void onError(int errorCode, String errorMessage) {
            }
        });
        //end
    }
}

Kotlin:

import com.tencent.qcloud.tuicore.TUILogin
import com.tencent.qcloud.tuicore.interfaces.TUICallback
import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSig

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // begin  
        val userID = "denny"     // 替换为你的用户ID。
        val sdkAppID = 0         // 替换为第1步在控制台获取的SDKAppID。
        val secretKey = "****"   // 替换为第1步在控制台获取的SecretKey。
        
        val userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey)
        
        TUILogin.login(this, sdkAppId, userId, userSig, object : TUICallback() {
            override fun onSuccess() {
            }
            override fun onError(errorCode: Int, errorMessage: String) {
            }
         })    
        // end
    }
}
参数类型描述
userIDString客户根据自己的业务定义用户ID。它只能包含字母(a-z,A-Z)、数字(0-9)、下划线(_)和连字符(-)。
sdkAppIDint TRTC控制台创建的音视频应用的唯一标识符SDKAppID。
secretKeyStringTRTC控制台创建的音视频应用的SDKSecretKey。
userSigString用于用户登录认证的安全保护签名,用于确认用户身份并防止恶意攻击者窃取您的云服务使用权。

注意:

开发环境:如果您处于本地开发和调试阶段,可以使用本地的GenerateTestUserSig.genTestSig函数生成userSig。在此方法中,SDKSecretKey容易被反编译和逆向工程破解,一旦您的密钥泄露,攻击者可能会窃取您的腾讯云流量。

生产环境:如果您的项目即将上线,请采用服务端生成 UserSig的方法。

业务功能实现

社交大厅

您可以在自己的业务服务器上记录每个注册和登录的用户,并根据特定的推荐算法将其显示在用户的社交大厅页面中。

聊天互动

成功调用上述登录方法后,您还可以通过以下操作显示会话列表页面。点击会话列表上的成员可跳转到消息页面。

在您的XML文件中添加FragmentContainerView(例如,activity_main.xml)。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android='httpschemasandroidcomapkresandroid'
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- 添加fragment容器 -->
    <androidx.fragment.app.FragmentContainerView
        android:id='idfragment_container_view'
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

在需要显示会话列表页面的地方调用以下代码,以调出会话列表页面。

Java:

TUIConversationFragment conversationFragment = new TUIConversationFragment();
getSupportFragmentManager().beginTransaction()
        .replace(R.id.fragment_container_view, conversationFragment)
        .commit();

Kotlin:

val conversationFragment = TUIConversationFragment()
supportFragmentManager.beginTransaction()    
    .replace(R.id.fragment_container_view, conversationFragment)    
    .commit()

音视频通话

成功调用上述登录方法后,调用TUICallKit的call方法,指定被呼叫方的userID和通话类型,即可发起音视频通话。被呼叫方可以收到来电邀请。

Java:

Kotlin:

import com.tencent.qcloud.tuikit.tuicallengine.TUICallDefine
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

// 发起一对一语音通话(假设被呼叫方的userID是mike)
TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Audio)

离线推送

离线推送功能可以让用户及时收到来自好友的消息通知和来电请求,增强用户粘性和活跃度。TUICallKit组件支持通过集成TIMPush插件**(付费)**实现离线推送功能,使用户即使在应用处于后台或离线状态时也能收到通话通知。

以下是TIMPush集成后的效果示例。

注意:

要实现如上所示的良好通话体验,建议在您的应用中开启"通知"、"显示在其他应用上层"和"后台启动界面"权限。有关详细方法,请参见开启相关权限

悬浮窗

在好友之间进行音视频通话时,如果用户需要退出通话界面但又不想终止当前通话进程,可以使用悬浮窗功能。实现效果如下图所示:

初始化TUICallKit组件时使用enableFloatWindow方法启用此功能。代码如下:

TUICallKit.createInstance(context).enableFloatWindow(true);

Kotlin:


TUICallKit.createInstance(context).enableFloatWindow(true)

美颜特效

开启美颜特效可以在视频社交过程中提升用户的视觉形象,营造生动有趣的氛围。腾讯特效SDK支持与TUICallKit组件集成,可提供丰富的美颜特效,如虚拟背景美颜、图像调整、滤镜、贴纸、Animoji和捏脸DIY等。

有关腾讯特效SDK的更多信息,请参阅腾讯特效SDK文档。

如果您想将美颜特效集成到您的业务中,请参阅腾讯特效SDK文档。

通话记录

您可以通过TUICallKit的服务器API 查看通话记录并获取通话时长,从而构建自己的计费系统。

UI定制

为了满足您的个性化产品UI需求,TUICallKit产品支持对UI界面进行自定义修改,包括设置昵称/头像、自定义铃声以及调整文本和图标,这可以帮助您快速完成个性化业务场景的设置。如果您有自定义UI需求,请参考以下文档。

设置昵称和头像(跨平台)

设置分辨率和填充模式(Web)

自定义铃声(Android)

界面定制(包括文字、图标和自定义UI)

源代码级解决方案

对于1v1社交场景,腾讯云还推出了源代码级解决方案。您只需下载源代码并按照文档设置后端即可运行1v1社交网络应用,之后即可正式启用付费的TRTC Call和TRTC Chat。产品样例图片如下:

如果您想了解更多关于1v1社交场景的源代码级解决方案,请随时提交工单我们的技术人员稍后会与您联系。