オンライン状態管理

概念の紹介

各ユーザーのステータスには、次の3つのタイプがあります:
フォアグラウンド実行状態(Online)
バックグラウンド実行状態(PushOnline)
未ログイン状態(Offline)
ご注意:
バックグラウンド実行状態(PushOnline)は、モバイル端末(Android、iOS、iPad)にのみ存在し、PC、Mac、Linux、Web端末にはこの状態が存在しません。

フォアグラウンド実行状態(Online)

フォアグラウンド実行状態(Online)は、クライアントとIMサーバーとの間でスムーズなTCPネットワーク接続を維持していることを意味します。クライアントはIMサーバーにメッセージを送信したり、IMサーバーによってプッシュされたメッセージを受信したりできます。
ユーザーがAppを開くと、ステータスはフォアグラウンド実行状態(Online)になります。
Appの起動後、クライアントはIMサーバーとの長いTCP接続を確立し、IMサーバーは、クライアントのネットワークリンク情報やクライアントのプラットフォームバージョンなど、クライアントのオンライン情報を保存します。Appの実行中、IM SDKは定期的にハートビートを送信して、ユーザーのオンラインステータスを確認します。
説明:
ハートビート:IM SDKは、2分毎にハートビートパケットをサーバーに送信してユーザーのオンラインステータスを確認します。

バックグラウンド実行状態(PushOnline)

バックグラウンド実行状態(PushOnline)は、クライアントとIMサーバー間の長いTCP接続の切断を意味します。この場合、メッセージのオフラインプッシュを受信できます。 次のシナリオでのユーザーのステータスは、バックグラウンド実行状態(PushOnline)です:
ユーザーがAppの使用を終了し、Appがバックグラウンドに切り替えられた後、モバイルオペレーティングシステムによってプロセスがkillされるか、またはユーザーが自発的にAppプロセスをkillする。 Appが携帯電話のオペレーティングシステムのキープアライブホワイトリストにあり、ユーザーがApp をバックグラウンドに切り替えた場合、プロセスは携帯電話のオペレーティングシステムによってkillされることはありません。この場合、ステータスはまだフォアグラウンド(Online)となります。フォアグラウンド実行状態(Online)とバックグラウンド実行状態(PushOnline)を判断するための基準の1つは、Appプロセスがkillされているかどうか、つまり、クライアントとIMサーバー間の長いTCP接続が切断されているかどうかです。
ユーザークライアントネットワークを自発的に閉じている(例えば、携帯電話の機内モードをオンにしている)か、またはクライアントネットワークが完全に利用できない(例えば、ネットワーク信号がまったくないトンネルに入る)場合。 この特殊なケースでは、クライアントはTCPプロトコルのFINパケットまたはRSTパケットを送信することもできません。IMサーバーは、400秒待機した後にハートビートパケットがタイムアウトした際、ステータスがバックグラウンド実行状態(PushOnline)になるのを待つ必要があります。
ご注意:
バックグラウンド実行状態(PushOnline)は、モバイル端末(Android、iOS、iPad)にのみ存在し、PC、Mac、Linux、ミニプログラムおよびWeb端末には存在しません。

未ログイン状態(Offline)

未ログイン状態(Offline)は、ユーザーがログインするためのアカウントとパスワードを入力する前の状態をいいます。この時点で、ユーザーはメッセージのオンラインプッシュを受信できず、メッセージのオフラインプッシュも受信できません。 次のシナリオでのユーザーのステータスは未ログイン状態(Offline)です:
ユーザーが自発的にログアウトした場合、またはAppのダウンロード後にログインしていない場合。
ユーザーのステータスがバックグラウンド実行状態(PushOnline)に変更された後、7日以内に再度ログインしなかった場合、ステータスは未ログイン状態(Offline)になります。

ユーザーのオンラインステータスの照会

Appバックグラウンドは、REST API:ユーザーのオンラインステータスの取得を介してユーザーのオンラインステータスを照会することができます。 IM SDKは現在、ユーザーのオンラインステータスを取得できません。

ユーザーのオンラインステータス変更通知

IMは、ユーザーのオンラインおよびオフラインイベントについてAppバックグラウンドに通知することができます。ステータス変更コールバックドキュメントをご参照ください。

ステータス変更の検出のリアルタイム性

Android/iOS/iPad/PC/Mac/Linux

