Blog

Igor Khomenko

Chat Message Lifecycle: a note about statuses

Posted by Igor Khomenko on September 21, 2015

It’s a standard feature now to manage message’s statuses in every chat application.

All popular messaging applications like WhatsApp, Telegram messenger, Viber provide the exact status of your messages, from the moment you send them until they are read by the recipient.

However each messenger has it’s own explanation of how a messaging app should deal with statuses.
Let’s review the most popular apps:

WhatsApp

The WhatsApp team provides the following help page: 
“What are those check marks next to my messages?” – http://www.whatsapp.com/faq/en/general/20951546

Check marks will appear next to each message you send. Here is what each one indicates:

  • message successfully sent.
  • message successfully delivered to the recipient’s phone.
  • the recipient has read your message.

In a group chat, the second check marks will appear when all participants in the group have received your message. The two blue check marks will appear when all participants in the group have read your message.

This is more or less what the end user expects.

 

Telegram messenger

The Telegram messenger provides a bit different policy regarding ‘delivered’ status:

“What do the green checks mean?” – https://telegram.org/faq#q-what-do-the-green-checks-mean

One check — message delivered to the Telegram cloud and your friend has been notified, if he allows notifications.
Two checks — message read (your friend opened Telegram and opened the conversation with the message).

We don‘t have a ’delivered to device’ status for messages, because Telegram can run on as many devices as you want. So which particular one would that check mean?

 

Viber 

The Viber team provides the same UX as WhatsApp:

“Message delivery status” – https://support.viber.com/customer/en/portal/articles/1534869-message-delivery-status

Sent
When your message has been sent, the text bubble and text will have filled in (the text becomes black and the dialog background becomes blue).  This is an indication that your message has been sent to the server. In other words, it has successfully been sent on its way to the recipient.

Delivered
When you see the status “Delivered” underneath your message, this means that your message has been received by the recipient. The “Delivered” status does not indicate that the message has been opened.

Seen
The “Seen” delivery status indicates that the recipient has opened the conversation to which you have sent the message. The “Seen” status will disappear once the recipient replies to your message. Note that the “Seen” delivery status does not guarantee that your message has been read, nor does it appear in group chats.

 

The whole Chat Message Lifecycle

With a really big experience in chat messaging we developed  the following Chat Message Lifecycle schema:

chat_message_statuses_infoLet’s review each status:

  1. Sent – this is an indication that your message has been sent to the server. The end user can also get ‘Not sent’ status in a case he doesn’t have an active Internet connection.
  2. Delivered to the backend – this is an indication that your message has been delivered to the server. It’s also possible that your message has not reached the server, for example by timeout of 30-60 seconds. This is ‘Not delivered’ status. This is how we call it in the classic messengers – Sent.
  3. Not acknowledged on the backend – The backend can return an error to the sender in a case when he is in the recipient’s black list.
  4. Delivered – this means that a message has been received by the recipient (delivered to the recipient’s phone). This is how we call it in the classic messengers – Delivered.
  5. Read – the status indicates that the recipient has opened the conversation to which you have sent the message and read the message.  This is how we call it in the classic messengers – Read.

As we highlighted above, it’s enough and common to support only 3 statuses (Sent, Delivered, Read), but as you can see there are more statuses under the hood.
Feel free to provide your feedback, how you manage the chat message statuses in your application
Cheers!

 

Igor Khomenko

QMChatViewController – an elegant ready to go chat view controller for iOS applications

Posted by Igor Khomenko on September 15, 2015

To speed up apps development we are happy to release today an elegant ready-to-go chat view controller for iOS chat applications that use Quickblox communication backend.

ios_chat_view_controller
This is for all of QuickBlox developers to save their time and don’t repeat every time the same things!

Features:

  • Ready-to-go chat view controller with a set of cells.
  • Automatic cell size calculation.
  • UI customisation for chat cells.
  • Flexibility in improving and extending functionality.
  • Easy to connect with Quickblox.
  • Optimised and performant.
  • Supports portrait and landscape orientations.
  • Auto Layout inside.

It’s available on GitHub:

https://github.com/QuickBlox/QMChatViewController-ios

We also integrated it to our Chat samples, Objective-C and Swift:
http://quickblox.com/developers/SimpleSample-chat_users-ios 

We are eager to see your feedback about it – please create a ticket on GitHub or ask a ‘quickblox’ tagged question on StackOverflow.

Happy coding with QuickBlox!

Igor Khomenko

iOS SDK 2.4 release with automatic session and push notifications environment management

Posted by Igor Khomenko on September 15, 2015

QuickBlox team is happy to release new iOS SDK version 2.4. This is one of our biggest iOS update, with some conceptual changes which should simplify apps development process.

ios_new_chat_sample

What’s new:

  •  Framework:
    • Automatic session management! Now you don’t need to call ‘createSession’ on every start app. Now SDK manages this automatically!
    • ‘Now typing’ for group chats
    • Automatic push notifications environment management! Now you don’t need to bother with push environment settings. Now SDK manages this automatically!
    • Added a delegate QBChatDelegate.chatDidReconnect
    • Ability to change the TCP socket keep alive settings
    • The XMPP ‘see-other-hosts’ processing logic has been added
    • Deprecated the old chat room delegates with jid, added new with dialog id
    • Automatically add a dialog ID to each chat message
    • Set custom endpoints retrieval period time to 6h
    • Ability to manually send the ‘delivered’ status via QBChat.markAsDelivered method
    • New delegates for read/delivered statuses handling
  • Samples:
    • New completely rewritten Chat code samples on Objectve-C and Swift
    • Updated UI on all code samples
  • Other:

Download iOS SDK 2.4

For any support queries, please create a ticket on GitHub or ask a ‘quickblox’ tagged question on StackOverflow.

Good luck with your apps development!

Igor Khomenko

No more HTTP for WebRTC on Chrome, only HTTPS

Posted by Igor Khomenko on September 15, 2015

“‘getUserMedia‘ in Chrome will require HTTPS soon” – this is what we have got from the Kranky Geek mini conference in San Francisco. That was announced during Google’s WebRTC update – Chrome will no longer support getUserMedia calls from a site that’s served up over http.

The Chrome team will roll this out in Chrome 47 before the end of 2015. That means any of your sites that leverage getUserMedia will be required to be served up via the https protocol to work across all browsers.

 

 

 

 

 

 

 

 

 

 

 

 

 

So if you want getUserMedia to work on your site, you’ll need to start serving up content via HTTPS.

Don’t forget to roll out this update before 2016.

Check out Google WebRTC team’s update

Igor Khomenko

QuickBlox releases new re-designed admin panel (Dashboard 2.0)

Posted by Igor Khomenko on September 15, 2015

QuickBlox is happy to announce that we have released new re-designed admin panel and now you can check it in your Starter/Advanced/Pro account at https://admin.quickblox.com !

quickblox new dashboard ui
Except of the new style it also contains a bunch of useful updates/bug fixes, including performance optimisation, Custom Objects search feature, possibility to create non-latin dialog name, Custom Objects import/export jobs, added IDs to table and ability to remove items and so on.

We hope you will enjoy this renovation and create lots of great applications with it!

Please, let us know your feedback in regards updates.

To provide a feedback or in case of any questions feel free to contact our Assistance Team.