Chat - Messaging SDK for Android

Chat - Messaging SDK for Android

Released 3 years ago , Last update 1 year ago

Fully featured customizable Java framework to display and manage message based conversations - similar to Whats App or Messages. Quickly add text, picture and location based messaging functionality to your app.

Chat SDK Firebase

Chat SDK is light-weight and flexible providing an easy way to add instant messaging to your app.

 

Chat SDK Android is light-weight and flexible providing an easy way to add instant messaging to your Android app.

Key Features

  • Private messages
  • Text, Picture and location messages
  • Group / Public chat
  • User profile
  • Stand-alone or custom authentication
  • Social Login
  • Full source code provided
  • Easy to integrate with existing apps
  • Native iOS version available 
  • Fully inter-compatible with Chat SDK iOS
  • 2-week money back guarantee
  • Supports over 100k daily active users

Chat SDK is designed to be as simple and flexible as possible. It functions as a stand-alone app or it can be integrated with your project using Gradle. To see a demo of the SDK you can download the APK from the Github Project.

Hosting and Performance

The Chat SDK uses Firebase, a Google owned real-time database, to handle message delivery. Firebase is reliable, fast and cost effective. For most of our customers, the free tier provides more than enough capacity.

  • 20,000 Daily Users - Approximate number of users supported by free hosting tier
  • Chat SDK also scales well. We have clients who are using the Chat SDK with over 100,000 daily active users

Successful projects

Chat SDK is already used on hundreds of successful apps. Here are some of our most successful implementations:

Parlor - Audio social network

  • Over 100k Daily active users
  • Cross platform - iOS and Android
  • Full integration with existing authentication system

Tapatalk - Forum agrigator

  • Over 5m installs 
  • Chat SDK is used to handle private messaging
  • 3k concurrent users
  • Messaging system fully re-skinned

86 Serving - Restaurant staff communication tool

  • Communication tool for restaurant staff
  • Cross platform (iOS and Android)

Comments from our customers

"Excellent Product. Quick responsive response from Developers. Highly recommend it. K" Tefera Kebede

"This app setting is very easy with no errors. There is also flexibility in the app design.
Your many plans will be realizable. If you have any problems, let's consult Ben.
He will surely help you. He can quick response, work and he is a gentleman.
There was nothing that was giving me trouble. I could rely on him without feeling worried´╝Ä

This app is worth more than price and 5 stars." Naon

 

"The application is well written, it makes it easy to integrate with existing applications." T.O

The Licenses

Chat SDK comes with a number of flexible licensing options.

  • Single app license: allows you to use the Chat SDK commercially in one project
  • Multi-app license: allows you to use the Chat SDK in up to 5 projects
  • Enteprise license: allows you to use the Chat SDK in unlimited projects

For each of these license there are also three options:

  • UI license
  • Complete license
  • Professional license

The UI license only includes the Chat user interface components. This is great if you already have a server to deliver the messages.

The Complete license gives you the app with all the code to deliver the messages too! As seen in the demo.

The Professional license is designed for customers who need to deploy the app quickly at a large scale. It includes app setup - you just provide us with the necessary API keys for Firebase, Facebook etc... and we'll configure the project for you. It also includes as 3-months priority support via phone or messenger. We will also provide support optimising the app for any bottlenecks that occur up to 100k daily active users

Every license includes the full source code for Chat SDK. We also offer excellent support. We try to reply to issues within hours if they are reported within usual business hours. Direct support via Skype also comes as standard.

We also offer a full range of consulting services from a basic service to configure the Chat SDK to a full app integration service.

Here's a list of the common services we offer and the prices:

  • Chat SDK setup - $360
  • Integration with existing app from $480. Use the "Get a quote" button for details. 

Parse shutting down

A number of customers have been worried by the news that Parse is shutting down next year. Firstly, the good news is that the Chat SDK only has a very light dependency on Parse. We use Parse for image uploads and push notifications.

Push notifications

The push notification provider can be changed by modifying one function in the Chat SDK. There are multiple other possible providers like Push Woosh, custom push server etc...

Image uploads

Image uploads can be handled in multiple ways too. Amazon offer file storage for $0.03 per GB and images can also be uploaded directly to a standard Apache server.

