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的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms 调用 腾讯地图SDK

Xamarin IOS绑定微信SDK

Xamarin.ios引用第三方SDK

Xamarin - 无法确定 Android SDK 位置

C# Xamarin IOS:相当于 C# IOS Xamarin 中的 SystemClock.ElapsedRealtime()

Xamarin.iOS 目标 iOS 6 SDK