addAdvancedMsgListenerで受信したすべてのタイプのメッセージ(テキスト、カスタム、リッチメディアメッセージ)を監視します。関連のコールバックはV2TimAdvancedMsgListenerプロトコルに定義されています。addAdvancedMsgListener (詳細はこちら)を呼び出して、高度なメッセージリスナーを追加します。一般的には、比較的早い時点で呼び出すことをお勧めします。例えば、チャットメッセージ画面を初期化した後。これでは、Appがタイムリーにメッセージを受信することを確保できます。import { TencentImSDKPlugin } from 'react-native-tim-js';TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener({onRecvC2CReadReceipt: ( receiptList) {},// C2C セッション既読通知(相手がmarkC2CMessageAsReadを呼び出すと、この通知は自分に届く)onRecvMessageModified: ( message) {},// メッセージが変更されたonRecvMessageReadReceipts: ( receiptList) {},// メッセージ既読確認通知(自分から送信したメッセージでは既読確認がサポートされている場合、メッセージの受信側でsendMessageReadReceiptsが呼び出されると、この通知は自分に届く)onRecvMessageRevoked: ( messageid) {},// メッセージ取消しの通知を受信したonRecvNewMessage: ( message) {},// 新しいメッセージを受信したonSendMessageProgress: ( message, progress) {},// メッセージアップロード進捗イベント});
import { TencentImSDKPlugin } from 'react-native-tim-js';// listenerを作成するconst listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {},onSendMessageProgress: (message, progress) {},};// listenerを登録するTencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener);// listenerを削除するTencentImSDKPlugin.v2TIMManager.getMessageManager().removeAdvancedMsgListener(listener);
addAdvancedMsgListenerを呼び出してイベントリスナーを設定します。onRecvNewMessage (詳細はこちら)コールバックを監視し、その中でテキストメッセージを受信します。removeAdvancedMsgListenerを呼び出してリスナーを削除します。このステップは必須ではありません。必要に応じて呼び出してください。import { TencentImSDKPlugin, MessageElemType} from 'react-native-tim-js';const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_TEXT){const text = message.textElem.text;}},onSendMessageProgress: (message, progress) {},};TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener);
addAdvancedMsgListenerを呼び出してイベントリスナーを設定します。onRecvNewMessage (詳細はこちら)コールバックを監視し、その中でカスタムメッセージを受信します。removeAdvancedMsgListenerを呼び出してリスナーを削除します。このステップは必須ではありません。必要に応じて呼び出せばよいです。import { TencentImSDKPlugin, MessageElemType} from 'react-native-tim-js';const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_CUSTOM){const text = message.textElem.text;const data = message.customElem.data;const desc = message.customElem.desc;const ext = message.customElem.extension;}},onSendMessageProgress: (message, progress) {},};TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener);
addAdvancedMsgListenerインターフェースを呼び出して、高度なメッセージリスナーを設定します。onRecvNewMessage (詳細はこちら)コールバックを監視し、メッセージV2TimMessageを取得します。removeAdvancedMsgListenerを呼び出してリスナーを削除します。このステップは必須ではありません。必要に応じて呼び出せばよいです。import { TencentImSDKPlugin, MessageElemType} from 'react-native-tim-js';const listener = {onRecvC2CReadReceipt: (receiptList) {},onRecvMessageModified: (message) {},onRecvMessageReadReceipts: (receiptList) {},onRecvMessageRevoked: (messageid) {},onRecvNewMessage: (message) {if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_IMAGE){const path = message.imageElem.path; // 画像のアップロードパス。メッセージの送信者だけにこのフィールドがある。メッセージの送信者はこのフィールドを使用し、画像を事前に表示し、表示効果を最適化できる。message.imageElem.imageList.map(item => { // 標準画像、オリジナル画像、縮小画像をトラバース// 画像の属性を解析するconst height = item.height;const localUrl = item.localUrl;const size = item.size;const type = item.type; // 標準画像、縮小画像、オリジナル画像const url = item.url;const uuid = item.uuid;const width = item.width;})}TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 3, 0, false);},onSendMessageProgress: (message, progress) {},};TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener: listener);
if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_VIDEO){// ビデオメッセージの属性、サムネイル、再生アドレス、幅と高さ、サイズなどを解析するmessage.videoElem.UUID;message.videoElem.duration;message.videoElem.localSnapshotUrl;message.videoElem.localVideoUrl;message.videoElem.snapshotHeight;message.videoElem.snapshotPath;// ...TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 5, 0, true);}
if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_SOUND){// 音声メッセージの再生アドレス、ローカルアドレス、サイズ、時間の長さなどを解析するmessage.soundElem.UUID;message.soundElem.dataSize;message.soundElem.duration;message.soundElem.localUrl;message.soundElem.url;// ...TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 4, 0, true);}
if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_FILE){// ファイルメッセージのファイル名、サイズ、urlなどを解析するmessage.fileElem.UUID;message.fileElem.fileName;message.fileElem.fileSize;message.fileElem.localUrl;message.fileElem.path;message.fileElem.url;TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(message.msgID);TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(message, 6, 0, true);}
locationElemから直接緯度と経度の情報を解析できます。
以下のサンプルコードでは、V2TimMessageから地理的位置メッセージの中身を解析する方法を示します:if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_LOCATION){// 地理的位置メッセージの緯度・経度、詳細などを解析するmessage.locationElem.desc;message.locationElem.latitude;message.locationElem.longitude;}
faceElem (詳細はこちら)の定義をご参照ください。そのうち、indexとdataはお客様が設定します。if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_FACE){message.faceElem.data;message.faceElem.index;}
V2TIMGroupTipsElemの各フィールドを解析しますV2TIM_GROUP_TIPS_TYPE_GROUP_INFO_CHANGEが解析されたため、グループプロフィール変更の通知だと分かります。
受信側でopMemberから操作者、groupChangeInfoListから変更後のグループ名を取得できます。
すると、「操作者」と「変更後のグループ名」を組み立てて、グループ通知を構成できます。例えば、「aliceさんがグループ名をgroup123に変更しました」。if(message.elemType == MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS){message.groupTipsElem.groupID; // 所属するグループmessage.groupTipsElem.type; // グループTipsのタイプmessage.groupTipsElem.opMember; // 操作者のプロフィールmessage.groupTipsElem.memberList; // 操作対象となる者のプロフィールmessage.groupTipsElem.groupChangeInfoList; // グループ情報の変更詳細message.groupTipsElem.memberChangeInfoList; // グループメンバーの変更情報message.groupTipsElem.memberCount; // 現在のオンライングループメンバー数}
Messageオブジェクトから1番目のElemオブジェクトを解析します。if (message.textElem.nextElem != null) {// 次のメッセージがある}
フィードバック