Parse will shut down on the 28th of January. For the next couple of months we'll be looking around for the best, cheapest and most reliable alternative. Once we've decided, we will update the Chat SDK accordingly. We guarantee that the Chat SDK will be fully independent of Parse by the start of July.

The user interfaceChat SDK Android

The core version of the is ideal if you have your own messaging back end and need a user interface. Chat SDK core license provides you with the full front end ready to be connected to your message delivery system.

  • Flexible message view including text, picture and location message types
  • Login screen
  • Thread list view
  • User profile screen
  • User avatars
  • Expanding text input text box
  • Copy/Paste
  • Tabbed interface - profile page, contacts page, search page etc...
  • API Level 15+ supported

The SDK provides a clean simple interface that completely decouples the creation of display of messages and thread form the way they're transmitted and received over the network making easy to integrate with your back end.

The back-end

Chat SDK Android

Chat SDK is powered by Firebase, Google's excellent real-time database. Firebase provides powerful, secure websocket implementation to deliver data in real time. Firebase frees you from the worry and complexity of running and maintaining your own server and allows you to concentrate on what's really important, developing your product.

  • Lightning fast real-time chat
  • Login via Facebook, Email, Twitter, Anoymous
  • Multiple user accounts on one device
  • Cloud message storage
  • Push notifications
  • Powerful search API
  • Add custom meta data to users' profiles
  • Lazy loading of messages
  • Clean architecture
  • Scalable - the app has been tested with over 100k daily users
  • Low cost - most apps will never need to pay for hosting
  • Full source code provided

Related products

Along side the chat SDK we also offer two other versions:

 

4.3
  • 5 5
  • 4 0
  • 3 0
  • 2 0
  • 1 1
6 Reviews Read Reviews

Pricing

14 day 14-day money-back guarantee

FREE

MIT license

The MIT license is an open-source license.

Need custom services for this product? Get a quote

Setup / installation

Chat SDK Android Front End

To start off with we're just releasing the Core+Firebase version of the code - if you'd like the core version you can create a new support issue to let us know.

Chat SDK Android Firebase

!! IMPORTANT !! - Setup issues

If you have an issues installing or using this SDK please create a new support issue. We will reply within 1 hour if you make the request during work hours - 9:00 - 20:00 GMT.

There are two ways to get started using the ChatSDK. You can either start customizing the fully configured example project or you can add ChatSDK to an existing project. In this documentation we will first look at how to add ChatSDK to your existing project, then we'll look at how to configure ChatSDK with your Backendless and Firebase account details.

NOTE: ChatSDK comes as a fully functional project based on our test accounts. It is advised to use this documetnation to configure the project to your own accounts.

Adding ChatSDK to an existing project

You can easily enable instant messaging for your app in only a few minutes by adding the ChatSDK to your existing project:

  1. Open your existing project or create a new one
  2. Download the Android ChatSDK and unzip it
  3. Import the project modules from the ChatSDK to your project

    We need to import the following modules country_picker, facebook, firebase_plugin, generator and sdk. To do this open project and click file -> new -> import module


    Next click on the far right button to browse your directories. Navigate to where you have saved the ChatSDK project and select the above dependancies. You should be able to import all of them at once, if you can't then repeat the process to add all the modules.

  4. Add the SDK versions
    Now you will see that gradle cannot be sync because it missing some parameters. Go to gradle.properties in the root of your project and add this to allow us to set higher build versions for the entire SDK all at once:
    MIN_SDK = 15
    ANDROID_BUILD_SDK_VERSION = 21
    ANDROID_BUILD_TOOLS_VERSION = 21.1.0
    ANDROID_BUILD_TARGET_SDK_VERSION = 21
    ANDROID_COMPILE_SDK_VERSION = 21
  5. Add Google-Services to your gradle file
    Finally you need to add the following code to your project's build.gradle file. 
    Ensure the repositories contains the following:
    repositories {
    mavenCentral()
    jcenter()
    }
    and the dependencies contain the following:
    classpath 'com.android.tools.build:gradle:2.1.3'
    classpath 'com.google.gms:google-services:3.0.0'

NOTE: It is worth checking the latest version for these. The ones displayed are the correct ones on time of writing and will depreciate when new versions are released.

Configuring ChatSDK

