メッセージ転送
機能説明
まとめて転送する機能を実装する場合は、次の手順を実行する必要があります:
1. 元のメッセージリストからまとめるメッセージを作成します。
2. まとめたメッセージをピアに送信します。
3. まとめたメッセージを受信した後、ピアは元のメッセージリストを解析します。
下図に示すように、まとめたメッセージを表示させるには、タイトルと概要情報も必要です:
まとめて転送 | まとめたメッセージを表示させる | まとめたメッセージをクリックして、まとめたメッセージの一覧表示をダウンロード |
| | |
メッセージをまとめて転送
まとめて転送するメッセージの作成・送信
まとめるメッセージを作成する場合、まとめるメッセージのリストを設定するだけでなく、タイトルと概要情報も設定する必要があります。実装プロセスは次のとおりです:
1. まとめるメッセージを作成します。まとめるメッセージを作成するとき、元のメッセージリスト、まとめるメッセージのタイトル、まとめるメッセージの概要などの情報を設定する必要があります。
プロパティ | 意味 | 説明 |
merge_elem_message_array | 元のメッセージリスト | まとめて転送する元のメッセージリスト |
merge_elem_title | タイトル | まとめるメッセージのタイトル。たとえば、上記の図に示す「XixiyahとHelloのチャット履歴」です。 |
merge_elem_abstract_array | 概要リスト | まとめるメッセージの概要情報。上記の図に示すように、まとめるメッセージは元のメッセージの概要情報を事前に表示させる必要があり、ユーザーがCellをクリックした後にのみ完全なメッセージの内容が表示されます。 |
merge_elem_compatible_text | 対応のテキスト情報 | 低バージョンのSDKが統合メッセージをサポートしていない場合は、デフォルトでテキストメッセージを受信します。テキストメッセージの内容はmerge_elem_compatible_textです。 |
2. まとめるメッセージを作成して送信するためのサンプルコードを以下に示します:
// 転送する必要のあるメッセージリスト。メッセージリストには統合メッセージを含めることができますが、グループTipsメッセージを含めることはできませんvar message = new Message{message_conv_id = conv_id,message_conv_type = TIMConvType.kTIMConv_Group,message_elem_array = new List<Elem>{new Elem{elem_type = TIMElemType.kTIMElem_Merge,merge_elem_title = "user1とuser2のチャット", // まとめるメッセージのタイトルmerge_elem_message_array = new List<Message>{message1,message2},merge_elem_abstract_array = new List<string>{"user1:hello", "user2:こんにちは" // まとめるメッセージの概要リスト},merge_elem_compatible_text = "現在のバージョンではこのメッセージがサポートされていません" // まとめるメッセージの対応テキスト。低バージョンのSDKがまとめるメッセージをサポートしていない場合は、デフォルトでテキストメッセージを受信します。テキストメッセージの内容はcompatibleTextです}},};StringBuilder messageId = new StringBuilder(128);TIMResult res = TencentIMSDK.MsgSendMessage(conv_id, TIMConvType.kTIMConv_Group, message, messageId, (int code, string desc, string json_param, string user_data)=>{// メッセージの非同期送信の結果});
まとめて転送するメッセージの受信
リスナーの追加
受信者から
AddRecvNewMsgCallback
(クリックして詳細を表示)を呼び出すことで、セッションリスナーを追加できます。
一般に、アプリが時間内にメッセージを確実に受信できるように、チャットメッセージのインターフェースが初期化された後など、比較的早い時点で呼び出すことをお勧めします。サンプルコードは次のとおりです:
TencentIMSDK.AddRecvNewMsgCallback((List<Message> messages, string user_data)=>{foreach(Message message in messages){foreach (Elem elem in message.message_elem_array){// 次のメッセージがあるif (elem.elem_type == TIMElemType.kTIMElem_Merge){}}}})
メッセージの解析
リスナーを追加すると、受信者は
RecvNewMsgCallback
でまとめたメッセージのMessage
を受信します。
まとめるメッセージの要素を使用して、先にmerge_elem_title
と merge_elem_abstract_array
のUI 表示を取得できます。
ユーザーがまとめたメッセージをクリックすると、MsgDownloadMergerMessage
(クリックして詳細を表示)インターフェースを呼び出して、まとめたメッセージリストのUI表示をダウンロードします。サンプルコードは次のとおりです:
if(elem.TIMElemType == TIMElemType.kTIMElem_Merge){elem.merge_elem_abstract_array;elem.merge_elem_layer_over_limit;elem.merge_elem_title;TIMResult res = TencentIMSDK.MsgDownloadMergerMessage(message, (int code, string desc, List<Message> messages, string user_data)=>{// 非同期処理のロジック});}
メッセージを1つずつ転送
単一のメッセージを転送する必要がある場合は、先に元のメッセージとまったく同じ内容の転送メッセージを作成してから、
MsgSendMessage
(クリックして詳細を表示)インターフェースを呼び出して転送メッセージを送信できます。