XMPPFramework 4.0.0

XMPPFramework 4.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 未知
发布最后发布2018年6月

ProcessOneChris Ballinger维护。



  • 作者:
  • Robbie Hanson

XMPPFramework

XMPPFramework

Build Status Version Status Carthage compatible Platform License (3-Clause BSD)

为Mac和iOS开发社区提供的XMPP框架。

摘要

XMPPFramework提供了RFC-3920(XMPP标准)的核心实现,以及读取和写入XML所需的工具。它包含了多个流行的扩展(XEP),所有这些都建立在模块化架构之上,允许您插入完成工作所需的任何代码。此外,框架是大规模并行和线程安全的。使用GCD构建,无论是在旧iPhone上还是在12核Mac Pro上运行,此框架都表现良好。(而且它绝不会阻塞主线程...)

安装

最低部署目标为iOS 8.0 / macOS 10.9 / tvOS 9.0。

从 3.7 迁移到 4.0

为了提高 XMPPFramework 在 Swift 中使用时的体验性和安全性,对公开 API 进行了一系列的修改。大多数 Objective-C 项目不需要做任何修改,只有一些小的例外。由于新的可空性注解,纯 Swift 项目需要做很多(简单的)修改。当前的迁移过程尚未完成,所以请提交问题并提供帮助,以尽量减少未来的破坏性更改。

  • XMPPFrameworkSwift.framework 和 XMPPFramework/Swift subspec 中的 Swift 支持

  • 现代 Objective-C 语法:可空性注解和泛型。

  • 大部分核心、认证、分类和工具库已经审核过。需要更多的帮助来审核扩展。

  • XMPPJID 中的 bareJID 现在作为 bareJID 而非 bare 导入 Swift,以避免与 bare String 冲突。也适用于 domainJID

  • XMPPPresence 中的 intShow 已更名为 showValue,并且现在是一个 XMPPPresenceShow 枚举,而不是 int。在 4.0 中将引发警告,但将在 4.1 中删除。

  • 当使用 Swift 扩展时,XMPPMessage 中的 chatState 字符串值现在作为原生 Swift String 枚举导入到 Swift 中。提供新的 chatStateValue 属性来访问 Swift 和 Obj-C 中的原始 String 值。

  • 在适用的情况下使用只读属性而非获取方法。已删除属性获取方法命名覆盖,以反映 Apple 的方法。

  • 以下模块仍需审核。如果您使用这些模块,请帮助审核它们并提交一个 pull 请求,否则它们的 API 可能在未来版本中包含破坏性更改。

    • XEP-0191 阻止
    • XEP-0199 Ping
    • XEP-0202 时间
    • XEP-0136 归档
    • XEP-0115 功能(未审核 CoreDataStorage)
    • XEP-0045 MUC(未审核存储)
    • XEP-0054 vCardTemp(未审核 CoreDataStorage)
    • XEP-0016 隐私
    • XEP-0012 最后活动
    • XEP-0009 RPC
    • 联系人列表(未审核存储)
    • XMPPGoogleSharedStatus
    • 文件传输
    • CoreDataStorage
    • 带宽监控

Swift 支持

XMPPFramework 现在接受 Swift 编写的贡献,有一些限制。Swift 代码必须隔离在 Swift/ 文件夹中,并且现有的或未来的 Obj-C 代码不得依赖于它。所有用 Swift 编写的公开 API 必须与 Objective-C 兼容,并标记为 @objc

有关更多详细信息,请参阅下面的贡献部分。

CocoaPods

使用 CocoaPods 安装 XMPPFramework 是最简单的方法。

仅安装框架的 Objective-C 部分时

pod 'XMPPFramework'

要使用新的 Swift 功能

use_frameworks!
pod 'XMPPFramework/Swift'

执行 pod install 命令后,打开 .xcworkspace 文件并导入。

@import XMPPFramework;   // Objective-C
import XMPPFramework     // Swift

Carthage

要使用 Carthage 将 XMPPFramework 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它。

github "robbiehanson/XMPPFramework"

运行 carthage 命令以构建框架,并将构建好的 XMPPFramework.framework 拖动到您的 Xcode 项目中。如果您想包括用 Swift 编写的新的功能,请也将 XMPPFrameworkSwift.framework 拖动到您的项目中。您需要在您的头文件中手动导入 import XMPPFrameworkSwift

贡献

请贡献您的代码!如果您计划实现更大的功能,请首先提交一个 issue 以获取社区的反馈。请使用现代 Objective-C 语法,包括可空性和泛型。以下是一些建议以使此过程更顺畅:

  • 确保将所有新的文件添加到 XMPPFramework.xcodeproj 中的 iOS、macOS 和 tvOS 目标,并确保所有适用的头文件都设置为公共。
  • 请尝试编写可测试的代码。使用 XMPPMockStream 可以使测试变得相当容易。查看 Testing-Shared 中的示例以获取灵感。
  • 您将需要 cocoaPods 和 Carthage 都可用以进行测试。在仓库根目录中运行 carthage checkout,然后在 Testing-iOSTesting-macOS 文件夹中运行 bundle install && bundle exec pod install
  • Testing-Shared 文件夹中创建您的测试文件,并将其添加到 Testing-Carthage/XMPPFrameworkTests.xcodeprojTesting-macOS/XMPPFrameworkTests.xcworkspaceTesting-iOS/XMPPFrameworkTests.xcworkspace 中的 iOS、macOS 和 tvOS 目标。
  • 如果您计划编写 Swift 代码,请将其保存在 Swift/ 文件夹中,并确保没有任何纯 Obj-C 代码依赖于它。所有公共 API 必须是 Obj-C 兼容的,并标记为 @objc。请记住将您的文件添加到 XMPPFrameworkSwift.framework 目标。确保您的所有单元测试都能在 CocoaPods 和 Carthage 集成中通过。请查看 Testing-Carthage/XMPPFrameworkSwiftTests.xcodeprojTesting-Swift/SwiftOnlyTest.swiftTesting-macOSTesting-iOSXMPPFrameworkSwiftTests 目标内的示例。

想帮助但不知从何开始?

  • 框架的大部分内容尚未标注为可空性和泛型。
  • 增加更多的测试覆盖率总是受欢迎。
  • 改进旧的示例项目

安全问题

如果在您中发现安全问题,请不要在GitHub上公开问题,而是直接通过电子邮件联系维护者之一。

Wiki

更多详情请参阅wiki页面。

如果您在wiki文章中找不到问题的答案?请尝试邮件列表

捐赠

喜欢这个项目?想为我买一杯☕️? (或者一杯🍺 😀):

donation-bitcoin donation-paypal