A Dart wrapper for tdlib. Contains generated(generator) schema classes of td_api.tl and a client that interacts with lib through ffi.
Version | tdlib commit | td_api.tl revision |
---|---|---|
1.8.39 | last commit | 18618ca |
1.8.29 | 6760ab3 | 44b548c |
1.8.26 | d7a31ad | b1b33cf |
1.8.21 | 32d37d9 | 404761c |
1.8.19 | 1a00bae | 986f1ab |
1.8.18 | 532fae5 | daf4801 |
1.8.15 | 3f91948 | 8893dc8 |
1.8.14 | 90171aa | 4041ecb |
1.8.13 | d5ed66a | c95598e |
1.8.11 | 1b99276 | 1543c41 |
1.8.9 | 5b8706c | 6cbe182 |
1.8.8 | f069453 | bbe37ee |
1.8.7 | 60c2975 | 92f8093 |
1.8.4 | 324fa2b | d489014 |
1.8.0 | 781d969 | c0385078 |
1.7.9 | 2dec79f | 8d7bda00 |
1.7.3 | 2a29b25 | - |
As an example of use, you can see the project telegram-flutter.
import 'package:tdlib/td_client.dart';
import 'package:tdlib/td_api.dart' as td;
Future<void> main() async {
final Client client = Client.create();
client.updates.listen((td.TdObject event) async {
print('update: ${event.toJson()}');
});
await client.initialize();
td.Ok result = client.execute<td.Ok>(td.SetLogVerbosityLevel(newVerbosityLevel: 0));
print('execute result: ${result.toJson()}');
td.Updates sendResult = await client.send<td.Updates>(td.GetCurrentState());
print('send result: ${sendResult.toJson()}');
}
- Obtain
api_id
andapi_hash
at https://my.telegram.org - Build tdlib for your operating system following the instruction or download prebuild binaries. Following the instraction below for setup tdlib.
- Open
example/lib/main.dart
and place obtainedapi_id
andapi_hash
to appropriate methodsgetApiId
andgetApiHash
. - Specify phone number and code in
getPhoneNumber
andgetCode
methods. Attention, the phone number must be specified from the test DC. If you don't want to use the test DC and want to authenticate with your account, changeuseTestDc
tofalse
inTdlibParameters
. - cd
<repo folder>/example
flutter run
The tdlib binaries is built automatically using github actions and published on the releases page. Follow the instructions below for each platform to configure flutter project to use tdlib
Copy .so
files from archive to example/android/app/main/jniLibs
:
└── example
└── android
└── app
└── main
└── jniLibs
└── arm64-v8a
│ └── libtdjsonandroid.so
└── armeabi-v7a
│ └── libtdjsonandroid.so
└── x86
│ └── libtdjsonandroid.so
└── x86_64
└── libtdjsonandroid.so
- Open file
example/android/app/build.gradle
replace
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
by
sourceSets {
main {
java.srcDirs += 'src/main/kotlin'
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
- Copy
libtdjson.dylib
from archive toexample/ios
- Copy
libtdjson.dylib
from archive toexample/macos
└── example
└── ios
│ └── libtdjson.dylib
└── macos
└── libtdjson.dylib
- Open
Runner.xcworkspace
in Xcode. - Add
.dylib
file to project. - Find
Frameworks, Libraries, and EmbeddedContent
. - Against
libtdjson.dylib
chooseEmbed & Sign
. - Find
Signing & Capabilities
. - In Section
App Sandbox (Debug and Profile)
set trueOutgoing Connections (Client)
.
- Copy files from archive to
example/windows/tdlib
└── example
└── windows
└── tdlib
└── libcrypto-1_1.dll
└── libssl-1_1.dll
└── tdjson.dll
└── zlib1.dll
- Open
example/windows/CMakeLists.txt
. - Add below line
set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}")
:
# begin td
set(dll_path "${CMAKE_CURRENT_SOURCE_DIR}/tdlib")
install(FILES "${dll_path}/libcrypto-1_1.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime)
install(FILES "${dll_path}/libssl-1_1.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime)
install(FILES "${dll_path}/tdjson.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime)
install(FILES "${dll_path}/zlib1.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime)
# end td
- Copy file from archive to
example/linux/tdlib
└── example
└── linux
└── tdlib
└── libtdjson.so
- Open
example/linux/CMakeLists.txt
. - Add at the end of file:
# begin td
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/tdlib/libtdjson.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
# end td
TBD