1v1ランダムビデオチャットを構築する方法(デーティングアプリ用)

10 分読む
Feb 18, 2025

1v1ランダムビデオチャットを構築する方法(デーティングアプリ用)

概要

見知らぬ人と交流・出会うアプリケーションは、世界中の新しい友達をすぐに作る手助けをし、友達作りやオンラインデートの楽しさを味わうことができます。ユーザーはアプリケーションを通じて興味のある人々を見つけ、その後、テキスト、音声、またはビデオを通じてお互いを知ることができます。

シナリオの説明

Tencent RTC Call と Tencent RTC Chat に基づいて、自分自身の見知らぬ人との交流・出会いアプリケーションを迅速に構築できます。このサービスは、世界中をカバーする高接続、高信頼性、強力なセキュリティネットワーク接続チャネルを提供します。自己開発のアルゴリズムを使用して最適なアドレス指定を多重化し、ネットワーク全体のスケジューリング機能を備え、高帯域幅のリソースを豊富に確保しており、スムーズな交流体験を保証します。

Tencent RTC Call and Chat for Instant Communication with Strangers

High-Connection, High-Reliability, Secure Network Channels覆盖全球

技術的ソリューション

ソリューションの強み

迅速な統合。 1対1の交流シナリオカスタマイズコンポーネントを提供し、開発者が機能を迅速かつ簡単に実装できるようにします。

完璧でスケーラブルな機能。 1対1の交流/オンライン友達作りシナリオに必要な基本機能が満たされ、ビジネスシナリオAPIが高く適合し、モジュラーコンポーネントはビューティーモード機能の自由な拡張をサポートします。

非常に高品質、グローバルノード分布。 数年の技術的専門知識を持ち、メッセージの送受信成功率は99.99%を超え、ネットワークジッターに対する耐性は1,000 msを超え、パケットロス率が70%を超えても正常な音声通話が可能です。ノードはアジア太平洋、北米、ヨーロッパ、中東、アフリカなど200以上の国と地域をカバーし、エンドツーエンドの通話遅延は300 msまで低下します。1対1の海外交流ビジネスに対する保護を提供します。

アクセス準備

サービスのアクティベーション

Call と Chat サービスの両方を同時にアクティブにする必要があります。

音声およびビデオ通話とチャットインタラクション機能のために、各 SDKAppID に対して、Call サービスの無料7日間トライアルパッケージ(トライアル版には追加通話時間は含まれません)と Chat サービスの1ヶ月トライアルパッケージを提供します。各 SDKAppID は無料で2回トライアルを体験でき、1つのアカウント下のすべての SDKAppID の合計トライアル数は10です。

TRTC コンソールで Call と Chat トライアル版をアクティブ化できます。具体的な手順は以下の通りです:

1. TRTC コンソールにログインし、アプリケーションの作成をクリックします。

2. ポップアップウィンドウでCallを選択し、アプリケーション名を入力し、データストレージ地域を選択して作成をクリックします。

3. アプリケーション作成後、Callアプリケーション詳細ページがデフォルトで表示されます。この時点で、アプリケーションを迅速に作成し、音声およびビデオ通話(Call)トライアルパッケージを正常に受け取ったことになります。現在のCallアプリケーション詳細ページまたはアプリケーション概要ページで情報を確認し、統合ガイドを参照して統合を行ってください。SDKAppIDSDKSecretKey は統合ガイドで使用されます。

4. 左側のメニューでチャットをクリックし、次にページの始めるをクリックします。これで、チャットサービスを迅速にアクティブ化し、チャットトライアルパッケージを正常に受け取ったことになります。

環境準備

注意:

TUICallKit は、ミニプログラム、iOS、Android、Web、uni-app、および Flutter などの複数のプラットフォームをサポートしています。利便性のために、以降の統合および機能実現はAndroidを例に示します。他のプラットフォームのアクセスガイドラインについては、クイックアクセス文書を参照してください。

  • Android 5.0(SDK API レベル 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 = 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. Java のリフレクション機能が SDK 内で使用されているため、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";     // 自分の UserId に置き換えます。
        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"     // 自分の 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 fun onSuccess() {
            }
            override fun onError(errorCode: Int, errorMessage: String) {
            }
         })    
        // 終了
    }
}
パラメータタイプ説明
userIDString顧客はビジネスに基づいて独自のユーザーIDを定義します。それには文字(a-z, A-Z)、数字(0-9)、アンダースコア(_)、ハイフン(-)のみを含めることができます。
sdkAppIDint音声およびビデオアプリケーションを作成した際の一意の識別子 SDKAppID は、TRTC コンソール で取得できます。
secretKeyString音声およびビデオアプリケーションを作成した際の SDKSecretKey は、TRTC コンソール で取得できます。
userSigStringユーザーログイン認証のためのセキュリティ保護署名であり、ユーザーのアイデンティティを確認し、悪意のある攻撃者からクラウドサービスの利用権を奪われるのを防ぎます。

注意:

開発環境: ローカル開発およびデバッグ段階にいる場合は、ローカルの 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)

ビューティーエフェクト

ビデオ交流プロセス中にユーザーの視覚的魅力を向上させるために、ビューティーエフェクトを有効にすることができます。これにより、活気に満ちた楽しい雰囲気を作り出します。Tencent Effect SDK は TUICallKit コンポーネントとの統合をサポートし、バーチャル背景美化、画像調整、フィルター、ステッカー、アニモジ、および顔をつまむDIYなどの豊富なビューティーエフェクトを提供できます。Tencent Effect SDK に関する詳細は、Tencent Effect SDK 文書を参照してください。ビジネスにビューティーエフェクトを統合したい場合は、Tencent Effect SDK 文書を参照してください。他のサードパーティのビューティーエフェクトを統合したい場合は、サードパーティSDK文書を参照してください。

通話記録

通話記録を表示し、通話時間を取得するには、TUICallKit の サーバーAPI を使用することで、自分の請求システムを構築できます。

UI カスタマイズ

個別の製品 UI ニーズに対応するために、TUICallKit 製品は UI インターフェースのカスタム変更をサポートしています。これにはニックネーム/アバターの設定、カスタム着信音、テキストやアイコンの調整が含まれ、パーソナライズされたビジネスシナリオのセットアップを迅速に完了するのに役立ちます。カスタム UI ニーズがある場合は、以下の文書を参照してください。

ニックネームとアバターの設定(全プラットフォーム対応)

解像度とフィルモードの設定(Web)

カスタム着信音(Android)

インターフェースのカスタマイズ(テキスト、アイコン、カスタムUIを含む)

ソースコードレベルのソリューション

1対1の交流シナリオのために、Tencent Cloud はソースコードレベルのソリューションも提供しています。ソースコードをダウンロードし、文書に従ってバックエンドを設定するだけで、1対1のソーシャルネットワーキングアプリを実行できます。その後、有料の TRTC Call および TRTC Chat を正式に立ち上げることができます。製品サンプル画像は以下の通りです:

1対1の交流シナリオに関するソースコードレベルのソリューションについてさらに知りたい場合は、チケットを提出してください当社の技術スタッフが後ほどご連絡いたします。