# Applozic Cordova Chat Plugin for Ionic and PhoneGap

Applozic powers real time messaging across any device, any platform & anywhere in the world. Integrate our simple SDK to engage your users with image, file, location sharing and audio/video conversations.

Signup at https://www.applozic.com/signup.html to get the application key.



## Using
    
Install the plugin

    $ cordova plugin add https://github.com/AppLozic/Applozic-Cordova-Ionic-PhoneGap-Chat-Plugin.git
    
    
Note: For Ionic, use 

	$ ionic cordova plugin add https://github.com/AppLozic/Applozic-Cordova-Ionic-PhoneGap-Chat-Plugin.git

Plugin works only on android and iOS, for web (browser) support, check the javascript plugin at:
	https://www.applozic.com/docs/web-chat-plugin.html

## Android
Open /platforms/android/ folder in Android Studio.
If you see gradle wrapper error then open gradle/wrapper/gradle-wrapper.properties
Change distributionUrl to point to 2.14.1-all
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip


## iOS

Open /platforms/ios/YOUR_PROJECT_NAME.xcodeproj in Xcode.
Verify if the Applozic.framework is added in "Embedded Binaries". If not, then add it to the "Embedded Binaries" by clicking the + button under Project General Settings -> Embedded Binaries.
Remove duplicate entry from "Linked Framework and Libraries" if any.



### Steps to integrate:


#### Login/Register User
```js
    var alUser = {
            'userId' : userId,   //Replace it with the userId of the logged in user
            'password' : password,  //Put password here
            'authenticationTypeId' : 1,
            'applicationId' : 'applozic-sample-app',  //replace "applozic-sample-app" with Application Key from Applozic Dashboard
            'deviceApnsType' : 0    //Set 0 for Development and 1 for Distribution (Release)
        };

   applozic.login(alUser, function() {
       applozic.registerPushNotification(function() {}, function(){});
       applozic.launchChat(function() {}, function() {});
   }, function() {});
```

NOTE: Call it after the platform is ready, for example:
```
	platform.ready().then(() => {
  		 var alUser = {
            'userId' : 'debug3',   //Replace it with the userId of the logged in user
            'password' : 'debug3',  //Put password here
            'authenticationTypeId' : 1,
            'applicationId' : 'applozic-sample-app' //replace "applozic-sample-app" with Application Key from Applozic Dashboard
        };

	   applozic.login(alUser, function() {
	        		applozic.launchChat(function() {}, function() {});
	        	}, function() {});
    });
```

#### Launch Chat


##### Main Chat screen

```
applozic.launchChat(function() {console.log("success");}, function () {console.log("error");});
```

##### Launch Chat with a specific User

```
applozic.launchChatWithUserId(userId, function() {console.log("success");}, function () {console.log("error");});
```

##### Launch Chat with specific Group 

```
applozic.launchChatWithGroupId(groupId, function() {console.log("success");}, function () {console.log("error");});
```


#### Contact List

```
applozic.showAllRegisteredUsers(false, function() {}, function() {});
// create a contacts array and pass it to addContacts function. Below is the sample:               
var contacts = [
                    {'userId' : 'adarsh', 'displayName' : 'Adarsh Kumar'}, 
                    {'userId' : 'ranjeet', 'displayName' : 'Ranjeet Priyadarshi'}
                ];
applozic.addContacts(contacts, function() {}, function() {});
```

##### Android
Set the following in platforms/android/assets/applozic-settings.json properties file.
```
"registeredUserContactListCall": false, // set to true for displaying all registered users in the contact list
"startNewButton": true,
```


#### Push Notification Setup

##### Android
   Goto /platforms/android/build.gradle
   Add the following under buildscript -> dependencies
   ```
   classpath 'com.google.gms:google-services:3.0.0'
   ```
   
   Add the following at the bottom of the file:
   ```
   apply plugin: 'com.google.gms.google-services'
   ```
   
   After adding, it will look something like this:
   ```
   buildscript {
       repositories {
           mavenCentral()
           jcenter()
       }
       
       // Switch the Android Gradle plugin version requirement depending on the
       // installed version of Gradle. This dependency is documented at
       // http://tools.android.com/tech-docs/new-build-system/version-compatibility
       // and https://issues.apache.org/jira/browse/CB-8143
       dependencies {
          classpath 'com.android.tools.build:gradle:2.2.1'
          classpath 'com.google.gms:google-services:3.0.0'
       }
   }

   apply plugin: 'com.google.gms.google-services'
   ```
    
   From login success callback, call applozic.registerPushNotification(function() {}, function(){});
   
   For push notifications, you must have a Firebase account: 
   Signup to https://console.firebase.google.com/ and create your application and generate push notification services file.
   
   Download google-services.json from your Firebase Console and paste it to /platforms/android/ folder
   
   Go to Applozic Dashboard, update the FCM/GCM Server Key from Firebase account to your Applozic application.
   "Edit Application -> Push Notification -> Android -> FCM/GCM Server Key"



