There are a fair number of XMPP (formerly known as ‘Jabber’) client options available for Android, and I thought I’d review the best of them: Conversations. For the unenlightened; XMPP is an open standard for messaging that allows users to chat with users on the same server or with users on other servers without any centralization.
This review was originally going to be titled “Review of Top 5 open-source XMPP clients for Android”. Unfortunately, there aren’t five clients available of sufficient quality for me to review. Beem, Xabber, and Yaxim were acceptable options some years ago, but the projects haven’t been updated in years, development seems to have crawled to a standstill or have been abandoned, and now fall short of modern client requirements. There are a few other client options available as well, but they’ve yet to reach a state of maturity before they could be considered serious options.
User A is using your android application, User B is logged-in on Openfire using any server side XMPP library (for example: smack). Now whenever User A sends message to User B, it will be routed to User B and there you can respond to it from code. Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open protocol for instant messaging, XMPP Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance. Download Openfire 4.6.0 Latest release: October 16, 2020. Source code available on google drive link is https://drive.google.com/open?id=1Qcc8JZzPGQDPTlXlRP-UGlD8H18aUkp1.
Heads up: This is going to be something as unusual as an almost entirely positive review! It’s a departure from the kind of reviews I normally write, but Conversations is that good. And with that little introduction out of the way, let me get started on the actual review.
Conversations start with a good first impression when you logon to your messaging service. Every other app presents the user with a ton of different fields for server address, service port, username, and password. Conversations instead rely on DNS Service Discovery (DNS-SD) to auto-configure the client rather than overwhelming the user with manual configuration options.
The user enters their Jabber ID (JID), which is in the format of an email address — an often is their email address too — and password. You can add multiple accounts later or manually configure server address and port if Conversations runs into a problem.
While every other XMPP client app on Android adhere to ‘traditional’ desktop client design conventions, Conversations follows the Material design guidelines on Android to the letter.
The result is a simple messaging client that feels very familiar and intuitive to the platform, but maybe not to long-time users of XMPP.
The XMPP desktop clients all model 1990’s era messaging apps where you’ve a contact list with availability status indicators and a blinking indicator next to the contacts from whom you’ve received new and unread messages.
The other XMPP clients on Android have all followed this model whilst most other messaging platforms have stopped focusing on the contact list and instead moved focus to the list of active conversations sorted by recency.
On mobile messaging platforms, this design pattern is followed almost without exception. The list of recent conversations that make up the main view of Conversations doesn’t contain availability indicators nor status messages, leaving a clean list of names and avatars. Conversations is something as unusual as an XMPP client that behaves like users would expect a mobile messaging app to work.
Inside conversation views, you get text notifications when the other party is typing a message or when they’ve read your messages. This conveys the essential information you’re typically looking for in the availability indicator, but not all contacts will a) share this information or b) have clients capable of sharing it.
Openfire Android App Android
The Send button can optionally show the recipient’s availability status by colorizing it green for available orange for busy, red for away or black for offline. Most of the time it will be the default gray as the status is only queried on-demand when you go into a conversation.
This is achieved using XEP-0352 Client State Indication to conserve battery and bandwidth, and I’ve found that I usually only wonder about someone’s status after a little time anyway.
A slightly colorized button, of course, isn’t all that accessible and the color hues aren’t friendly to the color blind. (See issue #1806.) A contact’s availability status is still the lowest common denominator in the protocol to assess whether your message has been received or not.
XMPP stands for Extensible Message and Presence Protocol. Extensible means that there’s a simple core protocol for interacting server-to-server and client-to-server, and then there are protocol extensions called XEPs that add new functionality on top of the core protocol.
For clients to perform at their best, they must implement a fair share of extensions and keep up with which extensions are trending in other clients.
Checking which extensions are supported by the server and client can be a time-consuming task. Conversations include a server info screen that lists all the XEPs it needs and whether the server also supports them. This is invaluable for server administrators who want to offer their users the best possible mobile experience, and convenient for users who need to report client malfunctions to server operators.
This is an advanced feature, but I’d like to see it implemented in every other XMPP client! It would certainly have saved me time and frustration over the years to know what extensions a client supported and whether my server also supported it.
Mobile clients have two important requirements that aren’t as important to their desktop peers: bandwidth consumption as mobile subscriptions often pay per megabyte, and handling of slow, changing, and even temporarily unavailable network connections.
A third requirement which is just as important to desktop clients is the ability to see full conversation history on multiple devices, something which isn’t supported natively in the core XMPP protocol.
Neither Beam, Xabber, nor Yaxim addresses these problems directly and certainly don’t solve them; but Conversations excels in these three important areas.
Through XEP-0198 Stream Management, Conversations can temporarily disconnect from a supporting server and reconnect to the same session. What this means in practice is that your contacts wouldn’t notice a thing if your client drops off the network for a short time when you drive into a tunnel or change network from your home Wi-Fi to cellular data.
It also means the client and server can send a short nod to each other in acknowledgment when the client gets back online and reconnects rather than having the client and server reinitiate a new session and send lots of data back and forth.
Messages sent while you’re disconnected are temporarily held on your server until you reconnect. It’s very seamless and you don’t send notifications to every contact when you go out of your home Wi-Fi’s range as you do with every other client.
The base XMPP standard doesn’t handle multi-client environments and message history across all their devices like users expect today. The two protocol extensions XEP-0280 Message Carbons and XEP-313 Message Archive Management sees to that, but client support is sparse.
On Android, none of the apps support it in a good way or have yet to implement it. I’ve had no problem with this while using Conversations, which I must say is a first.
I’ll round off this review with a few random feature observations of some more advanced functionality:
Conversations also support multi-user group chats (MUCs) also known as conferences. These conferences can be bookmarked and re-joined automatically, as may be required for example in a corporate environment or other settings where you always want to be available in a conference room. It works well enough, but the app can be slow to update in conferences with many participants and a high number of messages.
I was also pleasantly surprised when I tried adding a new contact. Conversations suggested to auto-complete my contact’s address as I typed it out against the list of networks my account is already connected to.
In other words, the auto-complete drop-down will list domains of your existing contacts. This is a very nice little touch that will be one of those useful things few people will notice but everyone benefits from it.
The XMPP URI protocol works! Giving out my direct contact details is a bit risky, but you can click on xmpp:[email protected] and it will open the Conversations app (assuming you’ve already installed it) and have it take you straight to a window where you can send a message. As a long-time web guy, I’ll admit to being a bit obsessed with URI schemas but this is the first XMPP app on Android who’ve bothered to support it!
Conclusion
Conversations is technically competent, well-thought-out, easy to configure and use, … what is there not to like, really? It’s not perfect, but the app clearly shows that a lot of attention has been paid to the right design details all around the app; creating an unusually well-designed app for a platform that isn’t known for high-quality apps.
It’s such a good client that I wish it was available for more of my devices as well. I hope to see a desktop version of Conversations soon as I can’t be bothered with emulating Android apps on Windows or Linux for desktop use.
The connectivity problems that mobile devices have also applied to laptops and tablets, and Conversations solves these problems while providing a less distracting and visually appealing client. Conversations is the new gold standard for XMPP clients on any platform.
You can get Conversations for 2,99 USD on Amazon Appstore and Google Play Store. As Conversations is an open-source project, you can get the source-code for free from the Conversation website or get the app for free of charge from F-Droid Market.
Seeing how all previous XMPP client projects have withered and died off, I’d encourage everyone to buy the client from your Android app store of choice to keep the developers funded and motivated. It’s worth the money if you’re looking for a well-behaved and polished XMPP client for Android.
Für Android, sowie iOS Geräte stehen u.a. die folgenden Apps zur verfügung:
Conversations (Android) Conversations is an open source XMPP (formerly known as Jabber) client for Android 4.0+ smart phones.
Openfire Spark Android App
FEATURES
* End-to-end encryption with either OTR or openPGP * Sending and receiving images * Holo UI * Syncs with your desktop client * Group Chats * Address book integration * Multiple Accounts / unified inbox
XMPP Features
Openfire Android App Download
Conversations works with every XMPP server out there. However XMPP is an extensible protocol. These extensions are standardized as well in so called XEP’s. Conversations supports a couple of those to make the overall userexperience better. There is a chance that your current XMPP server does not support these extensions. Therefore to get the most out of Conversations you should consider either switching to an XMPP server that does or – even better – run your own XMPP server for you and your friends. These XEPs are – as of now:
XEP-0065: SOCKS5 Bytestreams – or rather mod_proxy65. Will be used to tranfer files if both parties are behind a firewall (NAT).
XEP-0138: Stream Compression saves bandwith
XEP-0198: Stream Management allows XMPP to surive small network outages and changes of the underlying TCP connection.
XEP-0280: Message Carbons which automatically syncs the messages you send to your desktop client and thus allows you to switch seamlessly from your mobile client to your desktop client and back within one conversation.
XEP-0237: Roster Versioning mainly to save bandwith on poor mobile connections
https://github.com/siacs/Conversations Conversations auf F-Droid.org Conversations on Google Play
ChatSecure (ehemals Gibberbot) (Android) ChatSecure ist ein Teil des Guardian Projects, das es sich zum Ziel gesetzt hat, mit einfach zu bedienenden Apps die Privatsphäre und Sicherheit seiner Nutzer zu schützen. Dabei ist ChatSecure für die verschlüsselte Kommunikation per Chat zuständig. * u.a. OTR Unterstützung * Sicherheitsrelevaten Features * Free unlimited, encrypted and private messaging with your friends over Google Talk/Hangouts, Facebook Chat, Dukgo, Jabber & more! Works with Android, iPhone, Mac, Linux or PC.
yaxim – yet another XMPP instant messenger (Android) yaxim (Yet Another XMPP Instant Messenger) ist ein Jabber/XMPP-Client mit offenem Quellcode (GPLv2). Warum für SMS bezahlen, wenn man unbegrenzt Nachrichten über die Datenverbindung schicken kann? yaxim’s Ziele sind Sicherheit, geringer Overhead und eine immer offene Server-Verbindung. Momentan wird lediglich ein Account unterstützt. Funktionen: * Unterstützung für Standard-Jabber-Server und GMail * Abfrage bei selbstsignierten SSL-Zertifikaten * Erlaubt automatische Verbindung beim Systemstart * Kontaktverwaltung * Permanente Speicherung des Chatprotokolls * Nachrichtenkopien (XEP-0280) http://yaxim.org/ yaxim auf Google play
imo instant messenger (Android & iOS) With imo instant messenger, it’s easy to stay in touch with friends on your existing IM accounts. imo currently supports Facebook Chat, Google Talk, Skype, MSN, ICQ/AIM, Yahoo, Jabber, MySpace, Hyves, Vkontakte, and Steam. “Winner of About.com’s 2011 Readers’ Choice Award for Best Free iPhone/iPad App” Features: – No need to create a new account with imo – Group messaging and photo sharing – Voice IMs turn your iPad into a walkie-talkie – Option to link accounts or save passwords to log in faster – Push notifications sent for one week after you close the app – Links from buddies open directly in app – Concurrent sessions on different devices – Send pictures and video clips – Searchable chat history https://imo.im IMO auf Google play IMO im Apple AppStore
Openfire Android App Windows 10
IM+ (Android & iOS) (derzeit keine Verbindung zu Jabber.de!) IM+ ist ein einfach zu bedienender, funktionsreicher IM-Client für Mobiltelefone und Internet. Das IM+ Mobile App ist für iPhone/iPad, Blackberry, Windows Mobile, Symbian, Java und WebOS erhältlich. Mit IM+ Web Messenger können Sie sich anmelden Sie sich an und mit Kontakten aus MSN Live Messenger, Facebook, Skype, Yahoo! Messenger, AIM, MySpace, ICQ, Google Talk und Jabber chatten. – https://plus.im IM+ auf Google play IM+ im Apple AppStore
Openfire Android Apps
Xabber (Android) XMPP (Jabber) client with multi-account support. Highly customizable with lot’s of features. Allows to group contact list by groups, accounts. Gtalk, Facebook chat, Vkontakte messaging support. – http://www.xabber.com Xabber auf Google play