基本情報 | その他情報 |
ユーザー名、性別、誕生日、レベル、キャラクター、携帯電話番号など | その他のゲームで必要な情報 |
比較項目 | IM | 業務バックグラウンド |
ストレージ容量 | 自動スケーリング | 容量が限られており、スケールリングが難しい |
ユーザープロフィール | 標準フィールドとカスタムフィールドを提供し、フィールドの長さと名前に制限がある | カスタマイズ可能で柔軟性が高い |
プロフィールの読み書き | 使いやすいサービスインターフェースとヘルプガイドを提供する | 自分で開発する必要がある |
インターフェース | インターフェース呼出し頻度に制限あり:最大200回/秒 | 必要に応じて、インターフェース呼出しなどの機能を自分で開発できる |
セキュリティ | リモート災害復旧・マルチサイトデプロイが可能 | セルフメンテナンス |
Key-Value
の形式で表します。そのうち、Key
はString
型で、アルファベット大文字・小文字、数字、アンダーバーのみサポートしています。Value
には以下のタイプがあります:タイプ | 説明 |
uint64_t | 整数(カスタムフィールドではサポートされていない) |
string | 文字列で、500バイト以内 |
bytes | bufferの一部で、500バイト以内 |
string 配列 | 文字列配列で、各文字列は500バイト以内で、友達テーブルのTag_SNS_IM_Groupフィールドのみで使用可能 |
フィールド名 | タイプ | 説明 |
Tag_SNS_IM_Group | Array | 友達グループ。文字列配列 |
Tag_SNS_IM_Remark | string | 友達ノート |
Tag_SNS_IM_AddSource | string | 友達追加ルート |
Tag_SNS_IM_AddWording | string | 友達追加コメント |
Tag_SNS_IM_AddTime | Integer | 友達追加タイムスタンプ |
// メッセージイベントリスナーを設定する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_Text){string text = elem.text_elem_content;}}}})// `RecvNewMsgCallback`コールバックを監視し、その中でメッセージを受信する// メッセージを受信したくない場合、`RemoveRecvNewMsgCallback`を呼び出してリスナーをリムーブします。この手順は必須ではありません。必要に応じて実施してください。
メソッド | 特徴 | 運用シーン |
指定したアカウントにメッセージを送信する。受信者が見た送信者は管理者ではなく、管理者が指定したアカウントです | 特定のユーザーにメッセージを送信します。例えば、ランクマッチの報酬など | |
1回で最大500人のユーザーにシングルメッセージを送信できます。呼出し頻度は最大200回/秒です | グループを作成する必要がないため、特定のユーザーにメッセージを送信できます。グループを作成する必要がないため、柔軟性が高いです。ただし、送信するユーザーが多い場合、数回分けて送信する必要があります | |
グループ内で一般メッセージを送信するには、ユーザーを同じグループに追加する必要があります。 | 多くのユーザーにメッセージを送信する場合、グループを作成してから一般メッセージを送信する方法があります。グループの最大メンバー数として、コミュニティ(community)は10万人です | |
App内の全員にメッセージをプッシュする時、ユーザータグと属性を指定してメッセージを送信できます | App内の全員にメッセージをプッシュしたり、人数が非常に多く、イベントプッシュメールなどの特徴的な属性がある場合に利用できます |
{"GroupId": "@TGS#2C5SZEAEF","Random": 8912345, //乱数。5分間で数字が同じな場合、同一メッセージだと判断する"MsgBody": [ // メッセージボディ。1つのelement 配列で構成される。詳細については、フィールドの説明を参照{"MsgType": "TIMTextElem", // テキスト"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMCustomElem", // カスタマイズ"MsgContent": {"Data": "message","Desc": "notification","Ext": "url","Sound": "dingdong.aiff"}}],}
MsgBody
(メッセージボディ)はメッセージ配列です。テキストメッセージとカスタムメッセージをMsgBody に入れて送信できます。// シングルチャットメッセージ履歴の取得// 初めて取得する場合は、msg_getmsglist_param_last_msgをnullに設定します// 再度取得する場合は、msg_getmsglist_param_last_msgは、返されたメッセージリストの最後のメッセージを使用できますvar get_message_list_param = new MsgGetMsgListParam{msg_getmsglist_param_last_msg = LastMessage};TIMResult res = TencentIMSDK.MsgGetMsgList(conv_id, TIMConvType.kTIMConv_C2C, get_message_list_param, (int code, string desc, string user_data) => {// コールバックロジックを処理します});
// すべての未読数を取得するTIMResult res = TencentIMSDK.ConvGetTotalUnreadMessageCount((int code, string desc, GetTotalUnreadNumberResult unread, string user_data)=>{// 非同期処理のロジック});// 未読数変更通知TencentIMSDK.SetConvTotalUnreadMessageCountChangedCallback((int total_unread_count, string user_data)=>{// コールバックロジックを処理します});// すべてのセッションの未読メッセージ数をクリアするTIMResult res = TencentIMSDK.MsgMarkAllMessageAsRead((int code, string desc, string user_data)=>{// 非同期処理のロジック});
https://console.tim.qq.com/v4/all_member_push/im_push?usersig=xxx&identifier=admin&sdkappid=88888888&random=99999999&contenttype=json
{"From_Account": "admin","MsgRandom": 56512,"MsgLifeTime": 120, // オフラインで120秒(2分間)保存"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hi, beauty"}}]}
MsgLifeTime
を設定することで、メッセージのオフライン保存期間(最大7日間)を設定できます。このフィールドが0の場合、メッセージはオンラインユーザーのみに送信され、オフラインでは保存されません。詳細については、サーバーAPIをご参照ください。https://console.tim.qq.com/v4/group_open_http_svc/create_group?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"Owner_Account": "leckie", // グループマスターのUserId(オプション)"Type": "Public", // グループタイプ:Private/Public/ChatRoom/AVChatRoom/Community"Name": "TestGroup", // グループ名(必須)"MaxMemberCount":5 // 最大グループメンバー数(オプション)}
https://console.tim.qq.com/v4/group_open_http_svc/add_group_member?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupId": "@TGS#2J4SZEAEL", // 操作するグループ(必須)"MemberList": [ // 1回で最大300メンバーを追加できる{"Member_Account": "tommy" // 追加するグループメンバーのID(必須)},{"Member_Account": "jared"}]}
グループ満員後群のコールバック
を呼び出して、ゲームを開始できるかを確認できます。リクエストURLの例は次のとおりです:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
{"CallbackCommand": "Group.CallbackAfterGroupFull", // コールバックコマンド"GroupId": "@TGS#2J4SZEAEL" // グループID}
新しいメンバーがグループに参加したコールバック
を呼び出して、その他のグループメンバーに通知します。リクエストURLの例は次のとおりです:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
{"CallbackCommand": "Group.CallbackAfterNewMemberJoin", // コールバックコマンドGroupId": "@TGS#2J4SZEAEL","Type": "Public", // グループタイプ"JoinType": "Apply", // グループへの参加方法:Apply(グループへの参加を申請)、Invited(招待を受けてグループに参加)"Operator_Account": "leckie", // 操作者メンバー"NewMemberList": [ // グループに参加した新しいメンバーのリスト{"Member_Account": "jared"},{"Member_Account": "tommy}]}
グループメンバーが退出したコールバック
を呼び出し、グループ内のその他のプレイヤーに通知したり、ネットワークが原因でゲームを退出されたプレイヤーにメッセージを送信したりできます。グループメンバーが退出したコールバックのリクエストURLの例は次のとおりです。https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
{"CallbackCommand": "Group.CallbackAfterMemberExit", // コールバックコマンド"GroupId": "@TGS#2J4SZEAEL", // グループID"Type": "Public", // グループタイプ"ExitType": "Kicked", // メンバーの退出の形:Kicked-強制退出、Quit-自分がグループから退出"Operator_Account": "leckie", // 操作者"ExitMemberList": [ // グループを退出したメンバーのリスト{"Member_Account": "jared"},{"Member_Account": "tommy"}]}
https://console.tim.qq.com/v4/group_open_http_svc/destroy_group?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupId": "@TGS#2J4SZEAEL"}
グループ詳細情報の取得
を使用して取得できます。リクエストパケットの中で、Filterフィールドを設定してトップに表示した情報を取得できます。サンプルコードは次のとおりです:https://console.tim.qq.com/v4/group_open_http_svc/get_group_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupIdList": [ // グループリスト(必須)"@TGS#1NVTZEAE4","@TGS#1CXTZEAET"]}
グループメンバー詳細情報の取得
を使用して取得できます。サンプルコードは次のとおりです:https://console.tim.qq.com/v4/group_open_http_svc/get_group_member_info?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
{"GroupId":"@TGS#1NVTZEAE4" // グループID(必須)}
MemberNum
からこのグループのグループメンバー数、AppMemberDefinedData
からグループメンバーのカスタムフィールド情報を取得できます。グループメンバープロフィールの取得
を使用し、その他のチームメンバーのプロフィール、例えば、メンバーのロール、待機状態などを取得できます。サンプルコードは次のとおりです:GroupGetMemberInfoListParam param = new GroupGetMemberInfoListParam{group_get_members_info_list_param_group_id = "group_id",group_get_members_info_list_param_identifier_array = new List<string>{"user_id"}};TIMResult res = TencentIMSDK.GroupGetMemberInfoList(param, (int code, string desc, GroupGetMemberInfoListResult result, string user_data)=>{// 非同期処理のロジック});
グループ満員でゲームが開始します
、メンバーがグループに参加/退出しました
など、その他のグループ情報は、チームシーンを参照し、コールバックを呼び出してグループに通知できます。{"CallbackCommand": "Group.CallbackBeforeSendMsg", // コールバックコマンド"GroupId": "@TGS#2J4SZEAEL", // グループID"Type": "Public", // グループタイプ"From_Account": "jared", // 送信者"Operator_Account":"admin", // リクエストの送信者"Random": 123456, // 乱数"OnlineOnlyFlag": 1, //オンラインメッセージは1、そうでない場合は0となります。ライブストリーミンググループの場合はこの属性を無視し、デフォルト値の0とします。"MsgBody": [ // メッセージボディです。TIMMessageのメッセージオブジェクトをご参照ください{"MsgType": "TIMTextElem", // テキスト"MsgContent": {"Text": "red packet"}}],"CloudCustomData": "your cloud custom data"}
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0 // ErrorCodeごとに意味が異なります}
ErrorCode | 意味 |
0 | 発言を許可し、メッセージを正常に送信しました |
1 | 発言を拒否し、クライアントが10016を返しました |
2 | サイレントで破棄し、クライアントが正常を返しました |
{"GroupId": "@TGS#2C5SZEAEF","Random": 8912345, //乱数。5分間で数字が同じな場合、同一メッセージだと判断する"MsgBody": [ // メッセージボディ。1つのelement 配列で構成される。詳細については、フィールドの説明を参照{"MsgType": "TIMTextElem", // テキスト"MsgContent": {"Text": "red packet"}},{"MsgType": "TIMFaceElem", // スタンプ"MsgContent": {"Index": 6,"Data": "abc\\u0000\\u0001"}}],"CloudCustomData": "your cloud custom data","SupportMessageExtension": 0,}
CloudCustomData
を編集することで、メッセージのカスタムデータ(クラウドに保存)を定義し、カスタムメッセージをMsgBody
(メッセージボディ)に記入して送信できます。タイプ | 特徴 |
チャネル | チャットに参加する人数が非常に多く、固定メンバーリストがなく、グループチャットへの参加申請が不要で、いつでも自由に参加/退出できます。オフラインメッセージプッシュは送信不要です。 |
ロビー | チャットに参加する人数が比較的多く、自由に参加/退出できます。メッセージ履歴は検索可能です。 |
チーム | チャットに参加する人数が少なく、チャット相手が知らない人の可能性があり、ゲームが終了すると、チャットルームが廃棄されます。オフラインメッセージプッシュは送信不要です。 |
友達 | C2Cチャットであり、チャット履歴が保存され、チャット相手が友達リストに存在します。 |
私信 | C2Cチャットであり、チャット相手が知らない人の可能性があります。 |
ライブストリーミンググループ | チャットに参加する人数には制限がなく、いつでも自由に参加/退出できます。 |
タイプ | 特徴 |
友達ワークグループ(Work) | 作成後はすでにグループ内にいる友達のみがグループ参加に招待できます。被招待者側の同意またはグループの承認は不要です。 |
知らない人とのソーシャルグループ(Public) | 作成後はグループマスターがグループ管理者を指定できます。ユーザーはグループIDを検索してグループ参加申請を送信した後、グループマスターまたは管理者が申請を承認してからでないとグループに参加できません。 |
臨時ミーティンググループ(Meeting) | 作成後は自由に参加・退出でき、かつグループ参加前のメッセージを確認する機能をサポートしています。音声/ビデオ会議のシナリオ、eラーニングのシナリオなどのTRTC製品と連携させたシナリオに適しています。旧バージョンのChatRoomと同じです。 |
ライブストリーミンググループ(AVChatRoom) | 作成後は自由に参加・退出ができ、グループ参加者数の上限はありませんが、メッセージ履歴の保存はサポートしていません。CSS製品との連携に適しており、弾幕チャットのシナリオに使用します。 |
コミュニティ(Community) | 作成後、自由に出入りでき、最大10w人をサポートします。またメッセージ履歴保存、ユーザー検索グループIDをサポートし、グループ追加申請を開始でき、管理者の承認なしにグループに参加できます。 |
タイプ | ソリューション | 特徴 |
チャネル、ロビー | コミュニティ(Community) | チャットに参加している人が多いため、作成後に自由に参加または退出でき、承認不要です |
友達 | シングルチャット+権限制御(友達だけにメッセージ送信可能 | 友達のみへのメッセージ送信をサポートします |
私信 | シングルチャット+権限制御(Appで任意2人のユーザーの間で送信したシングルチャットメッセージ) | お互い知らない任意2人の間でメッセージを送信するのをサポートします |
チーム | 知らない人とのソーシャルグループ(Public)、臨時ミーティンググループ(Meeting) | ゲーム内のチームメンバーだけがチャットグループに参加できます。オーディオビデでチャットするのをサポートします |
ライブストリーミンググループ | ライブストリーミンググループ(AVChatRoom) | グループメンバー数には制限がありません。いつでも自由に参加または退出できます |
この記事はお役に立ちましたか?