Layer currently offers three core components:
- The Mobile SDKs and Client API. The mobile SDKs on iOS and Android, and the Client API, allow you to authenticate your users, create conversations, send messages, and take care of all the details around synchronization.
- Atlas GUI Components. Atlas is an optional GUI package that sits on top of the Layer SDK. It is completely open and you can modify it to match your app's look and feel.
- The Platform API. The Platform API is a server to server connection that lets you create conversations on behalf of users (you can register in-app notification listeners to capture this), send messages as any user into any conversation, and send announcements, which are messages from your app that do not have a parent conversation.
All of the following features are included with the Layer service, pushing it well beyond the scope of other real-time platforms:
- Offline support on mobile. Layer is a synchronization engine, so all changes are stored locally before being pushed to the server. If no network connection is available, those messages are pushed when the connection is re-established.
- Conversations with up to 25 participants. Any user can create a conversation with any other user, and once a conversation has been created, any participant can add/remove other users (you are free to enforce any limitations of top of this, of course).
- Any payload. Every message contains an array of parts, each with its own byte array and mime type. You set the mime type when sending the message, and can use it to decide how to decrypt and display the message contents.
- Rich content. You can choose to send large files (of any type) through Layer, up to 2GB each. You can set rules about how and when these files are downloaded to the device.
- Read and delivery receipts. For every message, you can see who has received the message, and who has read it for every participant in a conversation.
- Metadata. Each conversation has a metadata component that stores key/value pairs in a JSON formatted string. This allows you to add a topic, tracking data, or anything else you would like.
- Querying. We support a querying engine that runs on the local database. You can find conversations based on the participants, sort messages by when they were sent, etc
- Authenticate users with your own IDs. Layer will accept any unique identifiers to track users, so you can use your existing user management system.
- Push notifications. Layer supports push notifications for both iOS and Android.
- Platform API. A backend web API that lets you create conversations with a set of users, add/remove users from any conversation, and send Announcements.
- 99.9% uptime. We use Google Cloud Services to host Layer so we can scale for demand.
- Webhooks. Layer is architected to not only be a world class messaging fabric, but also enable external services to interact with the platform and be notified of events on the platform as first class citizens. When paired with the Layer Platform API, Webhooks make two-way integrations with external services and any kinds of bots straightforward.