TDLib (Telegram Database Library) é uma biblioteca multiplataforma para construir clientes Telegram. Ele pode ser facilmente usado em quase qualquer linguagem de programação.
Características
Exemplos e documentação
Dependências
Prédio
Usando em projetos CMake C++
Usando em projetos Java
Usando em projetos .NET
Usando com outras linguagens de programação
Licença
TDLib
tem muitas vantagens. Notavelmente TDLib
é:
Plataforma cruzada : TDLib
pode ser usado em Android, iOS, Windows, macOS, Linux, FreeBSD, OpenBSD, NetBSD, illumos, Windows Phone, WebAssembly, watchOS, tvOS, visionOS, Tizen, Cygwin. Também deve funcionar em outros sistemas *nix com ou sem esforço mínimo.
Multilíngue : TDLib
pode ser facilmente usado com qualquer linguagem de programação capaz de executar funções C. Além disso, ele já possui ligações nativas Java (usando JNI
) e .NET (usando C++/CLI
e C++/CX
).
Fácil de usar : TDLib
cuida de todos os detalhes de implementação da rede, criptografia e armazenamento local de dados.
Alto desempenho : na API Telegram Bot, cada instância TDLib
lida com mais de 25.000 bots ativos simultaneamente.
Bem documentado : todos os métodos da API TDLib
e interfaces públicas estão totalmente documentados.
Consistente : TDLib
garante que todas as atualizações sejam entregues na ordem correta.
Confiável : TDLib
permanece estável em conexões de Internet lentas e não confiáveis.
Seguro : todos os dados locais são criptografados usando uma chave de criptografia fornecida pelo usuário.
Totalmente assíncrono : as solicitações ao TDLib
não bloqueiam umas às outras ou qualquer outra coisa, as respostas são enviadas quando estão disponíveis.
Consulte nosso tutorial de introdução para obter uma descrição dos conceitos básicos do TDLib.
Dê uma olhada em nossos exemplos.
Consulte um gerador de instruções de construção do TDLib para obter instruções detalhadas sobre como construir o TDLib.
Veja a descrição de nossas interfaces JSON, C++, Java e .NET.
Consulte o esquema td_api.tl ou a documentação HTML gerada automaticamente para obter uma lista de todos os métodos e classes TDLib
disponíveis.
TDLib
depende de:
Compilador compatível com C++ 14 (Clang 3.4+, GCC 4.9+, MSVC 19.0+ (Visual Studio 2015+), Intel C++ Compiler 17+)
OpenSSL
zlib
gperf (somente compilação)
CMake (3.0.2+, somente compilação)
PHP (opcional, para geração de documentação)
A maneira mais simples de construir TDLib
é usar nosso gerador de instruções de construção TDLib. Você só precisa escolher sua linguagem de programação e sistema operacional de destino para receber instruções completas de construção.
Em geral, você precisa instalar todas as dependências TDLib
, entrar no diretório que contém os fontes TDLib
e compilá-los usando o CMake:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
Para construir TDLib
em dispositivos com pouca memória, você pode executar o script SplitSource.php antes de compilar o código-fonte principal TDLib
e compilar apenas os alvos necessários:
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
Em nossos testes, o clang 6.0 com libc++ exigiu menos de 500 MB de RAM por arquivo e o GCC 4.9/6.3 usou menos de 1 GB de RAM por arquivo.
Para projetos C++ que usam CMake, a melhor abordagem é construir TDLib
como parte do seu projeto ou instalá-lo em todo o sistema.
Existem várias bibliotecas que você pode usar em seu projeto CMake:
Td::TdJson, Td::TdJsonStatic — versão dinâmica e estática de uma interface JSON. Possui uma interface C simples, portanto pode ser facilmente usado com qualquer linguagem de programação capaz de executar funções C. Consulte a documentação do td_json_client para obter mais informações.
Td::TdStatic — biblioteca estática com interface C++ para uso geral. Consulte a documentação do ClientManager e do Cliente para obter mais informações.
Por exemplo, parte do seu CMakeLists.txt pode ter esta aparência:
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
Ou você pode instalar TDLib
e referenciá-lo em seu CMakeLists.txt assim:
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
Consulte exemplo/cpp/CMakeLists.txt.
TDLib
fornece interface Java nativa por meio de JNI. Para habilitá-lo, especifique a opção -DTD_ENABLE_JNI=ON
para CMake.
Veja exemplo/java para ver um exemplo de uso de TDLib
de Java e instruções detalhadas de construção e uso.
TDLib
fornece interface .NET nativa por meio de C++/CLI
e C++/CX
. Para habilitá-lo, especifique a opção -DTD_ENABLE_DOTNET=ON
para CMake. O .NET Core oferece suporte C++/CLI
somente desde a versão 3.1 e somente no Windows, portanto, se o .NET Core mais antigo for usado ou a portabilidade for necessária, a interface TDLib
JSON deverá ser usada por meio de P/Invoke.
Consulte example/csharp para ver um exemplo de uso TDLib
em C# e instruções detalhadas de construção e uso. Consulte exemplo/uwp para obter um exemplo de uso TDLib
do aplicativo C# UWP e instruções detalhadas de construção e uso para a extensão do Visual Studio "TDLib para plataforma universal do Windows".
Quando TDLib
é construído com a opção TD_ENABLE_DOTNET
habilitada, a documentação C++
é removida de alguns arquivos. Você precisa fazer check-out desses arquivos para retornar a documentação C++
:
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
TDLib
fornece interfaces C++, Java e .NET nativas eficientes. Mas para a maioria dos casos de uso sugerimos usar a interface JSON, que pode ser facilmente usada com qualquer linguagem de programação capaz de executar funções C. Consulte a documentação td_json_client para obter uma descrição detalhada da interface JSON, o esquema td_api.tl ou a documentação HTML gerada automaticamente para obter uma lista de todos os métodos e classes TDLib
disponíveis.
A interface JSON TDLib
adere ao controle de versão semântico e as versões com o mesmo número de versão principal são binárias e compatíveis com versões anteriores, mas a API TDLib
subjacente pode ser diferente para diferentes versões secundárias e até mesmo de patch. Se precisar oferecer suporte a diferentes versões TDLib
, você poderá usar um valor da opção version
para localizar a versão exata TDLib
para usar métodos de API apropriados.
Veja example/python/tdjson_example.py para obter um exemplo de tal uso.
TDLib
é licenciado sob os termos da Licença de Software Boost. Consulte LICENSE_1_0.txt para obter mais informações.