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: 2 months 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 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-08T13:53:55.000Z (over 2 years ago)
- Last Synced: 2025-04-02T12:13:27.829Z (2 months 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
## FeaturesWith 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