グループメッセージ
ユースケース
グループ内でのメッセージ送受信
グループメンバーは、グループ内でメッセージを送受信します。
App管理者のメッセージ送信
グループチャットメッセージは、App管理者がバックグラウンドでメッセージ送信することも、他のユーザーになりすまして送信することもできます(App管理者または送信者がグループメンバーでなくても、メッセージは送信されます)。
App管理者によるシステムメッセージのシミュレーション
App管理者がバックグラウンドでメッセージを送信することによって、システムメッセージをシミュレーションし、システムメッセージの形式でオンラインのグループメンバーに通知することができます。App端末は、App管理者からカスタムメッセージを受信すると、特殊処理を行うことができます。
グループメッセージのSEQメカニズム
IMは、グループごとにメッセージSEQを保持します。SEQの初期値は1です。グループで通常メッセージが生成されるたびに、IMバックグラウンドは、現在のSEQ値をメッセージのSEQとして使用し、SEQを1ずつ増やします。
グループID + SEQは、メッセージの一意の識別子に相当します。
ご注意:
IMは、ローミングメッセージにのみ増分SEQを生成します。
グループメッセージタイプ
メッセージタイプ | 説明 |
テキストメッセージ | メッセージの内容は通常のテキストです |
画像メッセージ | メッセージの内容は、画像のURLアドレス、サイズ、画像サイズなどの情報です |
絵文字 | 絵文字は開発者向けにカスタマイズされています |
音声メッセージ | 音声データは秒単位で時間の長さ情報を提供する必要があります |
地理的位置メッセージ | メッセージの内容は、地名、経度、緯度の情報です |
ファイルメッセージ | メッセージの内容は、ファイルのURLアドレス、サイズ、形式などの情報であり、形式に制限はなく、最大100Mをサポートします |
UGSVメッセージ | メッセージの内容は、UGSVファイルのURLアドレス、長さ、サイズ、形式などの情報で、最大100Mをサポートします |
カスタムメッセージ | Red Packetメッセージ、ジャンケンなど、開発者がカスタマイズしたメッセージタイプです |
システム通知メッセージ | 内蔵されているシステム通知メッセージと開発者がカスタマイズしたシステム通知メッセージがあります |
グループメッセージ能力
タイプ | 機能説明 | ユースケース |
グループ通常メッセージの送信 | グループメンバーはIM SDKインターフェースを介してメッセージを送信できます。App管理者は、グループに参加しなくても、REST APIを呼び出して任意のグループでメッセージを送信できます。 | グループメンバーはグループ内でメッセージを送信し、App管理者は任意のグループにメッセージを送信します |
グループシステムメッセージの送信 | App管理者は、グループに参加しなくても、REST APIを呼び出してグループでシステム通知を送信できます。システム通知は、オンラインのグループメンバーのみがメッセージを受信し、ローミング機能を備えません。 | App管理者は、一部またはすべてのオンラインのグループメンバーに、時間制限のあるリマインダをプッシュします |
グループメッセージのオフラインプッシュ | Apple、Huawei、Xiaomi、OPPO、vivo、Meizuといったブランドの携帯電話のオフラインプッシュをサポートします | グループチャットメッセージのオフラインプッシュ |
グループのオンラインメッセージの受信 | グループメンバーは、IM SDKを介してグループチャットのオンラインメッセージを受信できます | オンラインのグループメンバーはグループメッセージをリアルタイムで受信します |
グループメンバーによるオフラインメッセージやメッセージ履歴の取得 | グループメンバーは、IM SDKインターフェースを介してメッセージ履歴をクエリします | グループメンバーがオンラインになってオフラインメッセージを受信し、グループメンバーがグループチャットの記録を確認します |
Appバックグラウンドでのグループメッセージの取得 | App管理者は、REST APIを介して一定期間にAppが生成するすべてのメッセージをダウンロードできます。App管理者は、REST APIを介して任意のグループチャット記録を取得することもできます。Appバックグラウンドは、グループでの発言後コールバックを通じて、グループメッセージをリアルタイムで取得できます。 | Appがメッセージ記録を定期的にバックアップするシナリオ、Appが指定されたグループのメッセージ履歴をすばやく取得する必要があるシナリオ、Appがグループメッセージをリアルタイムで取得する必要があるシナリオ |
メッセージの削除 | メッセージが伝播されないように、REST APIを介してメッセージ履歴を削除することができます | グループ内の悪意のある情報を削除します |
グループチャットメッセージで送信者情報を含める | グループメッセージに送信者のニックネーム、プロファイルフォト、グループのプロファイル、ユーザーディメンションのカスタムフィールド、グループメンバーディメンションのカスタムフィールドを含めます | 送信者のニックネーム、プロファイルフォトなどの情報を表示します |
グループメッセージ送信の制御 | 発言禁止およびグループメッセージ送信前のコールバックは、グループメッセージ送信を制御する2つの方法です。 | グループ内の特定のメンバーがメッセージを送信することを禁止します。グループ内のすべてのメンバーがメッセージを送信することを禁止します。Appバックグラウンドでメッセージをフィルター処理または変更します |
グループメッセージ受信の制御 | ユーザーは、1つのグループに対して、受信と表示、受信と非表示、メッセージのブロックを含む異なるメッセージ受信オプションを設定します。「受信と非表示」設定後、iOS端末はAPNsプッシュ機能を削除します | ユーザーが特定のグループからのメッセージをブロックします |
グループメッセージの頻度制御 | 通常のグループメッセージの送信頻度を制御します。デフォルト値は1秒あたり40件です。頻度制御オブジェクトには、App管理者がREST APIを使用して送信したグループシステムメッセージが含まれません。詳しくは、以下のメッセージ優先度と頻度制御をご参照ください。 | メッセージによる画面リフレッシュを回避します |
ご注意:
送信者のニックネームとプロファイルフォトを含める必要がある場合は、これら2つのフィールドの情報をIMのユーザー個人情報にインポートする必要があります。
カスタム情報を含める必要がある場合は、最初にコンソールでカスタムフィールドを設定してから、メッセージ内に対応するフィールドを含むチケット申請を提出する必要があります。
グループメッセージ送信の制御
次の方法を通じてグループメッセージの送信を制御することができます:
制御方法 | 詳細説明 |
グループ内の発言禁止 | 特定のユーザーが一定期間内にグループ内で発言することを禁止します。1つのグループに対してのみ有効です。ユーザーがグループから退出し、グループに再参加した場合でも、発言禁止期間が経過していない限り、禁止は引き続き有効です |
グループメッセージ送信前のコールバック | グループメッセージをグループメンバーに送信する前に、IMバックグラウンドは、最初にAppバックグラウンドにアクセスしてメッセージの送信を許可するかどうかを確認します。許可されていない場合は、メッセージの送信を拒否します。 Appバックグラウンドがコールバックを受信した後、メッセージの内容を変更してIMに返すこともできます。IMは、変更後の情報を使用してメッセージを送信します。詳細については、グループ内での発言前のコールバックをご参照ください。 しかし、IMがコールバックを開始した後、最大2秒間のみ待機します。2秒以内にレスポンスがない場合、メッセージは再試行せずにグループメンバーに直接送信されます |
メッセージの優先度と頻度制御
グループメッセージの優先度
グループメッセージの優先度は3段階に分かれ、グループメッセージが頻度制限を超えた場合、バックグラウンドは優先度の高いメッセージを優先的に送信します。このため、ユーザーはメッセージの重要度に応じて、適切な優先度を選択する必要があります。
3段階の優先度は高いほうから順に、それぞれ次のようになります:
優先度 | この優先度のメッセージタイプを選択することをお勧めします |
High | レットパケットメッセージとプレゼントメッセージ |
Normal | 通常のテキストメッセージ |
Low | いいねのメッセージ |
グループメッセージの頻度制御
メッセージ総数の頻度制御
説明:
メッセージ総数の頻度制御とは、1つのグループが1秒間に送信できる最大メッセージ数の制限であり、デフォルト値は40件/秒で、毎秒平均の頻度制限を採用します。メッセージ数が制限を超過すると、バックグラウンドは優先度が相対的に高いメッセージを優先的に送信します。優先度が同等のメッセージの順序はランダムとなります。
頻度制限の対象となったメッセージは送信されず、メッセージ履歴にも保存されませんが、送信者には成功と返されます。グループ内での発言前のコールバックはトリガーされますが、グループ内での発信後のコールバックはトリガーされません。
優先度の頻度制御
優先度の頻度制御とは、1つのグループが1秒間に送信できる特定の優先度のメッセージの最大数であり、メッセージ送信リクエストは、メッセージ総数の頻度制御の後にのみ、優先度の頻度制御に進むことができます。
すべてのメッセージには、40件/秒の頻度制限が適用されます。3つの優先度を設定できます。優先度Highに設定されたメッセージは、制限されないように最高の優先度を持ちます。同じ秒の高優先度のメッセージの総数が40件/秒を超えると、優先度の高いメッセージも破棄されます。
グループオフラインメッセージの処理フロー
グループオフラインメッセージの処理フローは次のとおりです:
1. ユーザーAが
sendMessage
を呼び出して、ユーザーCにメッセージを送信します。ユーザーBはオフライン状態です。
1.1 グループCをユーザーBの最近の連絡先に追加します(キャッシュサイズは100)。
1.2 ユーザーは、グループの最新のメッセージseqを含む、グループのメッセージ情報を更新します。
1.3 メッセージをローミングサーバーに保存します(期限は7日間)。2. ユーザーBが
login
インターフェースを呼び出して、IMにログインします。3. SDKは、最新のメッセージseqと未読数を含む、すべてのグループメッセージseq情報を自動的にプルします。
4. SDKは、最新の連絡先を自動的にプルし、
OnNewMessage
インターフェースを介してスローします。5. メッセージ同期プロセスが完了します。
OnRefresh
インターフェースを介してグループメッセージ同期が完了したことをユーザーに通知します。6. ユーザーが
getMessage
を呼び出して、SDKはローミングサーバーを自動的にプルします。