Send APK automatically to Telegram using Dart/Flutter
If you’re trying to improve the Continuous Delivery “CD” on your Flutter project, one nice tool to use is Telegram because you’re able to send APKs through it.
OK, but there is a small problem because initially the process probably will be manually (you will have to build the apk and, going through the folders of the project, you will find the APK and, finally, will send it to the chat in the Telegram…), but we, Developers, prefer automatic process than manually, right?
Right! In order to automate this process, me and my teammate, Victor Silva, created a bot that is able to send APKs files with only one command. You will run the build command and, in the final of the process, the apk will be sent to Telegram.
How can you do that as well? Easily! Just do the following steps!
Obs 1: Flutter version 2.5.0
Obs 2: Dart version 2.14.3
- Create the Telegram Bot:
1.1. Go to Telegram and search for @BotFather:
1.2. Type /newbot in the chat with BotFather:
1.3. Give it a name:
1.4. Give the bot an username following the snake case pattern:
1.5. Now, add the Bot in the group that you want to receive the APKs
2. Take the credentials:
2.1. First of all, go back to the chat with BotFather and take the Token right here:
2.2. Now, access the following link changing the <YourBOTTOken> to the Token that you just got in Step 2.1:
https://api.telegram.org/bot<YourBOTToken>/getUpdates
Example: In my case, I would access this Link
https://api.telegram.org/bot5117900793:AAEjvocpAFQC75iSFypj7YtO61LHtz_ue-Q/getUpdates
2.3. Now, probably you are seeing something like that:
2.4. Don’t worry, just remove and add again the bot to the group. After that, access one more time the link with your bot token and you will see it:
The important thing here is to save the Chat ID because you’ll need it in the next steps.
3. Create the Dart file:
3.1. These are the imports:
Obs 1: We will use the dart_telegram_bot library!
Obs 2: We have to hide File from telegram_entities because we will want to use File from dart:io, and not from telegram_entities!
3.2. This is the core of the File:
Obs 1: We removed the number of builds to improve the readability (it happens in the _returnAppVersion() auxiliary function).
Obs 2: The entire file will be available at the end of this article as an embed, so, feel free to copy and paste or even improve it!
4. Prepare the Commands:
Now you’ll have to write two commands, one to build the Apk and another to run the file that we just wrote in Step 3.2, and this command could be:
flutter build apk && dart run send_apk_telegram.dart
However, in order to make the code smaller, here we use the Makefile library, and the command becomes something like that:
make build-and-send-apk
But it doesn’t change the main point, which is to generate an Apk and Send it using the send_apk_telegram.dart file.
5. Now, send it!
Run the command and see how it works:
That’s it! Now, whenever you finish a version or need to generate a fast build of your current App, just save all the changes and run both build and send commands to receive an updated app!
One nice thing is that this solution exists in a lot of different environments, so, if you’re coming from Java, Javascript, or even Python environments, there are a sort of different telegram libraries. All you’ll have to do is reply the idea using their respective functions and their respective libraries.
The Code as an embed: