AI powered chat interface
2017. Dec 12.
I have always wanted to work with AI. Or we shall say, I was born to work on AI projects. This exciting journey (for me) starts here and now.
Integrating an AI powered chat interface into an existing iOS application was not a big deal. It’s more or less the same than adding any other 3rd party API. As far as I see, the challenging part will be the sever side implementation.
The current setup is not very clever, it knows only some basic small talk. But as they say, the first step is always the hardest. Let’s see where this path leads…
Sometimes less is more
2017. Oct 22.
It was a hard decision, but finally, I have made it. I have removed the group chat functionality from the code. This is not permanent, but for now, this is the case.
There are two main goals I want to achieve in my work. I would like to deliver as many features as I can, but at the same time, I would like to provide a clean, robust and more or less easy to understand code. Sometimes it’s not easy to find the balance.
In this case, it was impossible for me. The user management needed to be refactored and the group message functionality did not find a way to work together with the new database structure. I haven’t given it up. I will try to bring the private and group chat functionalities together in the future again. But now we shall continue with the new and polished private chat.
As I mentioned the user management and especially the way how we store the user related info at Firebase has been completely refactored. The current database structure is much more suitable for using the app with a large number of users.
Several smaller changes have also been performed along with a few bug fixes. Please check the latest implementation and let me know what you think.
2017. Jul 19.
When I started to implement my first chat application I really didn’t have any clue how the database structure should look like. Of course I had made several changes through the years, but the basic Message and Recent item structure remained the same. Although the original structure caused several issues which became more and more annoying.
With version 3.1 these database related issues are solved now. We don’t store Recent items at Firebase any more. The conversation related information is generated and stored only locally. Also every user has his own Message path now. So everybody can control his own messages without touching the other users’ messages.
Several UI changes have also been performed along with few bug fixes. Please check the latest implementation and let me know what you think. :)
Chat user interface
2017. Jul 17.
I like JSQMessagesViewController. I really do. But as we can see now, JSQMessagesViewController is no longer officially supported or maintained. It’s sad. I would have been really happy if I could use a well maintained chat user interface as I did before.
Anyway I was wondering how difficult it would be to implement a chat UI from scratch. I had started to design my solution a few weeks ago, and now it seems to be a life saver to have a ready to use implementation.
RCMessageKit is definitely not as complex as JSQMessagesViewController was, but it might be an advantage instead of a disadvantage. You can have the 1.0 version now. I hope more and more features will be implemented in the near future.
2017. Jun 2.
It’s been more than 3 years now, that I have started to implement my first chat application. Don’t ask why, I don’t know the answer either. But it’s a fact, implementing chat applications became a part of my life.
There were lot’s of different variations. First I started with a Parse only chat, then I continued with a Parse + Firebase combination, and when Parse was shut down I switched to a Firebase only solution. Since Firebase local data store was not reliable enough, so I started to use Realm for local caching.
Later on I added Audio and Video calling features, this way the app started to look more like an all-in-one messenger rather than a simple chat application.
Here we are now. But there are lot’s of things to do. I am currently working on version 3.0. More and more features are coming up. Stay tuned. :)