Appをダウンロードしてインストールすると、TRTC通話の効果を体験できます。
発呼側 | 着呼側 |
---|---|
![]() |
![]() |
注意:オーディオビデオ通話機能を素早く実装できるように、当社はTUICallingコンポーネントをリモデルし、通話UIをTUICallingコンポーネントの内部に実装しました。お客様がUIに気をつかう必要はありません。
TestVideoCall
)を入力して、作成**をクリックします。注意:本機能はTencent CloudのTRTCとIMという2つの基本的なPaaSサービスを同時に使用し、TRTCをアクティブにした後、IMサービスを同期的にアクティブにすることができます。IMは付加価値サービスであり、課金ルールの詳細については、Instant Messagingの料金説明をご参照ください。
クリックしてTUICallingに進み、ソースコードをCloneまたはダウンロードします。
設定変更画面に進み、ダウンロードしたソースコードパッケージに基づき、対応する開発環境を選択します。
iOS/Example/Debug/GenerateTestUserSig.swift
のファイルを見つけて開きます。
GenerateTestUserSig.swift
ファイル内の関連パラメータを設定します。
貼り付け完了後、貼り付けました。次のステップをクリックすれば、作成が完了します。
コンパイル完了後、 コンソール概要に戻る をクリックすれば終了です。
注意:
- ここで言及するUserSigの発行方法は、クライアントコードの中でのSECRETKEY設定となりますが、この手法のSECRETKEYは逆コンパイルによって逆クラッキングされやすく、キーがいったん漏洩すると、攻撃者がお客様のTencent Cloudトラフィックを盗用できるようになります。そのためこの手法は、ローカルのAppクイックスタートおよび機能デバッグにのみ適しています。
- UserSigの正しい発行方法は、UserSigの計算コードをサーバーに統合し、Appのインターフェース向けに提供します。UserSigが必要なときは、Appから業務サーバーにリクエストを発出し動的にUserSigを取得します。詳細はUserSigに関するご質問をご参照ください。
Xcode(バージョン11.0以上)を使用してソースコードプロジェクトTUICalling/Example/TUICallingApp.xcworkspace
を開き、実行をクリックすれば、このAppのデバッグが開始されます。
注意:体験アプリケーションには、少なくとも2台のデバイスが必要です。
ソースコードのSource
フォルダの中にはui、model、Serviceの3つのサブフォルダが含まれています。そのうち、Serviceフォルダには外部に公開しているオープンソースコンポーネントTUICallingManagerが含まれています。TUICallingManager.h
ファイルの中でこのコンポーネントが提供するインターフェース関数を見つけることができます。
オープンソースコンポーネントTUICallingのTUICallingManagerをそのまま使用し、オーディオビデオ通話機能を手軽に実装することができます。もう複雑な通話UIやロジックの実装をご自身で行う必要はありません。
通話コンポーネントTRTCCallingは、TRTC SDKとIM SDKに依存し、次の手順で2つのSDKをプロジェクトに統合することができます。
方法1:cocoapodsリポジトリを介する依存
pod 'TXIMSDK_iOS'
pod 'TXLiteAVSDK_TRTC'
方法2:ローカルを介する依存
開発環境でのcocoapodsリポジトリへのアクセスが遅い場合は、ZIPパッケージを直接ダウンロードし、統合ドキュメントに従って手動でプロジェクトに統合することができます。
SDK | ダウンロードページ | 統合ガイド |
---|---|---|
TRTC SDK | DOWNLOAD | 統合ドキュメント |
IM SDK | DOWNLOAD | 統合ドキュメント |
info.plistファイルにPrivacy - Camera Usage Description
、Privacy - Microphone Usage Description
を追加し、カメラとマイクの権限を申請する必要があります。
cocoapodsによってコンポーネントをインポートします。具体的な手順については、以下のとおりです。
Source
、Resources
、TXAppBasic
フォルダ、TUICalling.podspec
ファイルをプロジェクトディレクトリ下へコピーします。Podfile
ファイル内に以下の依存関係を追加します。その後、pod install
コマンドを実行すると、インポートが完了します。pod 'TXAppBasic', :path => "../TXAppBasic/"
pod 'TXLiteAVSDK_TRTC'
pod 'TUICalling', :path => "../", :subspecs => ["TRTC"]
TUICallingManager.sharedInstance()
を呼び出し、コンポーネントを初期化します。TUILogin.initWithSdkAppID(SDKAPPID)
を呼び出し、ログインを初期化します。TUILogin.login(userId, userSig)
を呼び出し、コンポーネントのログインを完了します。このうちの重要なパラメータの入力については、下表をご参照ください。パラメータ名 | 作用 |
---|---|
sdkAppID | TRTCコンソール で SDKAppIDを表示できます。 |
userId | 現在のユーザーID。文字列タイプでは、英語のアルファベット(a-zとA-Z)、数字(0-9)、ハイフン(-)とアンダーライン(_)のみ使用できます。業務の実際のアカウントシステムと組み合わせてご自身で設定することをお勧めします。 |
userSig | Tencent Cloudによって設計されたセキュリティ保護署名。計算方法についてはUserSigの計算方法をご参照ください。 |
// コンポーネントの初期化
TUICallingManager.sharedInstance();
// ログイン
TUILogin.initWithSdkAppID(SDKAPPID)
TUILogin.login(userId, userSig) {
print("login success")
} fail: { code, errorDes in
print("login failed, code:\(code), error: \(errorDes ?? "nil")")
}
call();
メソッドを呼び出して通話リクエストを送信し、ユーザーIDの配列(userIDs)と通話タイプ(type)を渡します。通話タイプパラメータは.audio
(オーディオ通話)または.video
(ビデオ通話)を渡します。ユーザーID配列(userIDs)のuserIDが1つのみの時は、シングル通話と見なされ、ユーザーID配列(userIDs)のuserIDが複数(>=2)の時は多人数通話と見なされます。//1. リスナーの登録
TUICallingManager.shareInstance().setCallingListener(listener: TUICallingListerner())
// 2. カスタムページ設定の有無(デフォルトはオフ)
TUICallingManager.shareInstance().enableCustomViewRoute(enable: true)
// 3. リスナーコールバックメソッドの実装
public func shouldShowOnCallView() -> Bool {
return true;
}
public func callStart(userIDs: [String], type: TUICallingType, role: TUICallingRole, viewController: UIViewController?) { if let vc = viewController {
callingVC = vc;
vc.modalPresentationStyle = .fullScreen
if var topController = UIApplication.shared.keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
if let navigationVC = topController as? UINavigationController {
if navigationVC.viewControllers.contains(self) {
present(vc, animated: false, completion: nil)
}else{
navigationVC.popToRootViewController(animated: false)
navigationVC.pushViewController(self, animated: false)
navigationVC.present(vc, animated: false, completion: nil)
}
}else{
topController.present(vc, animated: false, completion: nil)
}
}
}
}
public func callEnd(userIDs: [String], type: TUICallingType, role: TUICallingRole, totalTime: Float) {
callingVC.dismiss(animated: true, completion: nil)
}
public func onCallEvent(event: TUICallingEvent, type: TUICallingType, role: TUICallingRole, message: String) {
}
// 4.電話をかけます
TUICallingManager.shareInstance().call(userIDs, .video)
説明:ビジネスの位置付けがオンラインカスタマーサービスなどのオフライン応答機能を必要としないシーンである場合は、上記[手順1](#model.step1)-[手順5](#model.step5)の対応で問題ありません。 しかし、ビジネスの位置付けがソーシャルシーンである場合は、オフライン応答を実装することをお勧めします。
IM SDKはオフラインプッシュをサポートしていますが、使用可能な基準を満たすためには相応の設定を行う必要があります。
TUICallingコンポーネントのAPIインターフェースリストは次のとおりです。
インターフェース関数 | インターフェースの機能 |
---|---|
call | C2C通話に招待します |
receiveAPNSCalled | 被招待者として着信に応答します |
setCallingListener | リスナーを設定します |
setCallingBell | 着信音の設定(30s以内を推奨) |
enableMuteMode | ミュートモードをオンにします |
enableCustomViewRoute | カスタムビューをオンにします。オンにすると、呼び出し/被呼び出し開始コールバックの中で、CallingViewのインスタンスを受信します。開発者自身が表示方式を決定します。注意:フルスクリーンまたはスクリーンと同じ比率で表示する必要があります。そうしない場合、表示に異常が生じます |
この記事はお役に立ちましたか?