【问题标题】:XMPP One To One Chat in IOSXMPP IOS 一对一聊天
【发布时间】:2015-03-15 19:48:44
【问题描述】:

当切换到另一个视图控制器时,我收到“用户 ID 为零”并且发送的消息未存储。我想实现 XMPP 一对一聊天,我该怎么做?

我现在有完整的项目,但它在 nib 文件中;我的工作是将其转换为故事板。我几乎完成了,但我在 XMPP 卡住了。

我必须使用哪些方法遇到一些错误,例如“userid is nill”。

【问题讨论】:

  • 如果有人有代码紧急发送给我如果有人可以帮助我,我会将所有代码发送给您
  • 我知道所有代码都包含在项目中,但是聊天时以前的消息没有存储到数据库中
  • 您使用的是哪个 XMPP 服务器?如果它的ejabberd 可以将所有聊天消息存储在 MySQL 数据库中,然后使用单独的 Web 服务,您可以从 DB 获取聊天记录。
  • 我现在对这个框架不太了解,我什至没有工作过,因为我坚持这个框架会失去我的工作
  • 别着急,看看我下面的答案。 :)

标签: ios iphone ios7 xmpp ejabberd


【解决方案1】:

正如您在评论中提到的,您正在使用 ejabberd XMPP 服务器。有一个模块mod_logdb可以将聊天记录存储到数据库中。

以下是配置示例,只是为了看看如何配置 mysql db 以使用 ejabberd。

{modules, [

  {mod_logdb, [
    {dbs, [
      {mysql5, [
        {user, "root"},
        {password, "pass"},
        {server, "serv"},
        {port, 3306},
        {db, "logdb"}
      ]},
      {mnesia, []}
    ]},
    {vhosts, [{"example1.org", mysql5}, {"example2.org", mnesia}{purge_older_days, 365},
    {dolog_default, true},
    {poll_users_settings, 5}   ]},
     %% Other modules ...
]}.

它将所有聊天历史记录/日志存储到配置文件中给定的数据库中,您可以从中读取它作为普通的 MySQL 查询并通过 web 服务传递给您的应用程序。

参考链接:

  1. mod_logdb
  2. Configuration guide

【讨论】:

  • 老兄,这应该在你的安装 XMPP 的服务器上配置(Linux 或 Windows 服务器)。在 iOS 中没有什么可做的,你只需要使用一个 web 服务,例如get_chat_log.php(无论您喜欢哪种服务器语言),它将从 MySQL 数据库中读取聊天日志并以 JSON/XML 格式输出到您的 iOS 应用程序。然后,您可以将这些聊天消息填充到应用程序的聊天屏幕中。希望它清楚。
  • @Mahesh04 如果您手头没有配置服务器,您可以要求服务器人员安装上述模块并要求他们进行配置。这很容易。
  • 是的,现在很清楚我现在必须使用 api 来获取聊天记录
  • 是的,完全正确。你可能想看看this too
  • 非常感谢,我会调查的 :)
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 2014-05-31
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 2018-03-07
  • 2021-11-11
相关资源
最近更新 更多