Tindroid: Tinode Messaging Client for Android
Android instant messenger using Tinode backend. Beta-quality software. Debug APKs are available in releases.
Installing and running
This is NOT a standalone app, this is just a frontend, a client. It requires a backend. See installation instructions.
Getting support
- Read client-side and server-side API documentation.
- For support, general questions, discussions post to https://groups.google.com/d/forum/tinode.
- For bugs and feature requests open an issue.
- Use https://tinode.co/contact for commercial inquiries.
Helping out
- If you appreciate our work, please help spread the word! Sharing on Reddit, HN, and other communities helps more than you think.
- Consider buying paid support: https://tinode.co/support.html
- If you are a software developer, send us your pull requests with bug fixes and new features.
- If you use the app and discover bugs or missing features, let us know by filing bug reports and feature requests. Vote for existing feature requests you find most valuable.
- If you speak a language other than English, translate the apps into your language. You may also review and improve existing translations.
- If you are a UI/UX expert, help us polish the app UI.
- Use it: install it for your colleagues or friends at work or at home. Please contact us if you want to participate in closed testing.
What works:
- One-on-one conversations and group chats.
- Channels with unlimited number of read-only subscribers.
- Video and audio calling.
- Attachments, inline images and videos, voice messages.
- Unread message counters.
- Push notifications and in-app presence notifications.
- Message status notifications: message delivery to server; received and read notifications; typing notifications.
- Markdown-style formatting of text, e.g. *styled* β styled. Implemented as spannable.
- Editing sent messages, replying and forwarding messages.
- Trusted account badges: verified account, staff, etc.
- Form messages suitable for chatbots.
- File attachments, inline images and videos, voice messages.
- Muting/un-muting conversations and other granular permission management.
- Integration with Android's stock Contacts.
- Invite contacts to the app by SMS or email.
- Transport Level Security - https/wss.
- Offline mode.
Not done yet:
- End-to-end encryption.
- Recording of video messages.
- No support for switching between multiple backends.
- No support for multiple accounts.
- Mentions, hashtags.
- Previews not generated for audio, links or docs.
Direct Dependencies
SDK:
- Jackson for JSON serialization.
- Java-WebSocket for websocket support.
SDK contains no Android-specific dependencies.
Application
- Google-Services for push notifications. See below.
- Crashlytics for crash reporting.
- Picasso for image downloading and caching.
- Android Image Picker for picking images or videos.
- OSS Licenses Plugin for legal compliance with OSS licenses.
- Standard Android dependencies.
Other
Demo avatars and some other graphics are from https://www.pexels.com/ under CC0 license.
Background patterns from http://subtlepatterns.com/, commercial and non-commercial use allowed with attribution.
The contacts.vcf
contains a list of contacts which can be used for testing. Push it to your emulator using command
adb push contacts.vcf /sdcard/contacts.vcf
Push notifications
If you want to use the app with your own server and want push notification to work you have to set them up:
- Register at https://firebase.google.com/, set up the project if you have not done so already.
- Download your own config file
google-services.json
and place it to theapp/
folder of your copy of Tindroid project. The config file contains keys specific to your Firebase/FCM registration. - Copy Google-provided server key to
tinode.conf
, see details here. - Recompile the app. If you add
google-services.json
incorrectly the app will compile but will later crash with non-obvious exceptions.
Translations
The app is currently available in the following languages:
- English
- Chinese (simplified)
- Chinese (traditional)
- French
- German
- Hindi
- Korean
- Portuguese
- Russian
- Spanish
More translations are welcome. See instructions.