##### iOS
    
   Open AppDelegate.m file under /platforms/ios/YOUR_PROJECT/Classes/
   Add code as mentioned in the following documentation:
   https://www.applozic.com/docs/ios-chat-sdk.html#step-4-push-notification-setup


#### Group
   ##### Create Group
   ```
     var group = {
            	'groupName': 'hey',
            	'groupMemberList': ['userid1', 'userid2', 'userid3'], // Pass list of user Ids in groupMemberList
            	'imageUrl': 'https://www.applozic.com/favicon.ico',
            	'type' : 1,    //'type' : 1, //(required) 1:private, 2:public, 5:broadcast,7:GroupofTwo
            	'metadata' : {
            		'key1' : 'value1',
            		'key2' : 'value2'
            	}
            };
     applozic.createGroup(group, function() {}, function() {});
  ```
  
  ##### Add Group Member
  ```
    var groupDetails = {
        'groupId': GROUP_ID,
        'clientGroupId': CLIENT_GROUP_ID, //use either groupId or clientGroupId
        'userId': USER_ID_TO_ADD
    }
    applozic.addGroupMember(groupDetails, function() {}, function() {});
  ```
  
  
  ##### Remove Group Member
  ```
    var groupDetails = {
        'groupId': GROUP_ID,
        'clientGroupId': CLIENT_GROUP_ID, //use either groupId or clientGroupId
        'userId': USER_ID_TO_ADD
    }
    applozic.removeGroupMember(groupDetails, function() {}, function() {});
  ```

#### Topic Based Chat

    ```
       var topicDetail = {
                        'title': 'Hyundai Electric i20', // Product title
                        'subtitle': 'electric car',      // Product subTitle or Product Id
                        'link': 'https://www.applozic.com/assets/resources/images/applozic_logo.gif',  // Product image link
                        'key1': 'Mileage: ',  // Small text anything like Qty (Optional)
                        'value1': '18 kmpl',  // Value of key1 ex-10 (number of quantity) Optional
                        'key2': 'Price: ',    // Small text anything like MRP (product price) (Optional)
                        'value2': '$50k'   // Value of key2 ex-$100  (Optional)
                    };
                    var conversation = {
                        'topicId': 'topic-11', //Unique topic id
                        'userId': 'demouser', //SET UserId for which you want to launch chat or conversation,
                       // 'groupId': groupKey,  // Set groupId for which you want to launch chat, use either userId or groupId
                        'topicDetail': JSON.stringify(topicDetail)
                    };
                    
                    applozic.startTopicBasedChat(conversation, function() {}, function() {});
    ```


#### Logout

```
applozic.logout(function() {console.log("success");}, function () {console.log("error");});
```

### Unread count

```
```
#### Total unreadcount

```
   applozic.getUnreadCount(function(response){
     var count = response;
    },
    function(error){alert(error)
   });

```

#### Unread count for user

```
   var userId = 'USER_ID'; //pass UserId with which unread count 
   applozic.getUnreadCountForUser(userId,function(response){
     var count = response;
    },
    function(error){alert(error)
   });

```


#### Unread count for group

```
   var groupId = 'GROUP_ID'; // pass groupId in which unreadcount required

  applozic.getUnreadCountForGroup(groupId,function(response){
       var count = response;
    },
     function(error){
    });

```

Install iOS or Android platform

    cordova platform add ios
    cordova platform add android
    
Run the code

    cordova run 

## More Info

For more information on setting up Cordova see [the documentation](http://cordova.apache.org/docs/en/latest/guide/cli/index.html)

For more info on plugins see the [Plugin Development Guide](http://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/index.html)
