TDLib (Telegram Database Library) ist eine plattformübergreifende Bibliothek zum Erstellen von Telegram-Clients. Es kann problemlos von fast jeder Programmiersprache aus verwendet werden.
Merkmale
Beispiele und Dokumentation
Abhängigkeiten
Gebäude
Verwendung in CMake C++-Projekten
Verwendung in Java-Projekten
Verwendung in .NET-Projekten
Verwendung mit anderen Programmiersprachen
Lizenz
TDLib
hat viele Vorteile. Insbesondere ist TDLib
:
Plattformübergreifend : TDLib
kann auf Android, iOS, Windows, macOS, Linux, FreeBSD, OpenBSD, NetBSD, illumos, Windows Phone, WebAssembly, watchOS, tvOS, visionOS, Tizen, Cygwin verwendet werden. Es sollte auch auf anderen *nix-Systemen mit oder ohne minimalem Aufwand funktionieren.
Mehrsprachig : TDLib
kann problemlos mit jeder Programmiersprache verwendet werden, die C-Funktionen ausführen kann. Darüber hinaus verfügt es bereits über native Java-Bindungen (mit JNI
) und .NET-Bindungen (mit C++/CLI
und C++/CX
).
Einfach zu verwenden : TDLib
kümmert sich um alle Netzwerkimplementierungsdetails, Verschlüsselung und lokale Datenspeicherung.
Hohe Leistung : In der Telegram Bot API verarbeitet jede TDLib
Instanz mehr als 25.000 aktive Bots gleichzeitig.
Gut dokumentiert : Alle TDLib
API-Methoden und öffentlichen Schnittstellen sind vollständig dokumentiert.
Konsistent : TDLib
garantiert, dass alle Updates in der richtigen Reihenfolge bereitgestellt werden.
Zuverlässig : TDLib
bleibt auch bei langsamen und unzuverlässigen Internetverbindungen stabil.
Sicher : Alle lokalen Daten werden mit einem vom Benutzer bereitgestellten Verschlüsselungsschlüssel verschlüsselt.
Vollständig asynchron : Anfragen an TDLib
blockieren sich nicht gegenseitig oder irgendetwas anderes, Antworten werden gesendet, wenn sie verfügbar sind.
Eine Beschreibung der grundlegenden TDLib-Konzepte finden Sie in unserem Tutorial „Erste Schritte“.
Schauen Sie sich unsere Beispiele an.
Ausführliche Anweisungen zum Erstellen von TDLib finden Sie in einem TDLib-Build-Anweisungsgenerator.
Siehe Beschreibung unserer JSON-, C++-, Java- und .NET-Schnittstellen.
Eine Liste aller verfügbaren TDLib
Methoden und -Klassen finden Sie im Schema td_api.tl oder in der automatisch generierten HTML-Dokumentation.
TDLib
hängt ab von:
C++14-kompatibler Compiler (Clang 3.4+, GCC 4.9+, MSVC 19.0+ (Visual Studio 2015+), Intel C++ Compiler 17+)
OpenSSL
zlib
gperf (nur Build)
CMake (3.0.2+, nur Build)
PHP (optional, zur Dokumentationserstellung)
Der einfachste Weg, TDLib
zu erstellen, ist die Verwendung unseres TDLib-Build-Anweisungsgenerators. Sie müssen lediglich Ihre Programmiersprache und Ihr Zielbetriebssystem auswählen, um vollständige Build-Anweisungen zu erhalten.
Im Allgemeinen müssen Sie alle TDLib
Abhängigkeiten installieren, ein Verzeichnis mit TDLib
-Quellen eingeben und diese mit CMake kompilieren:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
Um TDLib
auf Geräten mit wenig Speicher zu erstellen, können Sie das Skript SplitSource.php ausführen, bevor Sie den Hauptquellcode TDLib
kompilieren und nur die benötigten Ziele kompilieren:
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
In unseren Tests benötigte Clang 6.0 mit libc++ weniger als 500 MB RAM pro Datei und GCC 4.9/6.3 verbrauchte weniger als 1 GB RAM pro Datei.
Für C++-Projekte, die CMake verwenden, besteht der beste Ansatz darin, TDLib
als Teil Ihres Projekts zu erstellen oder es systemweit zu installieren.
Es gibt mehrere Bibliotheken, die Sie in Ihrem CMake-Projekt verwenden können:
Td::TdJson, Td::TdJsonStatic – dynamische und statische Version einer JSON-Schnittstelle. Dieses verfügt über eine einfache C-Schnittstelle und kann daher problemlos mit jeder Programmiersprache verwendet werden, die C-Funktionen ausführen kann. Weitere Informationen finden Sie in der Dokumentation zu td_json_client.
Td::TdStatic – statische Bibliothek mit C++-Schnittstelle für den allgemeinen Gebrauch. Weitere Informationen finden Sie in der ClientManager- und Client-Dokumentation.
Ein Teil Ihrer CMakeLists.txt könnte beispielsweise so aussehen:
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
Oder Sie könnten TDLib
installieren und dann in Ihrer CMakeLists.txt wie folgt darauf verweisen:
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
Siehe example/cpp/CMakeLists.txt.
TDLib
bietet eine native Java-Schnittstelle über JNI. Um es zu aktivieren, geben Sie die Option -DTD_ENABLE_JNI=ON
für CMake an.
Siehe example/java für ein Beispiel für die Verwendung von TDLib
aus Java und detaillierte Anweisungen zum Aufbau und zur Verwendung.
TDLib
bietet eine native .NET-Schnittstelle über C++/CLI
und C++/CX
. Um es zu aktivieren, geben Sie die Option -DTD_ENABLE_DOTNET=ON
für CMake an. .NET Core unterstützt C++/CLI
erst seit Version 3.1 und nur unter Windows. Wenn also älteres .NET Core verwendet wird oder Portabilität erforderlich ist, sollte stattdessen TDLib
JSON-Schnittstelle über P/Invoke verwendet werden.
Sehen Sie sich example/csharp an, um ein Beispiel für die Verwendung TDLib
aus C# zu erhalten und detaillierte Anweisungen zum Erstellen und Verwenden zu erhalten. Sehen Sie sich example/uwp an, um ein Beispiel für die Verwendung TDLib
aus der C#-UWP-Anwendung und detaillierte Build- und Verwendungsanweisungen für die Visual Studio-Erweiterung „TDLib for Universal Windows Platform“ zu erhalten.
Wenn TDLib
mit aktivierter Option TD_ENABLE_DOTNET
erstellt wird, wird C++
Dokumentation aus einigen Dateien entfernt. Sie müssen diese Dateien auschecken, um C++
Dokumentation zurückzusenden:
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
TDLib
bietet effiziente native C++-, Java- und .NET-Schnittstellen. Für die meisten Anwendungsfälle empfehlen wir jedoch die Verwendung der JSON-Schnittstelle, die problemlos mit jeder Programmiersprache verwendet werden kann, die C-Funktionen ausführen kann. Eine detaillierte Beschreibung der JSON-Schnittstelle finden Sie in der td_json_client-Dokumentation, im td_api.tl-Schema oder in der automatisch generierten HTML-Dokumentation für eine Liste aller verfügbaren TDLib
Methoden und -Klassen.
TDLib
JSON-Schnittstelle folgt der semantischen Versionierung und Versionen mit derselben Hauptversionsnummer sind binär und abwärtskompatibel, aber die zugrunde liegende TDLib
API kann für verschiedene Neben- und sogar Patchversionen unterschiedlich sein. Wenn Sie verschiedene TDLib
Versionen unterstützen müssen, können Sie einen Wert der version
verwenden, um die genaue TDLib
Version zu finden und entsprechende API-Methoden zu verwenden.
Ein Beispiel für eine solche Verwendung finden Sie unter example/python/tdjson_example.py.
TDLib
ist unter den Bedingungen der Boost-Softwarelizenz lizenziert. Weitere Informationen finden Sie unter LICENSE_1_0.txt.