데이팅 앱을 위한 1:1 랜덤 비디오 채팅을 구축하는 방법

10 분 읽기
Aug 11, 2025

How to Build 1v1 Random Video Chat for Dating Apps

개요

이방인 소셜라이징/데이팅 애플리케이션은 전 세계에서 빠르게 새로운 친구를 사귈 수 있도록 도와주며, 친구 사귀기와 온라인 데이팅의 즐거움을 만끽할 수 있게 해줍니다. 사용자는 애플리케이션을 통해 관심 있는 사람들을 찾고, 텍스트, 음성 또는 비디오를 통해 서로를 알아갈 수 있습니다.

시나리오 설명

Tencent RTC Call과 Tencent RTC Chat을 기반으로 자신만의 이방인 소셜라이징/데이팅 애플리케이션을 빠르게 구축할 수 있습니다. 이 서비스는 전 세계를 아우르는 고도로 연결되고, 매우 신뢰할 수 있으며, 강력하게 보안된 네트워크 연결 채널을 제공합니다. 자체 개발한 다중화된 최적 주소 지정 알고리즘을 사용하고, 네트워크 전체 스케줄링 기능을 갖추고 있으며, 풍부한 고대역폭 자원 예비를 보유하여 원활한 소셜라이징 경험을 보장합니다.

Based on Tencent RTC Call and Tencent RTC Chat

기술 솔루션

솔루션 강점

빠른 통합. 1대1 소셜라이징 시나리오 맞춤형 컴포넌트를 제공하여 개발자가 빠르고 쉽게 기능을 구현할 수 있도록 돕습니다.

완벽하고 확장 가능한 기능. 1대1 소셜라이징/온라인 친구 사귀기 시나리오에 필요한 필수 기능을 충족하고, 비즈니스 시나리오 API는 고도로 맞춤화되어 있으며, 모듈식 컴포넌트는 뷰티 모드 기능의 자유로운 확장을 지원합니다.

뛰어난 품질, 글로벌 노드 분포. 수년간의 기술적 전문 지식을 바탕으로 메시지 송수신 성공률이 99.99% 이상이며, 네트워크 지터에 대한 저항력은 1,000ms를 초과하고, 패킷 손실률이 70%를 초과해도 정상적인 음성 통화가 가능합니다. 노드는 아시아-태평양, 북미, 유럽, 중동, 아프리카와 같은 전 세계 200개 이상의 국가 및 지역을 커버하며, 종단간 통화 지연 시간은 300ms로 매우 낮습니다. 1대1 해외 소셜라이징 비즈니스에서 고객을 위한 보호를 제공할 수 있습니다.

액세스 준비

서비스 활성화

Call과 Chat 서비스를 동시에 활성화해야 합니다.

오디오 및 비디오 통화와 채팅 상호작용 기능에 더 나은 경험을 제공하기 위해, 각 SDKAppID에 Call 서비스를 위한 무료 7일 체험 패키지(체험 버전에는 추가 통화 시간이 포함되지 않음)와 Chat 서비스를 위한 1개월 체험 패키지를 제공합니다. 각 SDKAppID는 무료로 두 번 체험할 수 있으며, 한 계정에서 모든 SDKAppID에 대한 총 체험 횟수는 10회입니다.

Tencent Real-Time Communication(TRTC) 콘솔에서 Call 및 Chat 체험판을 활성화할 수 있습니다. 구체적인 단계는 다음과 같습니다:

1. TRTC 콘솔에 로그인하고 애플리케이션 생성을 클릭합니다.

2. 팝업 창에서 Call을 선택하고, 애플리케이션 이름을 입력하고, 데이터 저장 지역을 선택한 다음 생성을 클릭합니다.

3. 애플리케이션 생성 시, 기본적으로 Call 애플리케이션 세부 정보 페이지가 표시됩니다. 이 시점에서 애플리케이션을 빠르게 생성하고 오디오 및 비디오 통화(Call) 체험 패키지를 성공적으로 받았습니다. 현재 Call 애플리케이션 세부 정보 페이지 또는 애플리케이션 개요 페이지에서 정보를 확인할 수 있으며, 통합을 위해 통합 가이드를 참조하세요. SDKAppIDSDKSecretKey는 통합 가이드에서 사용됩니다.

4. 왼쪽 메뉴에서 Chat을 클릭한 다음 페이지에서 시작하기를 클릭합니다. 이제 Chat 서비스를 빠르게 활성화하고 Chat 체험 패키지를 성공적으로 받았습니다.

환경 준비

참고:

TUICallKit은 미니 프로그램, iOS, Android, 웹, uni-app, Flutter와 같은 여러 플랫폼을 지원합니다. 편의를 위해 이후 통합 및 기능 구현은 Android를 예로 사용하여 시연됩니다. 다른 플랫폼에 대한 액세스 가이드라인은 빠른 액세스 문서를 참조하세요.

  • Android 5.0(SDK API 레벨 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.앱 디렉토리에서 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의 리플렉션 기능이 사용되므로, 디렉토리의proguard-rules.pro 파일 끝에 다음 코드를 추가하여 SDK의 특정 클래스를 난독화 허용 목록에 추가해야 합니다. 추가한 후 오른쪽 상단의 Sync Now를 클릭하여 코드를 동기화합니다.

를 추가하여 컴포넌트 설정을 자신의 설정으로 재정의합니다.

Step 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
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //begin
        String userID = "denny";     // 자신의 UserId로 교체하세요.
        int sdkAppID = 0;            // 1단계에서 콘솔에서 얻은 SDKAppID로 교체하 = "****";   // 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) {
            }
        });
        //end
    }
}

