개요
낯선 사람과의 소셜 및 데이팅 애플리케이션은 전 세계에서 새로운 친구를 빠르게 사귈 수 있도록 도와주며, 친구를 만들고 온라인 데이트의 즐거움을 누릴 수 있게 해줍니다. 사용자는 애플리케이션을 통해 관심 있는 사람들을 찾고, 텍스트, 음성 또는 비디오를 통해 서로 알아갈 수 있습니다.
시나리오 설명
텐센트 RTC 통화 및 텐센트 RTC 채팅을 기반으로 낯선 사람과의 소셜/데이트 애플리케이션을 신속하게 구축할 수 있습니다. 이 서비스는 전 세계를 아우르는 고도로 연결된, 신뢰할 수 있으며 강력히 안전한 네트워크 연결 채널을 제공합니다. 자사 개발 알고리즘을 사용하여 다중 최적 주소 지정 기능을 제공하며, 네트워크 전반에 걸친 스케줄링 능력을 특징으로 하고 풍부한 고대역폭 자원 확보로 소셜 경험이 원활하도록 보장합니다.
기술 솔루션
솔루션 강점
빠른 통합. 1v1 소셜화 시나리오 사용자 정의 구성 요소가 제공되어 개발자가 기능을 빠르고 쉽게 구현할 수 있도록 돕습니다.
완벽하고 확장 가능한 기능. 1v1 소셜화/온라인 친구 만들기 시나리오에 필수적인 기능을 충족하며, 비즈니스 시나리오 API가 높은 적합성을 가지고 있으며 모듈형 구성 요소가 미용 모드 기능의 자유로운 확장을 지원합니다.
예외적으로 높은 품질, 글로벌 노드 분포. 다년간의 기술 전문성을 바탕으로 메시지 송수신 성공률은 99.99% 이상이며, 네트워크 지연 저항력은 1,000 ms를 초과하고, 패킷 손실률이 70%를 초과해도 정상적인 음성 통화가 가능하며, 노드는 아시아 태평양, 북미, 유럽, 중동, 아프리카 등 200개 이상의 국가 및 지역을 포함하여 커버하며, 종단 간 통화 대기 시간은 300 ms까지 낮출 수 있습니다. 1v1 해외 소셜화 비즈니스에 대한 보호가 제공됩니다.
접속 준비
서비스 활성화
통화 및 채팅 서비스를 동시에 활성화해야 합니다.
오디오 및 비디오 통화 및 채팅 상호작용 기능을 개선하기 위해, 각 SDKAppID에 대해 통화 서비스에 대한 무료 7일 체험 패키지(체험 버전에는 추가 통화 시간이 포함되지 않음)와 채팅 서비스에 대한 1개월 체험 패키지를 제공합니다. 각 SDKAppID는 두 번 무료로 체험할 수 있으며, 하나의 계정 하에 모든 SDKAppID의 총 체험 횟수는 10회입니다.
텐센트 실시간 통신(TRTC) 콘솔에서 통화 및 채팅 체험판을 활성화할 수 있습니다. 구체적인 단계는 다음과 같습니다:
1. TRTC 콘솔에 로그인하고 응용 프로그램 생성을 클릭합니다.
2. 팝업 창에서 통화를 선택하고, 응용 프로그램 이름을 입력하고 데이터 저장 지역을 선택한 후 생성을 클릭합니다.
3. 응용 프로그램 생성 후 기본적으로 통화 응용 프로그램 세부정보 페이지가 표시됩니다. 이 시점에서 응용 프로그램을 신속하게 생성하고 오디오 및 비디오 통화(통화) 체험 패키지를 성공적으로 받았습니다. 현재 통화 응용 프로그램 세부정보 페이지 또는 응용 프로그램 개요 페이지에서 정보를 확인할 수 있으며, 통합 가이드를 참조하여 통합하십시오. SDKAppID
및 SDKSecretKey
는 통합 가이드에서 사용됩니다.
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단계: 프로젝트 가져오기
TUIKit 소스 코드를 GitHub에서 다운로드합니다. 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")
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. 앱 디렉터리에서 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의 반사 기능이 사용되므로, SDK의 특정 클래스를 난독화 허용 목록에 추가해야 합니다. 이를 위해 앱 디렉터리의 proguard-rules.pro
파일 끝에 다음 코드를 추가합니다. 추가 후 오른쪽 상단에서 지금 동기화를 클릭하여 코드를 동기화합니다.
-keep class com.tencent.** { *; }
4. 앱 디렉터리의 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) {
}
})
// 종료
}
}
파라미터 | 유형 | 설명 |
userID | String | 고객이 비즈니스에 따라 자신만의 사용자 ID를 정의합니다. 영어 알파벳(a-z, A-Z), 숫자(0-9), 밑줄(_), 하이픈(-)만 포함할 수 있습니다. |
sdkAppID | int | 음성과 비디오 응용 프로그램에서 생성된 고유 식별자 SDKAppID입니다. TRTC 콘솔. |
secretKey | String | 음성과 비디오 응용 프로그램에서 생성된 SDKSecretKey입니다. TRTC 콘솔. |
userSig | String | 사용자 로그인 인증을 위한 보안 보호 서명으로, 사용자의 신원을 확인하고 악의적인 공격자가 클라우드 서비스 사용 권한을 훔치는 것을 방지합니다. |
참고:
개발 환경: 로컬 개발 및 디버깅 단계에서는 로컬 GenerateTestUserSig.genTestSig
함수를 사용하여 userSig를 생성할 수 있습니다. 이 방법에서는 SDKSecretKey가 역공학에 취약하므로 키가 유출되면 공격자가 Tencent Cloud 트래픽을 탈취할 수 있습니다.
운영 환경: 프로젝트를 출시할 경우, 서버 측에서 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">
<!-- 프래그먼트 컨테이너 추가 -->
<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:
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 요구 사항이 있는 경우, 다음 문서를 참조하십시오.
인터페이스 사용자 정의 (텍스트, 아이콘 및 맞춤 UI 포함)
소스 코드 수준의 솔루션
1v1 소셜화 시나리오를 위해 텐센트 클라우드는 소스 코드 수준의 솔루션도 출시했습니다. 소스 코드를 다운로드하고 문서에 따라 백엔드를 설정하면 1v1 소셜 네트워킹 앱을 실행할 수 있으며, 이후 유료 TRTC 통화 및 TRTC 채팅을 공식적으로 시작할 수 있습니다. 제품 샘플 이미지는 다음과 같습니다:
소스 코드 수준의 1v1 소셜화 시나리오에 대한 솔루션을 더 알고 싶다면, 언제든지 티켓 제출를 통해 문의하십시오.