In my current company I am building a server and android app solution which use Clover. But first of all:
What is Clover?
Well, Clover were a startup in 2012 and started making a unified payment system for mobile devices. As you know they are cloud based. And they were acquired in 2012 by First Data which is a huge financial transactions company in the US and around the world.
What does Clover use?
Clover have their own POS devices built on top of Android. So they have a set of Android devices with customer launcher and some engine running inside Andorid. And they sell these stuff to merchants with pre-installed apps like apps for managing Orders, Customers, Employees, Items etc. It sounds nice. They also have a customer store in which they allow developers to make apps for Clover. It’s Android, you know.
What are the market stats?
Who knows. Clover does not share any private data about how many merchants they have or POS terminals sold. We know that there are around 150 000 devices in US and around 4 000 devices in UK. How many of these merchants are active and download apps daily? And how many of them even use the Clover store for apps? This is a thing I don’t know. But as you may see there are around 140 apps and 40 developers… Strange, huh?
Why to join?
Well, you can easily make an app which will be used by several thousands of merchants from US and UK. Apps can vary and you can get the simple idea of how many and what types of apps are there by just simply viewing their store. And you don’t have to pay any taxes to become a Clover developer.
How hard it is to release an app?
It is hard. Probably for some people it will be a lot. You have to submit your app for approval and apply for an approved developer status. This thing can take several weeks just to contact the Clover team, do legislation stuff and release the details of your app. This is a huge pain. Google Play takes 40 minutes to make a new version of the app visible. Clover – 2 weeks. It is kind of strange.
Developing for Clover
This is the hard part. They have an SDK which you can use to communicate with the system. The SDK is badly supported, with tons of legacy code and most of the stuff are just not right. It is buggy and you have things like v1.Customer and v3.Customer classes which are the same but different parts of the SDK use different type of Customer. Really!? And I don’t want to talk about how buggy the engine is. You can get several exceptions and even not setup the emulator to run at all because of a buggy release.
If you go to Clover and ask them for a device they will ask you why you need it. You can use Genymotion. Well, emulator is not a device, you know. It emulates. You can use the feature of the camera for example or just look how your app looks on a real device. And what if you are a company and you have to pay for Genymotion? Who knows. However, it is hard to bring a device from the US to Europe because it contains a battery and no one wants to bring stuffs with batteries from abroad.
It is tragic. There is a DevAsk forum which is probably the most visited place by me after StackOverflow where I ask questions and answer them myself some hours later. I think these guys just don’t have technical support to answer questions and they really don’t know what is happening. Or may be no one cares.
Yes, there is one. And you cannot get multiple orders by ids. For example if you want the details for Order1 and Order2 you have to make 2 queries to get them. You cannot make a single query and get Order1&Order2 at once. And in the same time there is the rule that you should not spam the API. Seriously?
Should you join?
Probably not. This post does not mean to discourage you. I am trying to show you both the positive and negative sides of the project called Clover but I probably failed. If you are really passionate about this – give it a try. For me even the simple app market stats like 140 apps for 4 years discourage me. And you will see that most of the apps in the market are bought or sold by Clover. Do the math and see if Clover is the next big thing. But keep in mind that there will be some technical fight on the way. And this is why I like building apps only where most of the functionality depends on my skill set, not on someone else’s buggy SDK 🙂