ほとんどの場合、ユーザーステータスの変更はリアルタイムに検出できます。次に例を示します:
ユーザーが自発的にログインすると、ステータスがフォアグラウンド実行状態(Online)になります。
ユーザーが自発的にログアウトすると、ステータスが未ログイン状態(Offline)になります。
ユーザーがクライアントプロセスを自発的にkillするか、またはユーザーがバックグラウンドに切り替えた場合、クライアントプロセスがモバイルオペレーティングシステムによってkillされ、ステータスがバックグラウンド実行状態(PushOnline)になります。
次の特殊なケースの場合のみ、IM CVMは、400秒のハートビートタイムアウトを待機しないとステータスの変化を検知できません。 ネットワークが完全に利用できず、クライアントがTCPプロトコル層のFINパケットまたはRSTパケットの送信さえできない場合、IM CVMは、400秒のハートビートタイムアウトを待機しないと、バックグラウンド実行状態(PushOnline)になったことを検知できません。一般的なシナリオとしては、ユーザーがクライアントのネットワークを自発的に閉じる(例えば、携帯電話の機内モードをオンにする)場合やネットワーク信号がまったくないトンネルに入った場合などがあります。

Web

ユーザーが自発的にWeb端末にログインすると、IM CVMはステータスがフォアグラウンド実行状態(Online)になったことをリアルタイムに検出できます。
さまざまなシナリオの終了/切断のステータス変更時のリアルタイム性については、次のとおりです:
ページを直接閉じると、リアルタイムに検出でき、ステータスが未ログイン状態(Offline)になります。
ページが閉じられていない場合、ネットワークが切断され、検出されるまでに60秒かかり、ステータスが未ログイン状態(Offline)になります。
destroyインターフェースを自発的に呼び出すと、リアルタイムで検知して、未ログイン状態(Offline)になります。

ミニプログラム

ユーザーが自発的にミニプログラムにログインすると、IM CVMはステータスがフォアグラウンド実行状態(Online)になったことをリアルタイムに検出できます。
さまざまなシナリオの終了/切断のステータス変更時のリアルタイム性については、次のとおりです:
右上隅をクリックしてログアウトすると、5秒以内に検出されて、ステータスが未ログイン状態(Offline)になります。
ネットワークが切断されている場合(例えば、携帯電話が機内モードの場合)、60秒以内に検出して、ステータスが未ログイン状態(Offline)になります。
destroyインターフェースを自発的に呼び出すと、リアルタイムで検知して、未ログイン状態(Offline)になります。

マルチ端末ログイン

相互切断

デフォルトの場合、IM SDKは複数の端末に同時にログインすると(PCとAndroidに同時にログインするなど)相互切断が生じ、最後にログインしたデバイスのみがオンラインになります。その前までのログインはすべて切断されてオフラインになります。詳細な相互切断のロジックについては、次のドキュメントをご参照ください:

同時オンライン

IMはコンソールで同時オンラインポリシーの変更をサポートしています。現在サポートされているマルチプラットフォームの同時オンラインポリシーは、次のとおりです:
シングルプラットフォームログイン:Android、iPhone、iPad、Windows、Mac、Webは1種類のプラットフォームのみオンライン可能。
デュアルプラットフォームログイン:Android、iPhone、iPad、Windows、Macは1つの端末がオンライン可能。Webも同時オンライン可能。
トリプルプラットフォームログイン:Android、iPhone、iPadは1種類のプラットフォームがオンライン可能。Windows、Macは1種類のプラットフォームがオンライン可能。Webも同時オンライン可能。
マルチプラットフォームログイン:Android、iPhone、iPad、Windows、Mac、Webは全プラットフォームが同時オンライン可能。
デフォルトの場合、各プラットフォームはオンラインで1つの端末のみをサポートします(例えば、AndroidとAndroidは相互切断が生じます)。フラッグシップ版ユーザーは、Android、iPhone、iPad、WindowsおよびMacと同じプラットフォームにログインできるインスタンス最大数を設定できます。さらにすべてのユーザーは、Webプラットフォームにログインできるインスタンス最大数を設定できます。
同じプラットフォームで複数のデバイスをオンラインにし、ユーザー体験を向上させるために不可欠なツールとして、同じプラットフォームにログインできる最大インスタンス数の設定をサポートし、同じプラットフォーム上の複数のデバイスがログイン後に互いに競合する状況を防ぐことで、よりスムーズなユーザー体験を提供します。
説明:
「同じプラットフォームでの複数のデバイスのオンライン」は、IM Ultimate Editionの機能です。Ultimate Editionを購入した後にのみ使用できます。詳細については、料金説明をご参照ください。 )。