Screen Shot 2016-05-12 at 3.57.51 PM

Customizable Web SDK for Chat-Messaging

 It was our customer’s use cases that encouraged us to write this article. We are going to highlight our Web SDK abilities and use cases that you can leverage with Applozic platform.

We introduced our Client API’s and Native SDK’s in Sep’2015, enabling developers to build cross-platform messaging for mobile, web and desktop. Since then, we have seen our platform being used in 100+ businesses but the most amazing part is that each of these implementations are unique in its own way. Each business has their own use cases and UI customizations, some with lengthy work flow and some even more complicated. Our highly simplified API’s and UI toolkit made it all an amazing experience.

Our Web SDK enables a variety of cross-platform messaging use cases:​

Match making and Dating services

On-demand delivery services

Community building and group chat

Online events and Social networking

Cross device messaging for Delivery – Recipient, Customer – Agents

Marketplaces connecting buyers and sellers

Be it Bubble, SideBox or Full view, we have you ready to use UI: https://www.applozic.com/docs/web-chat-plugin.html#customization

fullview

sidebox

We offer you the freedom to build a great messaging experience in any product. Our Web SDK will keep evolving with our extensive roadmap but your feedback and suggestions would always help us reach new highs.

The documentation is available as part of our developer portal, along with example apps: https://www.applozic.com/docs/web-chat-plugin.html#first-level

Sign up for Applozic developer account and get started: https://www.applozic.com/signup.html 

If you have any questions about integration and customization, please connect with us over live chat and we will be happy to assist you.

 


Easy Way to Manage Parallel and Sequential Tasks in Loop For iOS App Development

‘TaskLoop’ is a category of NSArray that is designed to manage asynchronous tasks in a loop. TaskLoop supports sequential task and parallel task. A Task represents an  asynchronous operation.  

Tracking completion of an asynchronous task is not so easy. It is quite difficult when there are multiple asynchronous tasks running. Worst of all, when all tasks are running parallel.

Let’s understand this by an example:

If you want to download images from an array of URLs with following conditions –

  •  Downloading should not block the main thread.
  •  It should track completion of Each download.
  •  It should track completion of ALL downloads.

First Method – A traditional Way

Create one method that will take imageURL as input and a completion block parameter to track completion of each download.

-(void)getImageFromURL:(NSString*)imageURL withCompletion:(void (^)(UIImage *image))completion{

 //download image and call completion block with image

}

Now, we have an array of URLs to call above method from inside ‘for loop’ like…

-(void)startDownloading{

 //arrURLs : array of NSString image URLs

   for (int i=0; i<arrURLs.count; i++) {

    NSString *strImageURL = [arrURLs objectAtIndex:i];

   [self getImageFromURL:strImageURL withCompletion:^(UIImage *image) {

   //completion block

    }];

}

}

In above code, the ‘completion block’ will call upon download of each image. However, it is not giving completion of all tasks. To achieve that we have to compare a number of images downloaded with the total available images.

-(void)startDownloading{

     //arrURLs : array of NSString image URLs

__block NSMutableArray *arrDownloaded = [NSMutableArray new];

   for (int i=0; i<arrURLs.count; i++) {

    NSString *strImageURL = [arrURLs objectAtIndex:i];

   [self getImageFromURL:strImageURL withCompletion:^(UIImage *image) {

        //completion block

        [arrDownloaded addObject:image];

        if (arrDownloaded.count == arrURLs.count) {

            //all image download completed

        }

    }];

}

}

What if images should download in sequence, i.e. one-by-one? We can call download function again with the next URL inside completion block.

After making changes in coding, it will look like this:

-(void)startDownloading{

   //arrURLs : mutable array of NSString image URLs

   NSString *strImageURL = [arrURLs firstObject];

   [self getImageFromURL:strImageURL withCompletion:^(UIImage *image) {

    //completion block

  [arrURLs removeObjectAtIndex:0];

    if (arrURLs.count) {

        //has

        [self startDownloading];

    }else{

        //all completed

    }

}];

}

