-
Add jitpack dependency to root build.gradle
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
-
Add the dependency
dependencies { implementation 'com.github.UsePace:android-message-center:{latest-version}' }
-
Add The following permission to Manifest.xml file
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace"/>
-
In case of Manifest Failure, Add this under Application Tag
tools:replace="android:theme"
-
For Debugging/Testing the library (to be able to run the library as an application) do the following:
-
Replace The
build.gradle
plugin fromcom.android.library
tocom.android.application
-
Uncomment the Manifest
todo: Uncomment for testing
-
Test and debug method inside
TestActivity.Java
, Default Launcher for the app
-
For toolbar title override the following string to strings.xml - strings-ar.xml
<string name="message_center_toolbar_title">Title</string> <string name="message_center_channel_is_frozen">Frozen Channel Title</string>
-
For colors styling override to colors.xml
<color name="message_center_primary">{color}</color> <color name="message_center_primary_dark">{color}</color> <color name="message_center_primary_accent">{color}</color> <color name="message_center_chat_view_background">{color}</color> <color name="message_center_chat_view_welcome_background">{color}</color> <color name="message_center_chat_view_bubble_color">{color}</color>
-
First Step for integrating the app is to connect on the start of the application
MessageCenter.connect(Context context, ConnectionRequest connection, ConnectionInterface connectionInterface)
-
Connection Request Object Has the following items
- String app_id; //The Application ID (provided from back-end)
- String user_id; // User id (provided from back-end)
- String access_token; //Access Token for Security (provided from back-end)
- String client; //Message Center is a Client Base Service, The only Client for now is
MessageCenter.CLIENT_SENDBIRD
- String fcm_token; //The FCM token for notification
- String apn_token; //for ios only
-
Connection Request Constructors
- public ConnectionRequest()
- public ConnectionRequest(String client, String fcm_token, String app_id, String user_id, String access_token)
-
Sample Code for connecting to Message Center
MessageCenter.connect(this, connectionRequest, new ConnectionInterface() { @Override public void onMessageCenterConnected() { } @Override public void onMessageCenterConnectionError(int error_code, MessageCenterException mce) { } });
-
Getting Total of Unread Messages
MessageCenter.getUnReadMessagesCount(Context context, String chat_id, UnReadMessagesInterface unread_message_interface)
-
if chat_id is not provided, the sdk will retrieve the total unread messages for all channels
-
if chat_id is provided, the sdk will retrieve the total unread messages for the provided channel
-
Sample code for retrieving the count
MessageCenter.getUnReadMessagesCount(Context: context, chat_id: "channel_sample", new UnReadMessagesInterface() { @Override public void onUnreadMessages(int count) { } @Override public void onErrorRetrievingMessages(MessageCenterException e) { } });
- Joining the chat by url(id) provided
- Sample code for joining a conversation
MessageCenter.openChatView(Activity: this, ConnectionRequest: optional_connection_request, chat_id: "sample_chat_id", theme: new Theme(toolbar: "title", toolbar_subtitle: "subtitle"), openChatViewInterface: OpenChatViewInterface, optionalSdkCallbacks : sdkCallbacks);
- Connection Request is optional, if you want to update your connection request values, else pass null
- if Theme object is not provided, the app will take the defaults
- Theme Object for android have (
app_name
,toolbar
,toolbar_subtitle
,welcome_message
,call_enabled
) .. - Executing this interface will open the chatting window
- an error callback will be triggered in case of error
- a viewWillStart callback will be triggered before the launch of the chat activity
- onActivityResult will be triggered on the close of the Chat View with request_code: MessageCenter.OPEN_CHAT_VIEW_REQUEST_CODE, response_code: MessageCenter.OPEN_CHAT_VIEW_RESPONSE_CODE
- SdkCallBacks Are Optional(Null can be passed), SdkCallBacks will notify the App with any Event that happens with the sdk
- For event handling (GTM, Adjust, ...) There Must be a check in the app side for the app_name key
- When adding an event callback, use
EventForApp.AppName.toString()
for theapp_name
parameter - Available SdkCallbacks:
- void onCallButtonClicked(OnCallButtonClickedResult onCallButtonClickedResult); - void onEvent(String app_name, String event_key, Map<String, Object> Data); //Used For Any Event Loggers
- Closing the chat view from the app side
- Sample code for closing the chat view
MessageCenter.closeChatView(context: this);
- Executing this interface will close the chatting window in the sdk
-
Handles only the related to MessageCenter Notifications
-
Sample code for Handling MessageCenter Notification
MessageCenter.sdkHandleNotification(context: context,class: Class next, icon: R.mipmap.notifcation, title: "Message App", remotemessage: remoteMessage, new SdkHandleNotificaitonInterface() { @Override public void onMatched(String channel_url) { } } );
-
if app was opened from notification you will get 2 extra fields with the intent
- CHANNEL_URL : a string url of the channel a message sent to
- FROM_NOTIFICATION : a boolean field defining if message came from notification
-
checks payload if its related to MessageCenter Notifications
-
Sample code for Handling App MessageCenter Notification
MessageCenter.appHandleNotification(remotemessage: remoteMessage, interface: new AppHandleNoticiationInterface() { @Override public void onMatched(JSONObject data) { //JSON Object will moduled with next versions // to get the message call jsonObject.getString("message") // to get the channel url call jsonObject.getJSONObject("channel").getString("channel_url") // More information is provided with the JSON object, toString() to know more } @Override public void onUnMatched() { } });
-
returns true if Message Center is connected
-
Sample code for checking connection
MessageCenter.isConnected();
-
Disconnects the chat services and stop receiving notifications for chat, best case to use if with user logout
-
Sample code for disconnecting
MessageCenter.disconnect(Context context, new DisconnectInterface() { @Override public void onMessageCenterDisconnected() { } });