https://github.com/chat21/chat21-android-sdk
Android Chat SDK built on Firebase
https://github.com/chat21/chat21-android-sdk
android chat chat-application firebase messaging sdk
Last synced: about 1 year ago
JSON representation
Android Chat SDK built on Firebase
- Host: GitHub
- URL: https://github.com/chat21/chat21-android-sdk
- Owner: chat21
- License: mit
- Created: 2017-11-27T16:04:01.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-03-08T13:53:55.000Z (over 3 years ago)
- Last Synced: 2025-04-02T12:13:27.829Z (about 1 year ago)
- Topics: android, chat, chat-application, firebase, messaging, sdk
- Language: Java
- Homepage: http://www.chat21.org
- Size: 3.67 MB
- Stars: 233
- Watchers: 18
- Forks: 92
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Chat21 is the core of the open source live chat platform [Tiledesk.com](http://www.tiledesk.com).
# Chat21 SDK Documentation
## Features
With Chat21 Android SDK you can:
- Send a direct message to a user (one to one message)
- Emoji support
- Attach pictures support
- Create group chat
- View the messages history
- View the group list
- The read receipts feature allows your users to see when a message has been sent, delivered and read
- Conversations list view with the last messages sent (like Whatsapp)
- With the Presense Manager you can view when a user is online or offline and the inactivity period
- View the user profile with fullname and email
- Login with email and password (Use firebase email and password authentication method )
- Signup with fullname, email, password and profile picture
- Contacts list view with fulltext search for fullname field
## Sample
### Screenshots
|
| 
| 
### Google Play Demo
[](https://play.google.com/store/apps/details?id=chat21.android.demo)
### Demo
Demo app source code is available [here](https://github.com/chat21/chat21-android-demo)
Yo can build your own chat following our [official tutorial](http://www.chat21.org/docs/android/get-started/)
## Pre requisites
Before you begin, you need a few things to set up in your environment:
* a Firebase project correctly configured
* Chat21 Firebase cloud functions installed. See detailed [instructions](https://github.com/chat21/chat21-cloud-functions)
* google-services.json for you app. See official [documentation](https://developers.google.com/android/guides/google-services-plugin)
## Firebase libs
### /project/build.gradle
First, include the google-services plugin and the Google’s Maven repository to your root-level build.gradle file:
```
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
```
### /project/app/build.gradle
Then, in your module Gradle file (usually the app/build.gradle), add the apply plugin line at the bottom of the file to enable the Gradle plugin:
```
apply plugin: 'com.android.application'
// ...
dependencies {
// ...
implementation "com.google.android.gms:play-services:11.8.0"
}
// ...
apply plugin: 'com.google.gms.google-services'
```
## Install Chat21 libraries
Set:
* minimun SDK at least at ***API 19***
* targetSdkVersion at ***API 22***
Add the following to your app/build.gradle file:
```
defaultConfig {
// ...
multiDexEnabled true
}
dependencies {
// ...
compile 'com.android.support:multidex:1.0.1'
compile "com.google.android.gms:play-services:11.8.0"
compile 'com.android.support:design:26.1.0'
compile 'org.chat21.android:chat21:1.0.10'
compile 'com.vanniktech:emoji-ios:0.5.1'
}
// ...
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
```
### Google Play Services plugin
Finally, as described in the [documentation](https://firebase.google.com/docs/android/setup#manually_add_firebase), paste this statement as the last line of the file:
`apply plugin: 'com.google.gms.google-services'`
At the end, you'll download a `google-services.json` file. For more informations refer to the relative [documentation](https://support.google.com/firebase/answer/7015592)
### Application
Create a custom Application class
```
public class AppContext extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); // add this
}
}
```
and add it to the Manifest.xml
```
```
### Style
Replace the default parent theme in your styles.xml
```
```
to
```
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
```
you will obtain something like :
```
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
```
### Chat21 SDK initialization
#### ChatManager
The Chat21 SDK provide a ***Chat.Configuration*** object which allows to set some custom behaviour
and settings for your chat.
To create a new instance of Chat21 SDK you have to create your own configuration (using the
Chat21 SDK Chat.Configuration.Builder) and use it as paramater for the method `Chat.initialize(configuration);`
```
// optional
//enable persistence must be made before any other usage of FirebaseDatabase instance.
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
// mandatory
// it creates the chat configurations
ChatManager.Configuration mChatConfiguration =
new ChatManager.Configuration.Builder()
.firebaseUrl()
.storageBucket()
.build();
ChatManager.start(, mChatConfiguration, );
```
Replace:
- `` with your appId;
- `` with your Firebae Database URL of your Firebase App;
- `` with your Firebae Storage Bucket URL of your Firebase App;
- `` with your Context;
- `` with your current logged user, assuming it is an instance of IChatUser
#### ChatUI
ChatUI allows you to quickly connect common UI elements to Chat21 SDK APIs.
ChatUI lets you start your chat with both an activity and a inside a fragment.
Initialize the ChatUI component with the following instruction
```
ChatUI.getInstance().setContext(this);
```
##### Launch with an activity
It starts a new activity that contains the list of conversations.
```
ChatUI.getInstance().showConversationsListActivity();
```
##### Launch with a fragment
You have to create a fragment with a container inside.
The chat will start inside this container where the list of conversations is shown.
```
```
Now you can show your chat with the following method:
```
ChatUI.getInstance().openConversationsListFragment(getChildFragmentManager(), R.id.container);
```
### Common Issues
- Conflicts within `com.android.support`
Error:
```
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
```
Solution:
Copy this block at the bottom of your file **/project/app/build.gradle**
```
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
```
- MultiDex
Error:
```
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
```
Solution:
Make sure you have added `multiDexEnabled true ` inside of **/project/app/build.gradle**
Copy this block inside of your custom Application class
```
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
```
- Theme
Error:
```
RuntimeException: Unable to start activity ComponentInfo{my.sample.package.myapplication/chat21.android.ui.conversations.activities.ConversationListActivity}: java.lang.IllegalStateException:
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
```
Solution:
See the Style section
- Application name exceptions:
Error:
```
/android/MyApp/app/src/main/AndroidManifest.xml:30:9 Error:
Attribute application@label value=(@string/application_name) from AndroidManifest.xml:30:9
is also present at {Library Name} value=(@string/app_name)
Suggestion: add 'tools:replace="android:label"' to element at AndroidManifest.xml:26:5 to override
```
Solution:
Add the ` tools:replace="android:label"` to override the Chat21 SDK app name and default icon:
```
. . .
```
## Deploy JCenter
Follow this [guide](https://github.com/chat21/chat21-android-sdk/wiki/JCenter-Deploy) to deploy your own library to JCenter