Here’s What’s New from March 2019 | Applozic Product Releases

At Applozic, 2019 started with a focus on improving our product’s usability to give you a smoother experience. You can find all the updates that we did so far in lines to that here.

During our March sprints, our focus was to provide updates which makes it comfortable for both developers and end users.  Here is the list of updates you must check out.

What’s New on iOS

  • Latest Version of Swift Is Here
    Yes, you read it right we now support the latest Swift Version 4.2 so that you can stay updated. This also allows them to develop products on the latest version which is stable, making the final product reliable and efficient.
  • Rich Messaging Just Got Better
    Our effort to improve the experience of users continues. Applozic now supports rich messages: lists, buttons, cards, and carousels. This is so that you can drive the user to take actions directly from the chat screen.  Interesting and easy right!Not just this, you can also have multiple CTAs for a single product. Users will love to take actions as per their choice and you can keep assisting them as when required. Product managers looking to provide guided shopping are loving it!
  • Know When Your Users Were Active
    It makes it easy for co-users to communicate if they know users last activity. With our latest feature, one can easily know the last seen status or if the user is online at that point. You can also enable or disable this based on the product’s need.
    Also, to help users know about their activity we now have a loading indicator which goes off in case you have connectivity issues. It is right at the top where details of the user’ s conversation are fetched.
  • Message Bubbles To Support Your Brand Identity
    We know you love to be pixel perfect, so here we are with another option to exactly let you do that. Create a seamless experience for users by changing the radius of the message bubble using a simple configuration setting as per your branding needs.
  • Share Your Message With Images
    You can now let your users add captions when they are uploading images in the chat. Allow users to share their thoughts right away. You can also customize it as per your need. This is an update for our newer versions as some of our older versions already support this feature.
  • Change the Look and Feel of Your Messages
    Start exploring different colors for your sent and received messages to connect with your branding identity. Yes, users now can easily distinct messages received and sent if you use a distinct color and font for the same.

    Other Features & Enhancements:
  • 🔓 You can now add a setting to enable/disable ‘unblock’ option right from your admin panel. So don’t worry if someone blocked a user, it can always be reversed and you can make this option available to users as well if you find it suitable.
  • 📝 Syncing contacts for the first time was often an issue as a termination made the whole effort go to waste. But not anymore, we have fixed this issue and have also allowed users to have auto sync for a particular segment as well. Now sit back and relax!

All New Dashboard

While all that was happening, our Dashboard went through a makeover. The new dashboard is intuitive and has specific sections for all the functions. You can get a better view of all your application data in the improved analytics tab. We have seen a huge interest in the direct codeless bot integration with Dialogflow, which you can find in the Bot Integration tab.

Let us know what you think about the new Dashboard and if you think it can be improved upon.

Our top resource of ideas and fixes is your honest feedback. Please continue sending all your great suggestions to support@applozic.com.


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