TDLib(Telegram 数据库库)是一个用于构建 Telegram 客户端的跨平台库。几乎任何编程语言都可以轻松使用它。
特征
示例和文档
依赖关系
建筑
在 CMake C++ 项目中使用
在Java项目中使用
在 .NET 项目中使用
与其他编程语言一起使用
执照
TDLib
有很多优点。值得注意的是TDLib
是:
跨平台: TDLib
可在 Android、iOS、Windows、macOS、Linux、FreeBSD、OpenBSD、NetBSD、illumos、Windows Phone、WebAssembly、watchOS、tvOS、visionOS、Tizen、Cygwin 上使用。它也应该可以在其他 *nix 系统上工作,无论是否需要付出最小的努力。
多语言: TDLib
可以轻松地与任何能够执行 C 函数的编程语言一起使用。此外,它已经具有本机 Java(使用JNI
)绑定和 .NET(使用C++/CLI
和C++/CX
)绑定。
易于使用: TDLib
负责所有网络实施细节、加密和本地数据存储。
高性能:在 Telegram Bot API 中,每个TDLib
实例可同时处理超过 25000 个活动机器人。
文档齐全:所有TDLib
API 方法和公共接口都有完整文档记录。
一致: TDLib
保证所有更新都按正确的顺序交付。
可靠: TDLib
在缓慢且不可靠的互联网连接上保持稳定。
安全:所有本地数据均使用用户提供的加密密钥进行加密。
完全异步:对TDLib
的请求不会相互阻塞或发生其他任何事情,响应在可用时发送。
请参阅我们的入门教程,了解基本 TDLib 概念的描述。
看看我们的例子。
有关如何构建 TDLib 的详细说明,请参阅 TDLib 构建指令生成器。
请参阅我们的 JSON、C++、Java 和 .NET 接口的说明。
有关所有可用TDLib
方法和类的列表,请参阅 td_api.tl 方案或自动生成的 HTML 文档。
TDLib
取决于:
C++14 兼容编译器(Clang 3.4+、GCC 4.9+、MSVC 19.0+(Visual Studio 2015+)、Intel C++ 编译器 17+)
开放式SSL
兹库
gperf(仅构建)
CMake(3.0.2+,仅限构建)
PHP(可选,用于文档生成)
构建TDLib
最简单的方法是使用我们的 TDLib 构建指令生成器。您只需选择编程语言和目标操作系统即可接收完整的构建说明。
一般来说,您需要安装所有TDLib
依赖项,进入包含TDLib
源的目录并使用 CMake 编译它们:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
要在低内存设备上构建TDLib
,您可以在编译主TDLib
源代码之前运行 SplitSource.php 脚本并仅编译所需的目标:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --target prepare_cross_compiling cd .. php SplitSource.php cd build cmake --build . --target tdjson cmake --build . --target tdjson_static cd .. php SplitSource.php --undo
在我们的测试中,带有 libc++ 的 clang 6.0 每个文件需要不到 500 MB 的 RAM,而 GCC 4.9/6.3 每个文件需要不到 1 GB 的 RAM。
对于使用 CMake 的 C++ 项目,最好的方法是将TDLib
构建为项目的一部分或在系统范围内安装它。
您可以在 CMake 项目中使用多个库:
Td::TdJson、Td::TdJsonStatic — JSON 接口的动态和静态版本。它有一个简单的 C 接口,因此可以轻松地与任何能够执行 C 函数的编程语言一起使用。有关更多信息,请参阅 td_json_client 文档。
Td::TdStatic — 具有通用 C++ 接口的静态库。有关详细信息,请参阅 ClientManager 和客户端文档。
例如,CMakeLists.txt 的一部分可能如下所示:
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
或者您可以安装TDLib
,然后在 CMakeLists.txt 中引用它,如下所示:
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
请参阅示例/cpp/CMakeLists.txt。
TDLib
通过 JNI 提供原生 Java 接口。要启用它,请为 CMake 指定选项-DTD_ENABLE_JNI=ON
。
有关从 Java 使用TDLib
示例以及详细的构建和使用说明,请参阅 example/java。
TDLib
通过C++/CLI
和C++/CX
提供本机 .NET 接口。要启用它,请为 CMake 指定选项-DTD_ENABLE_DOTNET=ON
。 .NET Core 仅从 3.1 版本开始支持C++/CLI
,并且仅在 Windows 上运行,因此如果使用较旧的 .NET Core 或需要可移植性,则应通过 P/Invoke 使用TDLib
JSON 接口。
有关从 C# 使用TDLib
的示例以及详细的构建和使用说明,请参阅 example/csharp。请参阅 example/uwp,了解从 C# UWP 应用程序使用TDLib
示例,以及 Visual Studio 扩展“TDLib for Universal Windows Platform”的详细构建和使用说明。
当TDLib
在启用TD_ENABLE_DOTNET
选项的情况下构建时, C++
文档将从某些文件中删除。您需要签出这些文件才能返回C++
文档:
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
TDLib
提供高效的本机 C++、Java 和 .NET 接口。但对于大多数用例,我们建议使用 JSON 接口,它可以轻松地与任何能够执行 C 函数的编程语言一起使用。请参阅 td_json_client 文档以获取详细的 JSON 接口描述、td_api.tl 方案或自动生成的 HTML 文档以获取所有可用TDLib
方法和类的列表。
TDLib
JSON 接口遵循语义版本控制,具有相同主版本号的版本是二进制且向后兼容的,但底层TDLib
API 对于不同的次要版本甚至补丁版本可能有所不同。如果您需要支持不同的TDLib
版本,那么您可以使用version
选项的值来查找确切的TDLib
版本,以使用适当的 API 方法。
有关此类用法的示例,请参阅 example/python/tdjson_example.py。
TDLib
根据 Boost 软件许可条款获得许可。有关详细信息,请参阅 LICENSE_1_0.txt。