ChatSDK relies on serveral different services to be fully operational. Firebase deals with storing the user data, notifying the app when the data has changed and storing the files for the audio, video and image messages. Backendless takes care of push notifications on the app. Facebook and Twitter can also be used if you want social media login for your app. ChatSDK comes preconfigured for all these types on our test accounts meaning you will need to create your own before you can get fully up and running.

Firebase

  1. Go to the Firebase website and create an account if you do not already have one
  2. Create a new project on the Firebase dashboard
  3. Click on this project and then click database in the left hand menu
  4. Copy the url from near the top of the screen, it shuold look something like this:
    https://yourappname.firebaseio.com/
  5. In the ChatSDK Android open com.braunster.chatsdk.network.BDefines.java and copy your path in place of the ServerUrl and also add it to your Firebas storage path. Finally set your Firebase root path.

!! IMPORTANT !! The base URL path mush have a trailing slash like this:

public static final String BRootPath = "testRoot/";

public static String ServerUrl = "https://your-firebase-name.firebaseio.com/" + BRootPath;

public static String FirebaseStoragePath = "gs://your-firebase-name.appspot.com";

If you miss off the trailing slash the SDK won't be able to process the URLs properly and messages may not be updated.

NOTE: For the Firebase storage path you need to only add the Firebase name you have set followed by appspot.com.

NOTE: The root path of the app allows you to set custom branches for a single project. Depending on the string set will determine where the data is stored. This means you can set a different root path for your production and testing phases meaning that the data will be completely seperatede from each other but stored in the same place to view.

Next you need to add your app to your Firebase project.

  1. Click the cog icon and then click Project settings
  2. Click Add app
  3. Click the Android icon
  4. Add your App package ID 
  5. The rest of the instructions are all already covered, finishing should download a Google Services JSON file

You should now add this JSON file to your sdk file.

IMPORTANT: You need to go through this process twice. The first time you need to add the package name of your app (to the sdk file). The second time you need to add the following package name: com.braunster.androidchatsdk.firebaseplugin

This JSON needs to be added into your firebase_plugin folder. If you do not add this then the ChatSDK won't compile properly.

Authentication

Firebase allows users to login with many different account (Email, Anonymous, Facebook, Twitter, Google etc) but these need to be enabled from the app dashboard.

  1. Click Auth in the left hand menu
  2. Click SIGN-IN METHOD in the top menu
  3. Click the sign in method you want and then enable. For social media logins you can come here for explanations of getting them set up.

 

Backendless

  1. If you haven't already got a Backendless account then go to the Backendless website and create one.
  2. Create a new app on the dashboard and click it
  3. Click settings in the top menu to bring up your app keys
  4. Navigate to your strings.xml file and add your AppID, App Secret and Version.
<string name="backendless_app_id">1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
<string name="backendless_secret_key">1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
<string name="backendless_app_version">v1</string>

The app is now ready to go, there are still some push notifications set up to do but otherwise you can load up the app and login to your new accounts.

Facebook setup

Navigate to the Facebook developer account page.

If you don't already have an account create one. Then click "Apps" -> "create new app". On the new app page click "Settings". Click "Add Platform" and choose Android.

Fill in a display name and a contact email. Then you need to set the app key hash. To get the app hash, you can use the Utils.getSHA. You will also need to set your app package name and class name.

Then click "Status & Review" and set the switch to "Yes" this will allow other people to sign on to your app.

Now go to the “sdk” string resource file and edit the facebook_id item setting it to your Facebook app id. You can also create a new item in your string resource file and it will override the original value.

Navigate back to the Facebook developers page and in the left hand menu click the + Add Product button.
Choose Facebook login
Go back to your Firebase dashboard, click the auth button and then Facebook login, you can copy an OAuth redirect URL from here, copy it into the Valid OAuth redirect URLs area
Click save changes

Now the app is setup but you still need to link the Facebook account to Firebase and your app.

Go back to the Firebase dashboard and click "Login & Auth". Click the Facebook tab and tick the "Enabled" box. Then copy paste your Facebook "App Id" and "App Secret" into the boxes provided.

Push notifications

Firstly: Create an account with Backendless

All the code for Push Notifications is already included in the ChatSDK. Getting them working only requires a small amount of configuration. For help regarding this you can take a look at the Backendless guide.

NOTE: Some of the steps in this tutorial include adding code to the app, these steps should be unnecessary as they have already been added to the project.

NOTE: If you want push notifications to work in Development mode make sure to configure them in your provisioning profile for both development and production.

