TDLibFramework

CI

项目包含为 iOS、macOS、watchOS、tvOS、visionOS 和模拟器预编译的 TDLib 二进制文件,以 .xcframework 包的形式提供。

如果您正在寻找纯 Swift 库,请查看 TDLibKit

安装

Xcode (SPM)

  1. 安装最新的 Xcode
  2. Project > Swift Packages 中添加 https://github.com/Swiftgram/TDLibFramework 作为 SPM 依赖项。这可能需要一段时间,因为它会下载一个包含 xcframework 的约 300mb 的 zip 文件。
  3. TDLibFramework 添加为您的 target 依赖项。
  4. 开始编码!

Cocoapods & Flutter

请参阅 文档

用法

简单的示例可以在 Tests 目录中找到。

创建客户端

let clientId: Int32 = td_create_client_id()

创建请求对象

let request = ["@type": "getTextEntities", "text": "@telegram /test_command https://telegram.org telegram.me", "@extra": ["5", 7.0, "\\u00e4"]] as [String: Any]

JSON 序列化和反序列化

与 TDLib 通信所需的小型辅助函数示例

func dictToJSONString(_ dictionary: [String: Any]) -> String {
    let dictionaryData = try! JSONSerialization.data(withJSONObject: dictionary)
    return String(data: dictionaryData, encoding: .utf8)!
}

func JSONStringToDict(_ string: String) -> [String: Any] {
    let responseData = string.data(using: .utf8)!
    return try! JSONSerialization.jsonObject(with: responseData, options: .allowFragments) as! [String: Any]
}

同步请求

仅适用于文档中带有"Can be called synchronously"的方法

if let res = td_execute(dictToJSONString(request)) {
    let responseString = String(cString: res)
    let responseDict = JSONStringToDict(responseString)
    print("Response from TDLib \(responseDict)")
}

异步请求

let request = [
    "@type": "setTdlibParameters",
    "api_hash": "5e6d7b36f0e363cf0c07baf2deb26076",
    "api_id": 287311,
    "application_version": "1.0",
    "database_directory": "tdlib",
    "database_encryption_key": nil,
    "device_model": "iOS",
    "enable_storage_optimizer": true,
    "files_directory": "",
    "ignore_file_names": true,
    "system_language_code": "en",
    "system_version": "Unknown",
    "use_chat_info_database": true,
    "use_file_database": true,
    "use_message_database": true,
    "use_secret_chats": true,
    "use_test_dc": false,
] as [String: Any]
// Send request
td_send(clientId, dictToJSONString(request))

// Block thread and wait for response (not more 5.0 seconds)
if let response = td_receive(5.0) {
   let responseString = String(cString: res)
   let responseDict = JSONStringToDict(responseString)
   print("Async response from TDLib \(responseDict)")
}

退出时关闭客户端

td_send(clientId, dictToJSONString(["@type": "Close"] as [String: String]))

发布

您可以在 Releases 页面找到最新的发布版本。

构建

您可以在 Github Actions 文件中找到有关构建过程的更多信息。

贡献

编辑 builder/Project.swift 需要 tuist。 有关更多信息,请参见 安装 说明。

Tuist 的主要分发渠道是 mise 工具。 同样请查看他们的 安装 步骤

mise install tuist
cd builder
tuist edit

鸣谢

许可

MIT