A Dart wrapper for tdlib. Contains generated schema classes of td_api.tl and a client that interacts with lib through ffi.
Version | tdlib commit | td_api.tl revision |
---|---|---|
1.8.29 | last commit | 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()}');
}
api_id
and api_hash
at https://my.telegram.orgexample/lib/main.dart
and place obtained api_id
and api_hash
to appropriate methods getApiId
and getApiHash
.getPhoneNumber
and getCode
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, change useTestDc
to false
in TdlibParameters
.<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
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']
}
}
libtdjson.dylib
from archive to example/ios
libtdjson.dylib
from archive to example/macos
└── example
└── ios
│ └── libtdjson.dylib
└── macos
└── libtdjson.dylib
Runner.xcworkspace
in Xcode..dylib
file to project.Frameworks, Libraries, and EmbeddedContent
.libtdjson.dylib
choose Embed & Sign
.Signing & Capabilities
.App Sandbox (Debug and Profile)
set true Outgoing Connections (Client)
.example/windows/tdlib
└── example
└── windows
└── tdlib
└── libcrypto-1_1.dll
└── libssl-1_1.dll
└── tdjson.dll
└── zlib1.dll
example/windows/CMakeLists.txt
.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
example/linux/tdlib
└── example
└── linux
└── tdlib
└── libtdjson.so
example/linux/CMakeLists.txt
.# begin td
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/tdlib/libtdjson.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
# end td
TBD