Kotlin:

import com.tencent.qcloud.tuicore.TUILogin
import com.tencent.qcloud.tuicore.interfaces.TUICallback
import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // begin  
        val userID = "denny"     // 자신의 UserId로 교체하세요.
        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
            override fun onError(errorCode: Int, errorMessage: String) {
            }
         })    
        // end
    }
}
(0, 0, 0, 0);border:1px solid rgb(225, 230, 240);height:24px;padding:8px 16px;width:103.773px;" colspan="1" rowspan="1">sdkAppID
매개변수유형설명
userIDString고객은 자신의 비즈니스를 기반으로 자신의 사용자 ID를 정의합니다. 문자(a-z, A-Z), 숫자(0-9), 밑줄(_) 및 하이픈(-)만 포함할 수 있습니다.
intTRTC 콘솔에서 생성된 오디오 및 비디오 애플리케이션의 고유 식별자 SDKAppID입니다.
secretKeyStringTRTC 콘솔에서 생성된 오디오 및 비디오 애플리케이션의 SDKSecretKey입니다.
userSigString사용자의 신원을 확인하고 악의적인 공격자가 귀하의 클라우드 서비스 사용 권한을 훔치는 것을 방지하기 위해 사용자 로그인 인증에 사용되는 보안 보호 서명입니다.

참고:

개발 환경: 로컬 개발 및 디버깅 단계에 있다면 로컬 GenerateTestUserSig.genTestSig 함수를 사용하여 userSig를 생성할 수 있습니다. 이 방법에서는 SDKSecretKey가 디컴파일 및 리버스 엔지니어링에 취약하며, 키가 노출되면 공격자가 귀하의 텐센트 클라우드 트래픽을 도용할 수 있습니다.

운영 환경: 프로젝트를 출시할 예정이라면, 서버 측 UserSig 생성 방식을 채택하세요.

비즈니스 기능 구현

소셜라이징 홀

자체 비즈니스 서버에 등록 및 로그인한 모든 사용자를 기록하고 특정 추천 알고리즘에 따라 사용자의 소셜라이징 홀 페이지에 표시할 수 있습니다.

채팅 상호작용

위의 로그인 방법이 성공적으로 호출된 후, 다음 작업을 통해 대화 목록 페이지도 표시할 수 있습니다. 대화 목록의 멤버를 클릭하여 메시지 페이지로 이동합니다.

XML 파일(예: activity_main.xml)에 FragmentContainerView를 추가하세요.

<?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">

    <!-- Add fragment container -->
    <androidx.fragment.app.FragmentContainerView
        android:id='idfragment_container_view'"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

대화 목록 페이지를 표시해야 하는 위치에서 다음 코드를 호출하여 대화 목록 페이지를 불러옵니다.

Java:

UIConversationFragment 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의 통화 메서드를 호출하고, 수신자의 userID와 통화 유형을 지정하여 오디오/비디오 통화를 시작하세요. 수신자는 수신 통화 초대를 받을 수 있습니다.

Java:

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 문서를 참조하세요.

통화 기록

TUICallKit의 서버 API 를 통해 통화 기록을 보고 통화 시간을 얻어 자체 결제 시스템을 구축할 수 있습니다.

UI 커스터마이징

개인화된 제품 UI 요구 사항을 충족하기 위해 TUICallKit 제품은 닉네임/아바타 설정, 커스텀 벨소리, 텍스트 및 아이콘 조정 등 UI 인터페이스에 대한 사용자 정의 수정을 지원하여 개인화된 비즈니스 시나리오 설정을 빠르게 완료할 수 있습니다. 커스텀 UI 요구 사항이 있는 경우 다음 문서를 참조하세요.

닉네임 및 아바타 설정(모든 플랫폼)

해상도 및 채우기 모드 설정(웹)

커스텀 벨소리(Android)

인터페이스 커스터마이징(텍스트, 아이콘 및 커스텀 UI 포함)

소스 코드 수준의 솔루션

1대1 소셜라이징 시나리오를 위해 텐센트 클라우드는 소스 코드 수준의 솔루션도 출시했습니다. 소스 코드를 다운로드하고 문서에 따라 백엔드를 설정하기만 하면 1대1 소셜 네트워킹 앱을 실행할 수 있으며, 이후 유료 TRTC Call 및 TRTC Chat을 공식적으로 출시할 수 있습니다. 제품 샘플 이미지는 다음과 같습니다:

1대1 소셜라이징 시나리오에 대한 소스 코드 수준의 솔루션에 대해 더 자세히 알고 싶으시면, 티켓을 제출하세요. 기술 담 연락드릴 것입니다.