After implementing this code, we will get the desired result.

Now, let’s use TaskLoop category of NSArray to solve this problem

TaskLoop has two simple category methods for NSArray

1) enumerateTaskParallely that will execute task parallely and give you completion block for all.

-(void)startDownloading{

   //arrURLs : array of NSString image URLs

[arrURLs enumerateTaskParallely:^(id obj, NSUInteger idx, BlockTaskCompletion completion) {

    [self getImageFromURL:obj withCompletion:^(UIImage *image) {

        //this is important to execute next task

        completion(image);

    }];

} blockCompleteAllTask:^{

    //completion for all

}];

}

2) enumerateTaskSequentially that will execute task sequentially and give you completion block for all.

-(void)startDownloading{

   //arrURLs : array of NSString image URLs

NSArray *arrURLs;

[arrURLs enumerateTaskSequentially:^(id obj, NSUInteger idx, BlockTaskCompletion completion) {

    [self getImageFromURL:obj withCompletion:^(UIImage *image) {

        //this is important to execute next task

        completion(image);

    }];

} blockCompleteAllTask:^{

    //completion for all

}];

}

We have used this category in many of our applications like Tuloko and Besana that allows users to manage tasks in loop. Taskloop help to easily manage async tasks.

If you want more information about Taskloop for iOS or want to download this category with an example then click here.    

 

This is a guest post by Sunil Vaishnav.
Author Bio:

Sunil is Sr. iPhone Developer at Space-O Technologies, trusted iPhone app development company in India. Apart from coding, he loves exploring new programming languages and their abilities. Facebook: https://www.facebook.com/sunil.vaishnav.790


Screen Shot 2016-05-13 at 2.50.41 PM

Eezyrent increased their closures 5X by enabling real time chat between Landlords and Tenants

favicon Eezyrent is a simple rent utility that helps you find space for rent, or a tenant / flatmate for your place –  10 times faster, and at less than 1/10th the cost. It completely eliminates the broker from the transaction. Eezyrent searches and finds accurate matches for you for free, and you can then get a 100% valid lease & license agreement registered & delivered to you for as little as Rs. 1000/-, from the comfort of your home or office, without visiting the registration office!

That’s Eezyrent for you! “0% brokerage, 100% ease” –  a broker-free marketplace for only end users – property owners and tenants – find each other, talk, and close the deal quicker, more reliably & more conveniently than ever before. Eezyrent has simplified the house renting for landlords and find the best match for tenants.Sample 01

“We wanted a ‘WhatsApp like’ messaging system integrated into our system. Applozic has been a real boon in that sense. Their product and support is fantastic. Devashish & team are true partners… they know their stuff, are good listeners & very easy to get along with… like one’s own team… would highly recommend without any reservations” – Hemant Kejriwal, Founder and CEO @Eezyrent  favicon

Challenges:

  • Users aren’t too keen to share their contact details with others unless prior to any relevance
  • Messaging wasn’t real time – users didn’t know if the people they message were online.
  • Furthermore, for the users to share images of their apartment, they had to fall back on emails – leading to delays,  fragmentation of the conversation across messages, emails & phone calls.
  • Property owners as a community are generally much older and relatively less tech savvy. Hence, all the friction was leading to delayed response which led to reduced communication… ultimately leading to fewer closures.
  • Consolidated conversation/agreements history.

Solutions:

  • Easy to use Real time chat/messaging for tenant-landlord communication while securing each party privacy.
  • Ability to chat, send audio/video messages in real time with sms/email as fallback provided an end to end communication.
  • All the messages/attachments/conversations stored at one place.

Results:

  • Increased user base multi-folds with seamless communication
  • Both tenants and property owners are happy as they accomplish everything in real time and being at one place.
  • Eezyrent gets smart with data analytics to help people find their next rental house easily.