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。