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

10 分钟阅读
Feb 18, 2025

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

概述

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

场景描述

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

High-Connection Social/Dating App Based on Tencent RTC

- Online matching of friends
- Status of friends (online/offline, read/unread messages)

技术解决方案

解决方案优势

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

完美且可扩展的特性。 满足1对1社交/在线交友场景的基本功能,业务场景API高度契合,模块化组件支持美容模式功能的自由扩展

异常高质量,全球节点分布。 凭借多年的技术经验,消息发送和接收的成功率超过99.99%,抗网络抖动能力超过1000毫秒,丢包率超过70%仍能正常进行语音通话;节点覆盖200多个国家和地区,如亚太、北美、欧洲、中东和非洲,端到端通话延迟低至300毫秒。可以为客户提供1对1海外社交业务的保护

接入准备

服务激活

您需要同时激活通话和聊天服务。

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

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

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

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

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

4. 在左侧菜单中点击 聊天,然后在页面上点击 开始。您现在已快速激活聊天服务并成功获得聊天试用包。

环境准备

注意:

TUICallKit支持多种平台,如小程序、iOS、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 = new File(settingsDir, "../TUIKit/TUIChat/tuichat")

// 包含会话功能模块(基本功能模块) include(":tuiconversation")。
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")

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中的某些类添加到混淆允许列表中。添加后,点击右上角的立即同步以同步代码。

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

4.在app目录中找到AndroidManifest.xml文件,并在application节点中添加tools:replace="android:allowBackup"以覆盖组件设置。

步骤3:登录组件

在您的项目中添加以下代码。其功能是通过调用TUICore中的相关接口完成对TUI组件的登录。此步骤至关重要,只有在成功登录后,您才能正确使用TUIKit提供的功能。

Java:

import 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);

        //开始
        String userID = "denny";     // 替换为您的用户ID。
        int sdkAppID = 0;            // 替换为第1步中从控制台获取的SDKAppID。
        String secretKey = "****";   // 替换为第1步中从控制台获取的SecretKey。
        
        String userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey);
        
        TUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {
            @Override
            public void onSuccess() {
            }
            
            @Override
            public void onError(int errorCode, String errorMessage) {
            }
        });
        //结束
    }
}

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)

        // 开始  
        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) {
            }
         })    
        // 结束
    }
}
参数类型描述
userIDString客户根据其业务自定义的用户ID。只能包含字母(a-z, A-Z)、数字(0-9)、下划线(_)和连字符(-)。
sdkAppIDintTRTC控制台中创建的音频和视频应用的唯一标识符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">

    <!-- 添加片段容器 -->
    <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()

音频/视频通话

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

Java:

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

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

Kotlin:

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

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

离线推送

离线推送功能允许用户及时接收来自朋友的消息通知和来电请求,提高用户粘性和活跃度。TUICallKit组件支持通过集成TIMPush插件 **(收费)**来实现离线推送功能,使用户即使在应用运行在后台或离线时也能接收通话通知。

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

注意:

为了实现良好的通话体验,建议在应用中启用“通知”、“悬浮在其他应用上”和“后台启动界面”权限。详细方法请参见启用相关权限

悬浮窗口

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

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

Java:

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

Kotlin:


TUICallKit.createInstance(context).enableFloatWindow(true)

美颜效果

启用美颜效果可以提高用户在视频社交过程中的视觉吸引力,营造活泼有趣的氛围。腾讯效果SDK支持与TUICallKit组件集成,提供丰富的美颜效果,如虚拟背景美颜、图像调整、滤镜、贴纸、动画表情和脸部捏造DIY。有关腾讯效果SDK的更多信息,请参阅腾讯效果SDK文档。如果您想将美颜效果集成到您的业务中,请参阅腾讯效果SDK文档;如果您想集成其他第三方美颜效果,请参阅第三方SDK文档进行集成。

通话记录

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

UI定制

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

设置昵称和头像(所有平台通用)

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

自定义铃声(Android)

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

源代码级解决方案

对于1对1社交场景,腾讯云还推出了源代码级解决方案。您只需下载源代码并根据文档设置后端,即可运行1对1社交网络应用,然后正式上线付费的TRTC通话和TRTC聊天功能。产品样例图如下:

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