Google Maps

Copy the permission.MAPS_RECEIVE declared in the “app” manifest. Notice that you need to replace “com.braunster…” with your package name.

After that, you will need to add you API key in the manifest. After that Google Play services are added as a dependency by the SDK. Once you have your api key, just past it in the manifest. Notice that you will have to sign you app to get the key.

Example:

<!-- Google Maps Metadata-->
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="YOUR API KEY"/>

There is more then one way to do it, This is how i do it but you can do it your own way.

signingConfigs {

    debug {
        storeFile file('this is your keystore file path')
        keyAlias your alias'
        keyPassword ‘your password’
        storePassword 'your password'
    }

    release {
        storeFile file('this is your keystore file path')
        keyAlias your alias'
        keyPassword ‘your password’
        storePassword 'your password'
    }
}

If you are unable to see the map you may have authentication problem, You need to add the package name and SHA to the credentials in your developer console.

Security

Finally, Firebase starts of with very lax security rules. That would mean that anyone could delete all the data in your database by writing one JavaScript query. To stop this, open the dashboard and click on the "Security" tab. Copy the following code:

{
  "rules": {
    ".read": true,
    ".write": "auth != null"
  }
}

This will mean that only authenticated users can modify your data. To read more about Firebase security look here.

5) Running the app:

Add Dependency to the firebase module this goes below to the android brackets in your “app” build.gradle file..

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':firebase_plugin')
}

Now you need to setup the network adapter in your app. To do so create an “App” object that extends “Application” and in it you should place the following:

@Override
public void onCreate() {
    super.onCreate();
    ChatSDKUiHelper.initDefault(); // This is used for the app custom toast and activity transition

    BNetworkManager.init(getApplicationContext()); // Init the network manager        

    BFirebaseNetworkAdapter adapter = new     BFirebaseNetworkAdapter(getApplicationContext()); // Create new network adapter
    BNetworkManager.sharedManager().setNetworkAdapter(adapter); // Set the adapter to the network manager.
}

If the project is fresh and you want to open the SDK default login activity and see the app flow you need to set the SDK login activity as your launcher activity in the application manifest. You can do it by replacing your main activity with this.

<activity
       android:name="com.braunster.chatsdk.activities.ChatSDKLoginActivity"
       android:label="@string/app_name"
       android:screenOrientation="portrait"
       android:theme="@style/ChatSDKTheme"
       android:windowSoftInputMode="stateHidden|adjustPan"
>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

If you get Error:Execution failed for task ':app:packageDebug'.> Duplicate files copied in APK META-INF/LICENSE.txt while compiling try adding:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}

to your build.gradle file under your “app” module. It should be inside the “android” brackets.

To get the Firebase version of the app working several steps are necessary:

Now the app should be ready to go!

If you have any problems Firebase offer good documentation and Facebook have an integration guide.

License » MIT license Download

Get A Quote

What do you need?
  • Custom development
  • Integration
  • Customization / Reskinning
  • Consultation
When do you need it?
  • Soon
  • Next week
  • Next month
  • Anytime

Thanks for getting in touch!

Your quote details have been received and we'll get back to you soon.

or Get a quote

for customization or integration services


Or enter your name and Email
  • AK Azaz Khalid 4 weeks ago
    You need to init ui helper before using the sdk, You can use default init if you want to test the sdk or use default components.The use of this class is to make the BaseComponents of the SDK Ui adapt to your LoginActivity, MainActivity and ChatActivity. I am getting this error please help me
  • G geniuskrazy 8 months ago
    hi guys ! Thank you for all you have done, it's a wonderfull API, Congrat I'm looking to create a thread beetween two users by just using user informations like BUser. for example in my app i have some activity where u can see a user profile with his BUser informations, so i looking for a way i can create a thread between the two users with something like BUser mine = my buser informations BUser yours = the second buser informations creatThreadwith(yours){ .... } thank you for replying
    • BS Ben Smiley 7 months ago
      You can do this with the createThreadWithUsers method. YOu can find it in the BChatcatNetworkAdapter.java file.
  • F Fogue 8 months ago
    Hello Mr. Smiley, I represent a student's project group and we are implementing an android app. We will need the core version of your application since we have our own messaging back end and just need a user interface. I couldn't find information about the pricing in this case, so I thought I'll ask you directly :)