ニックネームプロフィール画像に関連した問題

セッションのニックネームとプロフィール画像の更新

セッション自体はニックネームとプロフィール画像を保存しません。セッションのニックネームとプロフィール画像はSDKがローカルユーザープロファイルまたはグループプロファイルを取得して入力するものです。シングルチャットセッションの場合、SDKは相手のニックネームとプロフィール画像を取得して入力します。グループチャットの場合、SDKはグループ名とグループプロフィール画像を取得して入力します。ローカルユーザープロファイルまたはグループプロファイルを最新の状態に保つため、SDKはシングルチャットおよびグループチャットの最新バージョンに対して以下の最適化を実行します。
シングルチャットセッション
最適化1:ユーザーが自分でセッションを取得またはSDKがセッション更新をコールバックするときに、ローカルに相手のユーザープロファイルがないことをSDKが検出する場合、ローカルに保存されているユーザープロファイルをサーバーと同期し、相手のユーザープロファイルがローカルに存在するようにします。
最適化2:フレンドプロファイルに変更が生じる場合、SDKはバックエンドが送信する変更通知を取得して直ちにローカルユーザープロファイルを更新します。パブリックプロファイルに変更が生じる場合、バックエンドは通知を送信しません。ローカルのパブリックプロファイルは更新されないため、パブリックプロファイルを確認する必要があるときは自分でプロファイル取得インターフェースを呼び出してローカルプロファイルを更新してください。
最適化3:バックエンドがメッセージを送信するときメッセージボディ内にユーザーの最新のニックネームとプロフィール画像が追加されます。SDKがメッセージを取得後、そのユーザープロファイルがローカルにある場合、ローカルユーザープロファイルに対してニックネームとプロフィール画像が直ちに更新されます。
上述の最適化に基づき、フレンドの場合、SDKはセッション中のニックネームとプロフィール画像を最新にすることができます。パブリックの場合、SDKは最新にすることができないため、必要に応じて取得する必要があります。
グループチャットセッション:
最適化1:ユーザーが「グループの追加」を実行するとき、グループ追加の成功後、SDKは自動的にグループプロファイルを取得しローカルに保存します。
最適化2:追加されたグループのグループプロファイルが修正されると、バックエンドはクライアントに通知します。また、クライアントは直ちにローカルのグループプロファイルを更新します。
上述の最適化に基づき、SDKは追加済みグループのセッションニックネームとプロフィール画像が最新であるようにします。追加していないグループのセッションまたは退出済みグループのセッションの場合、SDKはニックネームとプロフィール画像を最新に保つことはできません。
ご注意:
ユーザープロファイルおよびグループプロファイルを変更してもセッションは更新されません。次のセッション操作(例えば、自分でセッションを取得、セッションを既読にセット、メッセージの送受信等)の後、セッションのニックネームとプロフィール画像が更新されます。
パブリックと自分とのリレーションシップチェーンが存在しない場合、パブリックプロファイルを修正しても、バックエンドは通知を送信せず、ユーザーローカルプロファイルも更新されません。クライアントが自分でユーザープロファイルを取得すると更新されます。

メッセージリスト中のニックネームとプロフィール画像の更新

メッセージ自体がニックネームとプロフィール画像を保存します。メッセージ中のニックネームとプロフィール画像を最新のものに保つため、SDKは最新バージョンで以下の最適化を実行します。
最適化1:バックエンドがメッセージを送信するときユーザーの最新のニックネームとプロフィール画像が追加されます。SDKがメッセージを取得後、そのユーザープロファイルがローカルにある場合、直ちにローカルユーザープロファイルが更新され、メッセージとローカルユーザープロファイルのニックネームとプロフィール画像が最新に保たれます。
最適化2:メッセージの送受信が成功すると、メッセージ中に保存されたニックネームとプロフィール画像は修正することができなくなります。メッセージ履歴がユーザーの新しいニックネームとプロフィール画像を取得できるようにするため、メッセージがニックネームとプロフィール画像フィールドを取得するとき、SDKはまずローカルユーザープロファイルをクエリーします。存在する場合はローカルのニックネームとプロフィール画像を返します(最適化1に基づき、ローカルのニックネームとプロフィール画像は新しいメッセージでリアルタイムに更新されます)。存在しない場合は、メッセージボディ内のニックネームとプロフィール画像を返します。
上述の最適化に基づき、新しいメッセージの場合、SDKはニックネームとプロフィール画像を最新のものに保つことができます。メッセージ履歴の場合、SDKはニックネームとプロフィール画像を最新に保ことができません。ローカルにメッセージ送信者のプロファイルが存在する場合、メッセージ履歴のニックネームとプロフィール画像が更新されます。

よくあるご質問

上記のドキュメントで説明されるように、SDKの最新バージョンではニックネームとプロフィール画像の問題に対して多くの最適化を実行します。ニックネームとプロフィール画像の問題が発生する場合は、まずSDKの最新バージョンにアップグレードして問題が解決されるかどうか確認してください。解決しない場合は、以下のよくあるご質問を参考にしてください。

ニックネームとプロフィール画像が変更されると、セッションは直ちに更新されますか。

ニックネームとプロフィール画像が変更されてもセッションは更新されません。次のセッション操作(例えば、自分でセッションを取得、セッションを既読にセット、メッセージの送受信等)の後に、セッションのニックネームとプロフィール画像が更新されます。このような状況の場合、自分でフレンドプロファイルまたはグループプロファイルの変更通知を監視して、セッションのニックネームとプロフィール画像を更新することができます。

パブリックのニックネームとプロフィール画像が変更されるとき、セッションを更新することはできませんか。

パブリックと自分とのリレーションシップチェーンが存在しないため、そのパブリックプロファイルが変更されるとき、バックエンドは通知を送信せず、ローカルのパブリックプロファイルも更新することができません。次に自分でそのユーザープロファイルを取得するか、そのユーザーが送信したメッセージを受信するときに(メッセージにはユーザーの最新のニックネームとプロフィール画像が含まれ、SDKがメッセージを受信するとローカルユーザープロファイルが更新されます)、セッションのニックネームとプロフィール画像が更新されます。

メッセージ履歴のニックネームとプロフィール画像を更新することはできませんか。

メッセージリスト中のニックネームとプロフィール画像の更新の下の最適化2をご参照ください。ローカルにメッセージが送信したプロファイルがない場合、メッセージ履歴のニックネームとプロフィール画像は更新することができません。自分でそのユーザーのプロファイルを取得すると、メッセージ履歴のニックネームとプロフィール画像が更新されます。

セッション更新またはメッセージ送受信時にSDKがバックエンドからユーザープロファイルを取得しないのはなぜですか。

セッションの更新とメッセージの送受信は頻繁に発生するイベントです。バックエンドがユーザープロファイルと毎回同期すると、クライアントおよびバックエンドに大きなストレスを加えることになり、プログラムのパフォーマンスに大きな影響を与えます。また、これら2つの状況ではユーザーが自分でユーザープロファイルを取得することは推奨されません。同様に大きなパフォーマンスの問題が発生します。推奨される方法は、ユーザーがメッセージのプロフィール画像をクリックする時に自分でユーザープロファイルを再び取得することです。