CENChatEngine 0.9.3

CENChatEngine 0.9.3

Serhii Mamontov 维护。



Build Status

文档

PubNub ChatEngine 是一个基于 Objective-C 的面向对象事件发射框架,用于构建聊天应用程序。它极大地缩短了构建聊天应用程序的时间,并提供了一些基本组件,如输入指示器、在线状态监控和消息历史记录。

实时服务器组件由 PubNub 提供。ChatEngine 被设计为可扩展的,包括一个插件框架,以简化添加新功能的过程。

文档

您可以在 完整文档网站 上找到完整的文档。以下链接提供了方便的概览。

概念

  • - 是您,亲爱的。代表当前应用程序的用户。
  • 用户和状态 - 解释如何使用 ChatEngine 与其他用户交互,并获得有关他们的更多信息。
  • 聊天 - ChatEngine 的主要功能。这些是用户彼此交谈的独立房间。
  • 事件 - 发生在聊天中的事情。例如,messageimage_upload
  • 事件数据 - 与事件一起发送的数据。包括事件发送者是谁以及它是发送到哪个聊天的信息。
  • 命名空间 - ChatEngine 有很多事件,因此我们使用命名空间来隔离它们。
  • 通配符 - 获取单个命名空间的所有事件,例如$.online.*可以获取所有类型的在线事件。
  • 搜索 - 获取过去发生的事件。通常在应用程序启动时执行,以显示之前发生的事情。
  • 全局聊天 - 所有用户都连接到的聊天。用于状态管理和应用程序级事件。
  • 在线列表 - 获取聊天室中所有在线用户。
  • 认证 - 如何使用认证密钥识别您的用户并保护频道访问。
  • 隐私 - 每个用户都有一个特殊的聊天频道,只有他们可以发布消息,还有一个直接聊天频道,其他人无法阅读。
  • 私人聊天 - 创建只有其他人不能加入的私人聊天。
  • 错误处理 - 有时事情并不像预期那样进行,这里介绍如何优雅地捕获错误。
  • 插件 - 使用插件添加额外功能,例如表情符号或输入指示器。
  • 构建插件 - 如果你需要的功能不存在,可以轻松构建它。与我们分享吧!
  • PubNub 功能 - ChatEngine使用PubNub功能作为服务器组件,详细信息请见此处。
  • PubNub通道拓扑 - 描述ChatEngine在后台使用的PubNub通道。

插件

图片上传

使用UploadCare服务上传图片并在聊天中渲染它们。

Markdown支持

在接收到消息时,在NSAttributedString中渲染Markdown。

静音用户

允许当前用户停止接收其他用户的事件。

在线用户搜索

在聊天中通过列表搜索在线用户的简单方法。

输入指示器

提供便捷方法,当用户开始或停止输入时触发。

未读消息

允许您将聊天标记为后台运行,并将计数器增加,当事件发送到它时。

表情支持

使用图像作为可能还不支持💩.

事件状态和已读回执

在某人阅读并/或将消息标记为已读时发出额外的事件。

推送通知

Gravatar 支持

使用 Gravatar 服务根据用户状态信息创建头像。

随机用户名

一个插件,为每个用户生成一个结合颜色和动物的随机用户名。

开发

设置环境

需要在用于应用程序开发的机器上安装 Xcode 和 CocoaPods。执行以下步骤完成环境准备

  1. AppStore 安装 Xcode
  2. 安装完成后,启动 Xcode 并按照指示安装命令行工具
  3. Terminal 中运行以下命令安装 CocoaPods
    sudo gem install cocoapods
    

完成这些步骤后,您可以开始构建应用程序。

运行测试

在尝试构建和运行测试之前,您应该完成 环境设置。目前,总共有 1198 个测试(80 个集成测试和 1118 个单元测试)。运行整个测试套件需要大约 ~11分钟

测试的 Xcode 项目包含各种构建配置,可以选择特定类型的测试:单元集成带有代码覆盖的单元带有代码覆盖的集成以及所有带有代码覆盖的测试。

要运行测试,请按照以下说明进行

  1. 克隆仓库
    git clone [email protected]:pubnub/chat-engine-apple.git
    
  2. 导航到 Tests 项目目录
    cd <path to clone location>/chat-engine-apple/Tests
    
  3. 安装必需的依赖项(依赖项列表可以在 Podfile 中查看)
    pod install
    
  4. 安装好依赖项后,应使用 ChatEngine Tests.xcworkspace 文件打开项目。
  5. 在打开窗口的左上角,您应该能够找到以下目标的下拉列表
    • [测试] 全部代码覆盖率
    • [测试] 集成代码覆盖率
    • [测试] 单元代码覆盖率
    • [测试] iOS 集成
    • [测试] iOS 单元
  6. 选择所需的测试目标后,请确保选择了(带有蓝色背景)iPhone 模拟器以用于测试部署。
  7. 按快捷键 Cmd+U 启动测试套件。

从 0.9.2 迁移到 0.9.3

事件处理程序签名已更改,以更好地支持 Swift。从现在起,所有事件处理程序将只接收到 CENEmittedEvent 类型的实例。

这就是现在处理程序的样子

self.client.me.direct.on(@"$.invite", ^(CENEmittedEvent *event) {
    NSDictionary *payload = ((NSDictionary *)event.data)[CENEventData.data];
    CENUser *sender = payload[CENEventData.sender];
    
    CENChat *secretChat = self.client.Chat().name(payload[@"channel"]).create();
});

支持

  • 如果您 需要帮助,有 一般性问题 或者有 功能请求 或要提交 错误报告,请联系 [email protected]