.. Teamchat documentation master file, created by sphinx-quickstart on Wed Sep 23 16:53:44 2015. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to Teamchat SDK's documentation! ======================================== .. toctree:: :maxdepth: 2 ================== Introduction ================== Teamchat SDK is a framework for Android, that helps any third party application to easily integrate with Teamchat messaging service. The SDK provides UI elements to display the groups for a user, and also the chat timeline for any selected group. It also supports few UI configurations such as setting different icons, colors, etc. The following sections describe various features of the SDK, such as authentication, getting groups, displaying groups, and chat timeline of a group. ================== Interface ================== --------------- Initialization --------------- SDK exposes an object called Teamchat. This object provides an object oriented interface to the SDK. You can initialize by supplying an Application ID and API key provided by Teamchat. This method should be called first before calling any other methods. .. _link: https://www.smartmessaging.io/login?protected=1 The following code demonstrates how to initiate Teamchat:: static void initializeWithAppID(String appID, String APIkey, Context context, TeamchatCompletionHandler handler); ============= ============================== ===================================================================================== Parameter Type Description ============= ============================== ===================================================================================== appID String This is an alpha numeric string provided by the Teamchat Server for a particular app. APIkey String This is an alpha numeric string corresponding to developer’s registration key handler TeamchatCompletionHandler Initialization is successful, the ‘success’ will be TRUE. In case of Error, Message will contain the details context Context Application Context or Activity Context. ============= ============================== ===================================================================================== **Example**:: Teamchat.initializeWithAppID("your app ID here", "your api key here", this, new Teamchat.TeamchatCompletionHandler() { @Override public void onTeamchatCompletion(boolean success, String error, String message) { if(success){ //success } else { //error } }, this ); -------------------------------- Setting up remote notifications -------------------------------- GCM Registration ID should be set, to enable push notifications. Use the following API to setup remote notifications. The following code demonstrates how to setup remote notifications:: static void setRemoteNotificationsDeviceToken(String regID, Context context); ============= ========= =========================================== Parameter Type Description ============= ========= =========================================== regID String GCM Registration Id. context Context Application Context or Activity Context. ============= ========= =========================================== **Example**:: Teamchat.setRemoteNotificationsDeviceToken("regID", this); GCM Registration ID can be obtained using below code. :: GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(MainActivity.this); regID = gcm.register("senderID"); Refer below link to set up the app to use GCM. https://developers.google.com/cloud-messaging/android/client ------ Login ------ You can login to Teamchat in 2 ways. **************************************************************** By setting Authentication code, Email ID and UserID and host URL **************************************************************** +++++++++++++++++++++++++++ Setting Authentication code +++++++++++++++++++++++++++ Before any other API on Teamchat can be called, you need to pass it the authentication code that you have got from a Teamchat authentication service. You can set the authentication code:: static void setAuthenticationCode(String authCode, Context context); ============= ========= ==================================================== Parameter Type Description ============= ========= ==================================================== authCode String The authentication code provided by Teamchat Service context Context Application Context or Activity Context ============= ========= ==================================================== **Example**:: static final String authCode = ”AUTH_CODE”; Teamchat.setAuthenticationCode(authCode, this); +++++++++++++++++++ Setting User Email +++++++++++++++++++ Before any other API on Teamchat can be called, you need to pass it the user email that you have got from a Teamchat authentication service. You can set the email:: static void setUserEmailID(String emailID, Context context); ============= ========= ================ Parameter Type Description ============= ========= ================ emailID String Email ID context Context Context ============= ========= ================ **Example**:: static final String emailID = ”emailID”; Teamchat.setUserEmailID(emailID, this); ++++++++++++++++ Setting User ID ++++++++++++++++ Before any other API on Teamchat can be called, you need to pass it the user ID that you have got from a Teamchat authentication service. You can set the user id:: static void setUserID(String userID, Context context); ============= ========= ================ Parameter Type Description ============= ========= ================ userID String User ID context Context Context ============= ========= ================ **Example**:: static final String userID = ”UserID” Teamchat.setUserID(userID, this); ++++++++++++++++ Setting Host URL ++++++++++++++++ You can set the host URL using the following API:: static void setHostURL(String hostURL, Context context); ============= ========= ================ Parameter Type Description ============= ========= ================ hostURL String Host URL context Context Context ============= ========= ================ **Example**:: Teamchat.setHostURL("HOST_URL", this); **Note**:: Make sure the Host URL ends with ‘/’ (For example: http://demo.teamchat.com/) **************** Teamchat login. **************** Use the following API to launch login Activity. :: static void login(Context context, LoginCompletionHandler handler); ============= ========================== =============================================== Parameter Type Description ============= ========================== =============================================== context Context Application or Activity Context. handler LoginCompletionHandler If login is successful, ‘success’ will be true. message will convey any error if occurred during login. ============= ========================== =============================================== **If you set an email using ‘Teamchat.setUserEmailID(emailID, this);’, then the login page will have pre-filled email field without editing support.** **Example**:: Teamchat.login(LoginActivity.this, new Teamchat.LoginCompletionHandler() { @Override public void onLoginCompletion(boolean success, String message) { if (success) { //Success } else { //Failure while logging into Teamchat. } } ); Call this method wherever it is appropriate in your application. .. image:: images/Login.png **************************************************************** Registration via APIs: Passing emailID and Verification Code. **************************************************************** Use the following APIs to register user and verify provided emailID. The API to register user is as follows:: public static void register(Context context, String email, TeamchatCompletionHandler handler); ============= ========================== ============================================================ Parameter Type Description ============= ========================== ============================================================ context Context Context email String The email ID that you want to register. handler TeamchatCompletionHandler If email ID is valid then ‘success’ will be true. error will convey any error if occurred during registration. ============= ========================== ============================================================ **Example**:: Teamchat.register(this,email, new Teamchat.TeamchatCompletionHandler() { @Override public void onTeamchatCompletion(boolean success, String error, String message) { if(success){ //Success } else { //Failure while registering. } } }); The API to verify registered email is as follows:: public static void validateVerificationCode(Context context, String verificationCode, TeamchatCompletionHandler handler) ================ ========================== ======================================================================== Parameter Type Description ================ ========================== ======================================================================== context Context Context verificationCode String The verification code that you received in your registered email. handler TeamchatCompletionHandler If the verification code is matched ‘success’ will be true. "error" will convey any error if occurred during verification of email. ================ ========================== ======================================================================== **Example**:: Teamchat.validateVerificationCode(this, OTP, new Teamchat.TeamchatCompletionHandler() { @Override public void onTeamchatCompletion(boolean success, String error, String message) { if(success){ // Email Verified successfully } else { // Verification failed } } }); ---------------------- Initializing Teamchat ---------------------- After all the above mentioned, required parameters are set, or after successful login, this method should be called before any group creation or UI creation APIs on Teamchat can be called. :: static void initWithCompletionHandler(TeamchatStartCompletionHandler handler, Context context); ============= ========================== ============================================================================================================================== Parameter Type Description ============= ========================== ============================================================================================================================== handler TeamchatStart Initialization is successful, ‘success’ will be true.message will convey if any problem was encountered during initialization. CompletionHandler context Context Context ============= ========================== ============================================================================================================================== **Example**:: Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { //Success } else { //Failure while initializing Teamchat. } }, this ); While this asynchronous API is in progress, your app might want to show some progress to indicate Teamchat is being initialized. -------------------------- Setting UI configurations -------------------------- You can set navigation bar title, Chat Rooms List Item selector, and the chat browser icon in chat window as well as the icon to indicate rich media in the chat window. If you do not call any of these APIs, then the default values will be used. :: static void setNavigationTitle(Context context, String title); static void setChatListItemSelector(R.drawable.bg, this); static void setMediaIcon(R.mipmap.search_view_close, this); static void setChatletIcon(R.mipmap.search_view_right_icon, this); **Example**:: Teamchat.setNavigationTitle(this, "My Title"); Teamchat.setChatListItemSelector(R.drawable.bg, this); Teamchat.setMediaIcon(R.mipmap.search_view_close, this); Teamchat.setChatletIcon(R.mipmap.search_view_right_icon, this); You can also override the loader animation using progress_bar_animator.xml file. Create an animation using xml file with the mentioned name and place it in drawable folder. **Example**:: --------------------- Getting groups/rooms --------------------- You can get list of groups using the rooms API. :: static void TeamchatGroups(TeamchatGroupsLoaded handler, Context context); ==================== ==================== =========================================================================================================== Parameter Type Description ==================== ==================== =========================================================================================================== handler TeamchatGroupsLoaded If success Arraylist of TeamchatGroup Objects will be returned else error will convey if any error occurred context Context Context ==================== ==================== =========================================================================================================== **Example**:: Teamchat.TeamchatGroups(new Teamchat.TeamchatGroupsLoaded() { @Override public void onTeamchatGroupsLoaded(boolean suc, ArrayList groups, String error) { if (suc) { //Success } else { //Failure fetching groups } }, this ); If no error, groups will be an array list containing TeamchatGroup objects. The **TeamchatGroup** object is a light weight object and has the following simple properties: ======== ======================================== groupID The identifier of the group as a String name Name of the room ======== ======================================== ----------------------------------- Showing filtered list of groups ----------------------------------- You can show a filtered list of groups using the following APIs: 1. Show groups which excludes specified groups or specified users:: public static void listOfTeamchatGroupsExcludingGroups(ArrayList groupNames, ArrayList emailIDs); ============= ================= ============================================================================= Parameter Type Description ============= ================= ============================================================================= groupNames ArrayList An array of groups to be excluded while showing groups list. emailIDs ArrayList An array of user emails(one-to-one) to be excluded while showing groups list. ============= ================= ============================================================================= **Example**:: ArrayList groupNames = new ArrayList(); groupNames.add("groupName1"); groupNames.add("groupName2"); ArrayList emailIDs = new ArrayList(); emailIDs.add("userEmail1"); emailIDs.add("userEmail2"); Teamchat.listOfTeamchatGroupsExcludingGroups(groupNames, emailIDs); This will list all the groups excluding the groups specified in groupsArray and one-to-one groups specified in userEmailsArray. **Note:** To reset filters:: Teamchat.resetFilters(); Now all the groups will be listed. 2. Getting groups which includes only the specified groups or specified users:: public static void listOfTeamchatGroupsIncludingGroups(ArrayList groupNames, ArrayList emailIDs); ============= ================= ========================================================================= Parameter Type Description ============= ================= ========================================================================= groupNames ArrayList An array of groups to be included while fetching groups. emailIDs ArrayList An array of one to one user emails to be included while fetching groups. ============= ================= ========================================================================= **Example**:: ArrayList groupNames = new ArrayList(); groupNames.add("groupName1"); groupNames.add("groupName2"); ArrayList emailIDs = new ArrayList(); emailIDs.add("userEmail1"); emailIDs.add("userEmail2"); Teamchat.listOfTeamchatGroupsIncludingGroups(groupNames, emailIDs); This will list only those groups specified in groupsArray and one-to-one groups specified in userEmailsArray. **Note:** To reset filters:: Teamchat.resetFilters(); --------------------------------------- Obtaining the chat group using group ID --------------------------------------- You can get a specific group using this API. :: static void TeamchatGroupWithID(String groupID, TeamchatGroupCompletionHandler handler, Context context) ============= ============================== ==================================================== Parameter Type Description ============= ============================== ==================================================== groupID String Group ID handler TeamchatGroupCompletionHandler group will have the teamchat group on succsess. Error will have the error message in case of failure context Context Application or Activity context. ============= ============================== ==================================================== **Example**:: Teamchat.TeamchatGroupWithID("group_id", new Teamchat.TeamchatGroupCompletionHandler() { @Override public void onTeamchatGroupCompletion(Teamchat.TeamchatGroup group, String error, String message) { } }, this ); If no error, a valid group will be returned. ----------------------------- Showing the chat groups list ----------------------------- Use the following API to launch the Chat Groups List Activity:: static void showRoomList(Context context); **Example**:: Teamchat.showRoomList(this); Call this method to launch Chat Groups List Activity wherever it is appropriate in your application. .. image:: images/ChatRooms.png ----------------------------------- Showing the chat window for a room ----------------------------------- Use this API, to load the chat window for a given Chat Room Id. :: static void openRoom(String roomId, Context context); **Example**:: Teamchat.openRoom("roomId", this); Call this method to launch Chat window wherever it is appropriate in your application. .. image:: images/ChatWindow.png -------------------- Showing User profile -------------------- Use the following API to launch the user profile Activity:: static void showProfile(Context context); **Example**:: Teamchat.showProfile(context); Call this method to launch user profile Activity wherever it is appropriate in your application. .. image:: images/UserProfile.png ---------------------- Updating User profile ---------------------- Use the following API to update the user profile i.e name, profile image and phone number:: public static void updateProfile(String profileName, String countryCode, String phoneNumber, Uri profileImageURI, Context context, Teamchat.TeamchatCompletionHandler handler); ================= =============================== ==================================================== Parameter Type Description ================= =============================== ==================================================== profileName String Profile name (non-empty string). profileImageURI Uri Uri of an image to be used as profile image phoneNumber String A valid phone number. countryCode String User’s country code. (Ex: +91, 91) handler TeamchatCompletionHandler Returns ‘true’ if profile is successfully updated. ================= =============================== ==================================================== **Note:** 1. Since image uploading is Data & Time consuming, if currently set profile image need not be changed, pass null. 2. While adding a phone number, country code is mandatorily needed. ------------------------- Showing Settings Activity ------------------------- Use the following API to launch the Teamchat settings view:: static boolean showSettings(Context context); **Example**:: boolean result = Teamchat.showSettings(this); if(result) { //Success } else { //No active Teamchat session } Call this method to launch Settings Activity wherever it is appropriate in your application. .. image:: images/Settings.png ------------------------------------- Launching Public groups Activity ------------------------------------- Use the following API to launch the Public groups Activity:: static void showPublicGroups(Context context); ========== ================================ ====================== Parameter Type Description ========== ================================ ====================== context Context Context ========== ================================ ====================== Call this method to launch Public groups Activity wherever it is appropriate in your application. .. image:: images/PublicGroups.png ----------------------------------- Resetting active Teamchat session ----------------------------------- Use this API to reset Teamchat session before creating a new session:: static void resetTeamchatSession(Context context) **Example**:: Teamchat.resetTeamchatSession(this); ----------------------- Checking session state ----------------------- Teamchat session states are defined by **TCSessionState** enum and the state could be any one of the enum values which are as follows 1. TCSessionStateInactive - Teamchat session is inactive 2. TCSessionStateLoggedIn - User has logged in to Teamchat 3. TCSessionStateActive - Session is active after initial set up 4. TCSessionStateInvalidatedOnUserDelete - Session is invalidated when user is deleted from organisation Use this API to check Teamchat session state:: public static TCSessionState getSessionState(Context context); **Example**:: TCSessionState sessionState = getSessionState(this); ----------------------------------- Setting options to display contacts ----------------------------------- The different types of contacts that are supported by Teamchat are: 1. ShowShowLocalAddressBookContacts - Lists the contacts from phone’s address book. 2. ShowShowServerAdressBookContacts - List the contacts from Teamchat server in users organisation. 3. ShowShowCustomAdressBookContacts - List the custom contacts from app contact provider as per AddressBookContactProvider. The **TCCustomAddressBookContact** object is a light weight object and has the following simple properties: =========== ======================= profileName Contact display name email Contact email phone Contact phone number =========== ======================= **AddressBookContactProvider** is an interface which provides a method that should return an array list of **TCCustomAddressBookContact** objects. The interface method is as follows:: ArrayList customContacts(); This method should be implemented in the class that conforms to AddressBookContactProvider interface and AddressBookContactProvider can be set using the following API:: static void setCustomAddressBookContactProvider(AddressBookContactProvider customAddressBookContactProvider); ================================= ========================== ===================================================================== Parameter Type Description ================================= ========================== ===================================================================== customAddressBookContactProvider AddressBookContactProvider The class that conforms to CustomAddressBookContactProvider interface ================================= ========================== ===================================================================== **Example**:: Teamchat.setCustomAddressBookContactProvider(new Teamchat.AddressBookContactProvider() { @Override public ArrayList customContacts() { return ArrayList; } }); You can choose the type of contacts that should be listed in contacts list using the following API:: static void setShowContactOptions(EnumSet option) =================== =========== =================================================== Parameter Type Description =================== =========== =================================================== option EnumSet You can pass an option or a combination of options. =================== =========== =================================================== **Example**:: EnumSet set = = EnumSet.noneOf(Teamchat.ContactType.class); set.add(Teamchat.ContactType.ShowCustomAdressBookContacts); Teamchat.setShowContactOptions(set); ----------------------------------- Inviting your contacts to Teamchat ----------------------------------- You can invite contacts to Teamchat by creating an array of TeamchatInviteContact objects and passing it to the following API:: static void inviteContactsToTeamchat(ArrayList contacts, TeamchatCompletionHandler handler, Context context); ==================== =============== =========================================================================================================================== Parameter Type Description ==================== =============== =========================================================================================================================== contacts ArrayList An ArrayList of TeamchatInviteContact objects handler Teamchat If invite is successful, the ‘success’ will be TRUE. Otherwise if it is false error and message will have error description. Completion Handler context Context Context ==================== =============== =========================================================================================================================== **Example**: Create **TeamchatInviteContact** objects as follows:: TeamchatInviteContact invitee1 = new TeamchatInviteContact(); invitee1.name = "John"; invitee1.emailID = "john.bell@gmail.com"; TeamchatInviteContact invitee2 = new TeamchatInviteContact(); invitee2.name = "Kate"; invitee2.emailID = "kate.appleseed@gmail.com"; Create an Arraylist of TeamchatInviteContact objects. :: ArrayList inviteContactsArray = new ArrayList; inviteContactsArray.add(invitee1); inviteContactsArray.add(invitee2); Note: **static void initWithCompletionHandler(TeamchatStartCompletionHandler teamchatStartCompletionHandler, Context context)** method should be called before calling Invite API. :: Teamchat.TeamchatCompletionHandler handler = new Teamchat.TeamchatCompletionHandler() { @Override public void onTeamchatCompletion(boolean success, String error, String messaeg) { // Invite was successful } }; Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { Teamchat.inviteContactsToTeamchat(inviteContactsArray, handler, this); } }, this ); While this asynchronous API is in progress, your app might want to show some progress to indicate Teamchat Invite is in progress. ------------------ Getting user info ------------------ You can use **TeamchatUser** class to query about user info like profileName, userEmail, organisation and userID, profileImageURL. 1. Use the following API to get user’s profile name:: static String profileName(Context context); This method returns user’s profile name as a String. **Example**:: String profileName = TeamChatUser.profileName(this) 2. Use the following API to get user’s email:: static String userEmail(Context context); This method returns the user’s emailID as a String. **Example**:: String email = TeamChatUser.userEmail(this); 3. Use the following API to get user’s organisation:: static String organization(Context context); This method returns the user’s organisation as a String. **Example**:: String organization = TeamChatUser.organization(this) 4. Use the following API to get user’s ID:: static String userID(Context context); This method returns the user’s ID as a String. **Example**:: String userID = TeamChatUser.userID(this) 5. Use the following API to get user’s profile image URL:: static String profileImageURL(Context context); This method returns the user’s profile image URL as a String. **Example**:: String profileUrl = TeamChatUser.profileImageURL(this) ------------------------------------ Getting the count of unread messages ------------------------------------ Use the following API to get the count of unread messages that were received:: static int numberOfUnreadMessages(Context context); **Example**:: int unreadMsgCount = Teamchat.numberOfUnreadMessages(this); ------------- Enabling Logs ------------- Use the following API to show the Teamchat logs every time:: static void setLoggingEnabled(boolean loggingEnabled, Context context); **Example**:: Teamchat.setLoggingEnabled(true); --------------- PassLock Screen --------------- Use the following API to nnable the PassLock feature in your App. This API has to be called before the user logs into Teamchat. If the feature is disabled, any APIs related to passLock will not work:: static void supportPassLockFeature(boolean enabled,Context context); **Example**:: Teamchat.supportPassLockFeature(true, this); Use the following API to enable PassLock:: static void enablePassLock(Context context); **Example**:: Teamchat.enablePassLock(this); Use the following API to disable PassLock:: static void disablePassLock(Context context); **Example**:: Teamchat.disablePassLock(this); Use the following API to reset PassCode:: static void resetPassCode(Context context); **Example**:: Teamchat.resetPassCode(this); Use the following API to check whether PassLock is enabled or not:: static boolean isPassLockEnabled(); **Example**:: boolean isPassLockEnabled = Teamchat.isPassLockEnabled(); -------------- App SandBoxing -------------- Use the following API to enable the Sanboxing feature in your App. This API has to be called before the user logs into Teamchat. If the feature is disabled, any APIs related to sandboxing will not work:: static void supportSandboxFeature(boolean enabled,Context context); **Example**:: Teamchat.supportSandboxFeature(true, this); Use the following API to enable SandBoxing:: static void enableSandBoxing(Context context); **Example**:: Teamchat.enableSandBoxing(this); Use the following API to disable SandBoxing:: static void disableSandBoxing(Context context); **Example**:: Teamchat.disableSandBoxing(this); Use the following API to check whether SandBoxing is enabled or not:: static boolean isSandBoxingEnabled(Context context); **Example**:: boolean isSandBoxingEnabled = Teamchat.isSandBoxingEnabled(this); -------------- Group Creation -------------- Use the following API to create a new Group:: static void createGroupWithCompletionHandler(Context context, TeamchatGroupCreationCompletionHandler completionHandler); ================= ====================================== ==================================================== Parameter Type Description ================= ====================================== ==================================================== context Context Application Context or Activity Context completionHandler TeamchatGroupCreationCompletionHandler Completion Handler ================= ====================================== ==================================================== **Example**:: TeamchatGroupCreator creator = new TeamchatGroupCreator(); //Mandatory methods for group creation creator.setGroupName("My Group Name"); //Group Members ArrayList groupMembers = new ArrayList(); Teamchat.TCTeamchatContact contact1 = new Teamchat.TCTeamchatContact(); contact1.email = "abc@gmail.com"; contact1.profileName = "abc"; Teamchat.TCTeamchatContact contact2 = new Teamchat.TCTeamchatContact(); contact2.email = "def@gmail.com"; contact2.profileName = "def"; groupMembers.add(contact1); groupMembers.add(contact2); creator.setGroupMembers(groupMembers); // Optional methods. creator.setAdminOnly(true); creator.setShouldHideMemberProfiles(true); creator.createGroupWithCompletionHandler(this, new TeamchatGroupCreator.TeamchatGroupCreationCompletionHandler() { @Override public void onTeamchatGroupCreationComplete(boolean success, TeamchatError error, String message, Teamchat.TeamchatGroup createdGroup) { if(success) { //success } else { //Failure } } }); -------------------- Add Members to Group -------------------- Use the following API to add members to a group:: static void addMembers(Context context, ArrayList membersToBeAdded, Teamchat.TeamchatGroup teamchatGroup, TeamchatGroupOperationCompletionHandler completionHandler); ================= ======================================= ==================================================== Parameter Type Description ================= ======================================= ==================================================== context Context Application Context or Activity Context membersToBeAdded ArrayList List of Contacts to be added teamchatGroup Teamchat.TeamchatGroup Teamchat Group Object to which add members completionHandler TeamchatGroupOperationCompletionHandler Completion Handler ================= ======================================= ==================================================== **Example**:: //Members to be added. ArrayList membersToBeAdded = new ArrayList<>(); Teamchat.TCTeamchatContact contact1 = new Teamchat.TCTeamchatContact(); contact1.email = "uvw@gmail.com"; contact1.profileName = "uvw"; Teamchat.TCTeamchatContact contact2 = new Teamchat.TCTeamchatContact(); contact2.email = "xyz@gmail.com"; contact2.profileName = "xyz"; membersToBeAdded.add(contact1); membersToBeAdded.add(contact2); TeamchatGroupCreator.addMembers(this, membersToBeAdded, group, new TeamchatGroupCreator.TeamchatGroupOperationCompletionHandler() { @Override public void onTeamchatGroupOperationComplete(boolean success, TeamchatError error, String message) { if(success) { //Sucsess } else { //Failure } } }); ========================================= Integrating the SDK with your Android app ========================================= --------- Method 1: --------- Place Teamcht.aar file in project’s lib folder and add the following lines to app’s gradle file.:: android { . . packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE.txt' } . . } repositories{ flatDir{ dirs 'libs' } } dependencies { . . compile(name:'Teamchat', ext:'aar') . . } .. image:: images/ProjectNavigator.png Your Gradle file will look something like this .. image:: images/SetUp.png --------- Method 2: --------- Follow the below mentioned steps: Step 1: Right click on project in project structure. Step 2: Click on New->Module. Step 3 : Click on Import .Jar or .Aar package. Step 4 : Click next. Step 5 : Now browse and select the Teamchat.aar file. Step 6 : Click Finish. Now the module will be created. Step 7: Click on project structure and go in dependency section of the module of your app. Step 8 : Click on plus sign on right side and add teamchat module in the dependencies. ----- Note: ----- 1. This SDK uses the following libraries. :: com.android.support:design:23.0.1 com.android.support:appcompat-v7:23.0.1 com.google.android.gms:play-services-maps:8.1.0 com.google.android.gms:play-services-gcm:8.1.0 aws-android-sdk-2.1.6-autoscaling.jar aws-android-sdk-2.1.6-core.jar universal-image-loader-1.9.3.jar Please add the following under dependencies of gradle file :: dependencies { . . compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.google.android.gms:play-services-gcm:8.1.0' compile 'com.google.android.gms:play-services-maps:8.1.0' compile 'com.android.support:design:23.0.1' . . } 2. Make sure to use a theme with no actionbar as your app base theme. Customize this in styles.xml. Example: Using Light theme with no actionbar. :: 3. To use location services, set up the app to use google maps. Refer https://developers.google.com/maps/documentation/android-api/start 4. To use GCM Push Notification services, set up the app to use GCM. Refer https://developers.google.com/cloud-messaging/android/client 5. SDK uses the following permissions. So no need of including these permissions again in your application Manifest file. Network/ internet related :: android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_WIFI_STATE android.permission.INTERNET android.permission.INTERACT_ACROSS_USERS_FULL Contacts read and write :: android.permission.READ_CONTACTS android.permission.WRITE_CONTACTS File storage related :: android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_EXTERNAL_STORAGE Call/ SMS(for verification) related :: android.permission.CALL_PHONE android.permission.READ_PHONE_STATE android.permission.RECEIVE_SMS Push notification related :: android.permission.WAKE_LOCK com.google.android.c2dm.permission.RECEIVE android.permission.VIBRATE android.permission.GET_TASKS Location related :: android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_COARSE_LOCATION com.google.android.providers.gsf.permission.READ_GSERVICES Mic :: android.permission.RECORD_AUDIO Camera access :: android.permission.CAMERA Set host URL before initializing using the following API. Make sure the url ends with ‘/’ (ex. http://demo.teamchat.com/) :: TeamChat.setHostURL("HOST_URL", this); Now you need to initialize the Teamchat object with appID before making any other API calls. :: Teamchat.initializeWithAppID("your app ID here", "your api key here", this, new Teamchat.TeamchatCompletionHandler() { @Override public void onTeamchatCompletion(boolean success, String error, String message) { if(success) { //Initialized successfully } else { //Initialization failed. error is holding the error description. } }, this ); Enable remote notifications by setting GCM ID.:: GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(MainActivity.this); regId = gcm.register("your_GCM_SenderId"); Teamchat.setRemoteNotificationsDeviceToken(regId, MainActivity.this); Refer below link, how to obtain Registration ID. https://developers.google.com/cloud-messaging/android/client You can login to Teamchat in two ways: 1. Set Authentication code, emailID and userID. :: TeamChat.setAuthenticationCode("authenticationCode", this); TeamChat.setUserEmailID("userEmailID", this); TeamChat.setUserID("userID", this); 2. Launch Teamchat login Activity. :: Teamchat.login(LoginActivity.this, new Teamchat.LoginCompletionHandler() { @Override public void onLoginCompletion(boolean success, String message) { if (success) { //Success } else { //Failure while logging into Teamchat. } } ); If you want to configure UI of the Teamchat screens, you can set them as follows:: Teamchat.setNavigationTitle(this, "My Title"); Teamchat.setChatListItemSelector(R.drawable.bg, this); Teamchat.setMediaIcon(R.mipmap.search_view_close, this); Teamchat.setChatletIcon(R.mipmap.search_view_right_icon, this); To launch the chat groups list Activity, you can use the following API:: Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { Teamchat.showRoomList(this); } else { //error } }, this ); Note: **static void initWithCompletionHandler(TeamchatStartCompletionHandler teamchatStartCompletionHandler, Context context)** method should be called before launching groups list activity. To launch the chat window activity, you can use the following API:: Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { Teamchat.openRoom("group_id", this); } else { //error } }, this ); Note: **static void initWithCompletionHandler(TeamchatStartCompletionHandler teamchatStartCompletionHandler, Context context)** method should be called before launching chat window activity. To launch the user profile activity, you can use the following API:: Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { Teamchat.showProfile(this); } else { //error } }, this ); Note: **static void initWithCompletionHandler(TeamchatStartCompletionHandler teamchatStartCompletionHandler, Context context)** method should be called before launching user profile activity. To launch the public groups activity, you can use the following API:: Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { Teamchat.showPublicGroups(this); } else { //error } }, this ); Note: **static void initWithCompletionHandler(TeamchatStartCompletionHandler teamchatStartCompletionHandler, Context context)** method should be called before launching public groups activity. To launch the Teamchat settings activity, you can use the following API:: Teamchat.initWithCompletionHandler(new Teamchat.TeamchatStartCompletionHandler() { @Override public void onTeamchatStartCompletionHandler(boolean success, String error, String messaeg) { if (success) { boolean result = Teamchat.showSettings(this); if(result) { //Success } else { //No active Teamchat session } } else { //error } }, this ); Note: **static void initWithCompletionHandler(TeamchatStartCompletionHandler teamchatStartCompletionHandler, Context context)** method should be called before launching Teamchat settings activity. To enable PassLock, you can use the following API:: Teamchat.enablePassLock(context); To disable PassLock, you can use the following API:: Teamchat.disablePassLock(context); To reset the PassCode, you can use the following API:: Teamchat.resetPassCode(context); To check whether PassLock is enabled or not use the following API:: Teamchat.isPassLockEnabled(); To enable SandBoxing, you can use the following API:: Teamchat.enableSandBoxing(context); To disable SandBoxing, you can use the following API:: Teamchat.disableSandBoxing(context); To check whether SandBoxing is enabled or not use the following API:: Teamchat.isSandBoxingEnabled(context); To create a new Group, you can use the following API:: TeamchatGroupCreator creator = new TeamchatGroupCreator(); //Mandatory methods for group creation creator.setGroupName("My Group Name"); //Group Members ArrayList groupMembers = new ArrayList(); Teamchat.TCTeamchatContact contact1 = new Teamchat.TCTeamchatContact(); contact1.email = "abc@gmail.com"; contact1.profileName = "abc"; Teamchat.TCTeamchatContact contact2 = new Teamchat.TCTeamchatContact(); contact2.email = "def@gmail.com"; contact2.profileName = "def"; groupMembers.add(contact1); groupMembers.add(contact2); creator.setGroupMembers(groupMembers); // Optional methods. creator.setAdminOnly(true); creator.setShouldHideMemberProfiles(true); creator.createGroupWithCompletionHandler(this, new TeamchatGroupCreator.TeamchatGroupCreationCompletionHandler() { @Override public void onTeamchatGroupCreationComplete(boolean success, TeamchatError error, String message, Teamchat.TeamchatGroup createdGroup) { if(success) { //success } else { //Failure } } }); To add members to a group, you can use the following API:: //Members to be added. ArrayList membersToBeAdded = new ArrayList<>(); Teamchat.TCTeamchatContact contact1 = new Teamchat.TCTeamchatContact(); contact1.email = "uvw@gmail.com"; contact1.profileName = "uvw"; Teamchat.TCTeamchatContact contact2 = new Teamchat.TCTeamchatContact(); contact2.email = "xyz@gmail.com"; contact2.profileName = "xyz"; membersToBeAdded.add(contact1); membersToBeAdded.add(contact2); TeamchatGroupCreator.addMembers(this, membersToBeAdded, group, new TeamchatGroupCreator.TeamchatGroupOperationCompletionHandler() { @Override public void onTeamchatGroupOperationComplete(boolean success, TeamchatError error, String message) { if(success) { //Sucsess } else { //Failure } } }); ========================= Document Version History ========================= This table describes the changes to TeamchatSDK documentation across different versions. =========== ================================================== Version Notes =========== ================================================== 2.1 Added descriptions related to filters for roomlist 2.0 Added descriptions for the group creation API, and for the group configuration APIs and for enabling and showing passcode view. 1.0 New document that describes the interface to TeamchatSDK and the steps to integrate the SDK with your Android app. =========== ==================================================