Xamarin C# SDK 中的 Quickblox 聊天设置 save_to_history 为 true
Posted
技术标签:
【中文标题】Xamarin C# SDK 中的 Quickblox 聊天设置 save_to_history 为 true【英文标题】:Quickblox chat setting save_to_history to true in Xamarin C# SDK 【发布时间】:2016-03-01 08:38:55 【问题描述】:我正在使用Quickblox C# SDK。我想向特定对话框发送消息。 Xamarin 特定文档中没有很好地记录它。我决定访问REST API documentation。我可以从那里学到
使用 Chat 2.0,您不会自动存储您的消息。如果不将消息保存到历史记录,也不会创建/更新对话实体。
我可以推断如果我将save_to_history
设置为1,聊天对话框将自动创建,消息将存储在后端。但是我无法弄清楚我应该如何在 C# SDK 中指定它,导致此方法签名中的 extraParam
public void SendMessage(int userId, string body, string extraParams, string dialogId, string subject = null, Quickblox.Sdk.Modules.ChatXmppModule.Models.MessageType messageType = Quickblox.Sdk.Modules.ChatXmppModule.Models.MessageType.Chat)
只是一个字符串。我已经深入研究了反汇编代码,经过一番调查后了解到这个参数在内部被用作 XML,所以我尝试了这两个选项
var extraParams = "<extraParams> " +
"<save_to_history>1</save_to_history> " +
"</extraParams>";
还有
var extraParams = "<save_to_history>1</save_to_history> ";
但这些都不起作用。 有人知道我应该如何指定 extraParam 吗?
问候
【问题讨论】:
【参考方案1】:问题只是我在发送消息之前忘记调用 connect。 这是发送消息的方法
public async Task SendMessageAsync(IUser sender, IChatMessage message, string channelID, CancellationToken token)
await loginIfRequired(sender, token);
var jsonMessage = JsonConvert.SerializeObject(message);
var recipientID = await getQuickbloxUserId(message.RecipientID, token);
var extraParams = "<extraParams> " +
"<save_to_history>1</save_to_history> " +
"</extraParams>";
_quickblox.ChatXmppClient.SendMessage(recipientID, jsonMessage, extraParams, channelID);
里面loginIfRequired
我打电话
_quickblox.ChatXmppClient.Connect(_currentUserID.Value, password);
一切正常,并创建了对话框。 希望这会对某人有所帮助。
【讨论】:
以上是关于Xamarin C# SDK 中的 Quickblox 聊天设置 save_to_history 为 true的主要内容,如果未能解决你的问题,请参考以下文章
C# Xamarin IOS:相当于 C# IOS Xamarin 中的 SystemClock.ElapsedRealtime()