最終更新日:2021-06-29 19:21:52

    デモンストレーション

    音声通話機能をすばやく実装する必要がある場合、当社が提供するDemoをもとにアダプターを修正するか、または当社が提供するTRTCCalling コンポーネントでUIのカスタマイズを実装することができます。

    注意:

    当社は TRTCAudioCall コンポーネントを過去に提供していましたが、旧バージョンのコンポーネントは コンポーネントリポジトリ に移動済みです。TRTCCalling コンポーネントはIM シグナリングのインターフェースを使用するため、旧コンポーネントとの互換性がなくなります。

    Demo の UI を再利用

    手順1:アプリケーションの新規作成

    1.Tencent Real-Time Communicationコンソールにログインし、【開発支援】>【Demoのクイック実行】を選択します。
    2.【今すぐ開始】をクリックし、例えば、TestVideoCallなどアプリケーション名を入力して、【アプリケーションの作成】をクリックします。

    注意:

    本機能はTencent Cloud TRTCIM という2つの基本的な PaaS サービスを同時に使用し、TRTCをアクティブにした後、IM サービスを同期的にアクティブにすることができます。 IM は付加価値サービスであり、請求ルールの詳細については Instant Messagingの価格説明をご参照ください。

    手順2:SDKおよびDemoのソースコードをダウンロード

    1.マウスを該当するカードまで移動し、【Github】をクリックしてGithub(または【ZIP】をクリック)にジャンプして、関連するSDK および付属のDemoソースコードをダウンロードします。

    2. ダウンロード完了後、Tencent Real-Time Communicationコンソールに戻り、【ダウンロードしました。次のステップ】をクリックすれば、SDKAppIDおよびキー情報をクエリできます。

    手順3:Demoプロジェクトファイルの設定

    1.手順2 でダウンロードしたソースコードパッケージを解凍します。
    2. iOS/TRTCScenesDemo/TXLiteAVDemo/Debug/GenerateTestUserSig.h ファイルを探して開きます。
    3. GenerateTestUserSig.hファイルの関連パラメータを設定します。
    - SDKAPPID:デフォルトは0、実際のSDKAppIDを設定してください。
    - SECRETKEY:デフォルトは空文字列。実際のキー情報を設定してください。

    4.Tencent Real-Time Communicationコンソールに戻り、【貼り付け完了。次のステップ】をクリックします。
    5.【ガイドを閉じてコンソールへ進む】をクリックします。

    注意:


    -本書で言及した新規UserSigの作成法は、クライアントコードでSECRETKEYを設定し、この手法のうちSECRETKEYは逆コンパイルによって逆向きにクラッキングされやすく、キーがいったん漏洩すると、攻撃者はTencent Cloudトラフィックを盗用できるようになり、そのためのこの手法はローカルDemo実行および機能デバッグにのみ適合します

    • UserSigの正しい発行方法は、UserSigの計算コードをサーバーに統合し、Appのインターフェース向けに提供します。 UserSigが必要なときは、Appから業務サーバーにリクエストを発出し動的にUserSigを取得します。詳細はサーバーでのUserSig新規作成をご参照ください。

    手順4:Demoの動作

    Xcode(11.0以上のバージョン)を使用してソースコードプロセス iOS/TRTCScenesDemo/TXLiteAVDemo.xcworkspaceを開き、【実行】をクリックすれば本 Demoのデバッグを開始することができます。

    手順5:Demo ソースコードの修正

    ソースコードフォルダ TRTCCallingDemoに2つのサブフォルダui と modelが含まれ、その内、ui フォルダに含まれるのはすべてインターフェースコードです。

    ドキュメントまたはフォルダ 機能の説明
    TRTCCallingVideoViewController.swift ビデオ通話のメインインターフェースが表示され、このインターフェースで通話の応答と拒否が完了します。
    TRTCCallingAudioViewController.swift 音声通話のメインインターフェースが表示され、このインターフェースで通話の応答と拒否が完了します。
    TRTCCallingContactViewController.swift 連絡先を検索するためのインターフェースを表示するために使用されます。

    UIカスタマイズの実装

    [ソースコード] フォルダ TRTCCallingDemo 中には2つのサブフォルダ ui と modelが含まれ、その内、 model フォルダには当社が実装した再利用可能なオープンソースコンポーネント TRTCCallingが含まれています。 このコンポーネントが提供するインターフェース関数は TRTCCalling.h ファイルで確認できます。

    オープンソースコンポーネント TRTCCalling を使用して自身の UIを実装することができます。つまり model パーツを再利用するだけで、自身で UI パーツを実装できます。

    手順1: SDKへの統合

    通話コンポーネント TRTCCallingは、TRTC SDK と IM SDKに依存し、次の手順で2つの SDKをプロジェクトに統合することができます。

    • 方法一:cocoapodsリポジトリを介する依存
      pod 'TXIMSDK_iOS'
      pod 'TXLiteAVSDK_TRTC'
      
      説明:

      2つの SDK 製品の最新バージョン番号は、TRTCIM の Github トップページで取得することができます。

    • 方法二:ローカルを介する依存
      開発環境でのcocoapods リポジトリへのアクセスが遅い場合は、ZIPパッケージを直接ダウンロードし、統合ドキュメントに従って手動でプロジェクトに統合することができます。
      SDKダウンロードページ統合ガイド
      TRTC SDK DOWNLOAD 統合ファイル
      IM SDK DOWNLOAD 統合ファイル

    手順2:権限の設定

    info.plist ファイルに Privacy - Camera Usage DescriptionPrivacy - Microphone Usage Descriptionを追加し、カメラとマイクの権限を申請する必要があります。

    手順3:TRTCCalling コンポーネントをインポート

    次のディレクトリ内のすべてのファイルをプロジェクトにコピーします。

    iOS/TRTCSceneDemo/TXLiteAVDemo/TRTCCallingDemo/model 
    

    手順4:コンポーネントの初期化およびログイン

    1. プッシュ関連情報を設定します。
      [TRTCCalling shareInstance].imBusinessID = your business ID;
      [TRTCCalling shareInstance].deviceToken =  deviceToken;
      
    2. login(sdkAppID: UInt32, user: String, userSig: String, success: @escaping (() -> Void), failed: @escaping ((_ code: Int, _ message: String) -> Void)) をコールし、コンポーネントのログインを完了します。なおいくつかの重要パラメータの入力については下表をご参照ください。
      パラメータ名作用
      sdkAppID Tencent Real-Time Communicationコンソール で SDKAppIDを表示できます。
      user 現在のユーザーID、文字列タイプでは、英語のアルファベット(a-z と A-Z)、数字(0-9)、ハイフン(-)とアンダーライン(_)のみ使用できます。
      userSig UserSigの計算方法
      // ログイン
      [[TRTCCalling shareInstance] login:SDKAPPID user:userID userSig:userSig success:^{
          NSLog(@"Audio call login success.");
      } failed:^(int code, NSString *error) {
          NSLog(@"Audio call login failed.");
      }];
      

    手順5: 1v1 通話の実現

    1. 発信者: TRTCCallingcall(userId, callType)方法をコールし、userId パラメータをユーザーIDとし、 callTypeに音声タイプCallType_Audioを渡すと、音声通話のリクエストを開始することができます。
    2. 受信者が onInvitedイベントを受け取った場合は、acceptメソッドを介して通話を受信することができ、また rejectメソッドを介して通話を拒否することもできます。
      3 発信者が onUserEnter のコールバックを受け取った場合は、受信者が通話に参加したことを意味します。
    // 1.監視のコールバック
    [[TRTCCalling shareInstance] addDelegate:delegate];
    // 応答/拒否
    // B もIMシステムにログインしている場合は、 onInvited(A, null, false) のコールバックを受け取ることができます。
    //  TRTCCallingのacceptメソッドをコールして受信することができます / TRTCCallingのreject メソッドをコールして拒否することができます
    -(void)onInvited:(NSString *)sponsor
           userIds:(NSArray<NSString *> *)userIds
       isFromGroup:(BOOL)isFromGroup
          callType:(CallType)callType {
      [[TRTCCalling shareInstance] accept];
    }
    // 2.コンポーネントの他の機能関数をコールし、通話を開始したり終了したりします
    // 注意:ログインしなければ正常にコールできません
    // ビデオ通話を開始します
    [[TRTCCalling shareInstance] call:@"ターゲットユーザー" type:CallType_Audio];
    // 通話を終了します
    [[TRTCCalling shareInstance] hangup];
    // 拒否します
    [[TRTCCalling shareInstance] reject];
    

    手順6:多人数のビデオ通話を実現

    1. 発信者:多人数の通話では、TRTCCallinggroupCall() 関数をコールし 、ユーザーリスト(userIdList)、グループIM ID(groupId)、通話タイプ(type) を入力する必要があります。なお userIdList は入力必須パラメータ、groupId はオプションパラメータであり、callTypeに音声タイプ`CallType_Audiを渡すと、多人数の通話を開始することができます。
    2. 受信者: onInvited() コールバックを介して今回のリクエストを受け取ることができます。
    3. 受信者:コールバックを受け取った後、accept() メソッドをコールし 、この通話に応答することができます。reject() メソッドをコールして通話の拒否を選択することもできます。
    4. 一定時間(デフォルトは30s)を超えて応答しなかった場合、受信者は onCallingTimeOut() のコールバックを受け取り、発信者は onNoResp(String userId)() というコールバックを受け取ります。通話発信者が複数の着信に応答しない場合は hangup()を受け取り 、各受信者は onCallingCancel()という コールバックを受け取ります。
    5. 現在の多人数の通話から退出したい場合は、hangup() 方法をコールします。
    6. 通話中にユーザーが途中参加し、または退出する場合、他のユーザーは onUserEnter() または onUserLeave() というコールバックを受け取ります。
    // 前記省略...
    // ダイヤルするユーザーリストをまとめます
    NSArray *callList = @[];
    [callList addObject:@"b"];
    [callList addObject:@"c"];
    [callList addObject:@"d"];
    // あるIM グループ内で開始されていない場合は、groupIdを空文字列とすることができます。
    [[TRTCCalling shareInstance] groupCall:callList type:CallType_Video groupID:@""];
    
    説明:

    onRejectonCancel などのイベントに対する一連の監視コールバックを介して、対応するUIを表示することができます。

    手順7:オフライン応答の実装

    説明:

    ビジネスの位置付けがオンラインカスタマーサービスなどのオフライン応答機能を必要としないシーンである場合は、上記[手順1](#model.step1)-[手順6](#model.step6)の対応で問題ありません。 しかし、ビジネスの位置付けがソーシャルシーンである場合は、オフライン応答を実装することをお勧めします。

    IM SDKはオフラインプッシュをサポートしていますが、使用可能な基準を満たすためには相応の設定を行う必要があります。

    1. Apple プッシュ証明書を申請する場合の具体的な操作についてはApple プッシュ証明書申請をご参照ください。
    2. バックエンドおよびクライアントにおいてオフラインプッシュを設定します。
    3. login 関数の param.busiId を対応する証明書IDに修正します。

    コンポーネント API リスト

    TRTCCalling コンポーネントの API インターフェースリストは次のとおりです。

    インターフェース関数 インターフェースの機能
    addDelegate TRTCCallingプロキシコールバックを設定すると、ユーザーはこのコールバックを介してステータス通知を受け取ることができます
    login IMにログインします。すべての機能を使用するためには、まずログインする必要があります
    logout IMからログアウトします。ログアウト後はダイヤル操作ができません
    call C2C の通話に招待します。被招待者は onInvited のコールバックを受け取ります
    groupCall IM グループの通話に招待します。被招待者は onInvited のコールバックを受け取ります
    accept 被招待者として通話に応答します
    reject 被招待者として通話を拒否します
    hangup 通話を終了します
    startRemoteView リモートユーザーのカメラデータを指定の UIView にレンダリングします
    stopRemoteView 任意のリモートユーザーのカメラデータ のレンダリングを停止します
    openCamera カメラを起動し、指定の TXCloudVideoView にレンダリングします
    closeCamera カメラを終了します
    switchCamera 前後カメラを切り替えます
    setMicMute micをミュート/非ミュートに設定します
    setHandsFree ハンズフリーを起動するかどうかを設定します