We briefly touched upon indications and notifications in the previous section. Indications and notifications basically are server (GATT) side updates to a client. A client has to configure Indications and Notifications for a characteristic's value through its client characteristic configuration descriptor to get notified every time a characteristic's value gets updated on the server:
As shown in the preceding figure:
- Indications: They need to be acknowledged by the client. The server does not send the next indication until it gets the acknowledgement back from the client. Hence communication via indications is slower.
- Notifications: They do not need to be acknowledged by the client. Hence, communication via notifications is faster.
Indications and Notifications are a very important mechanism for receiving server-side data probably due to the fact that they are the only and fastest mechanism for receiving asynchronous server-side updates. Since Bluetooth Low Energy was designed to be energy efficient, this asynchronous method of receiving updates prevents continuous polling of the server by the client and, hence, is a huge energy saver too.