Android Question Enterprise Licensing of app

Discussion in 'Android Questions' started by karld, Jun 1, 2019.

  1. karld

    karld Active Member Licensed User

    I find myself with a GOOD problem.

    I was contacted by a large, national company who runs a chain of truck stops in the U.S.
    They like my PumpCodes app I wrote. It looks up fuel dispenser error codes and tells you what they mean. Really a simple app.

    They want to purchase an Enterprise License of my app. Something close to 1500 copies!

    I have never done any kind of license verification in an app.

    Any ideas where I can start?

    They want to be able to load devices in their home office and deploy to their stores.
    Can this be done without screwing myself?
  2. agraham

    agraham Expert Licensed User

    I spent most of my business life running a small computer firm dealing with large blue chip companies and public bodies.So I've been there, although our kit was one/several off and included our own hardware so we never faced exactly this kind of software only situation

    First - even though they probably realise that you are an individual always try to act professionally as a business. Issue formal quotes and professional looking invoices. They need to perceive you as a reliable business-like supplier. You need some sort of terms of business to accompany your quote to supply and to receive an official purchase order with terms of payment from them to ensure you get paid. This is where you play terms and conditions ping-pong. Your with the quote, theirs with the order, yours with the formal acceptance. You probably know someone who works in business admin and already plays this game, or will know someone who does. If you are not familiar with how businesses purchase practice operates a chat with someone who does know how the formal paperwork side of things, which is pretty standard across businesses, works.

    If they are a large company they are probably reasonably trustworthy and will operate a system of good business practice so I doubt that they will try to screw you over - but that is your call as to how far to trust them.

    At its simplest you could just give them the apk and trust them to tell you how many copies they have loaded. At the other extreme you could try to implement a strict licensing system that tracks every installation. I doubt the extreme is worth the effort, you need a system convenient for them and fair to yourself.

    I would set up a meeting to discuss this with them in a professional manner. They are business people. They will understand that you need some assurance that you are properly recompensed for each installation but they in turn will probably want to be able to just take a new device, install and go. Like all business deals you will need trust and compromise (unless you are proposing dealing with Donald Trump in which case I would just walk away!). Remember this is not like selling an application to all and sundry in the world where piracy is a real concern and you might need some form of software protection, this is a business to business deal. I'd still obfuscate the apk though!

    I would suggest that what you need is some sort of inventory control rather than individual software licensing as the app seems of interest only to that customer.
  3. agraham

    agraham Expert Licensed User

    Erel might have a thought on this. In the end his Site Licenses for B4A probably rely on trust and on customers not reusing license keys on multiple computers.
  4. DawningTruth

    DawningTruth Active Member Licensed User

    You could use a simple phone home mechanism to control licenses. This could be tracked via the device id + email address. If the two match then the app runs, if not then the app gives an unlicensed app message.
    f0raster0 likes this.
  5. Sandman

    Sandman Well-Known Member Licensed User

    @agraham has given some really solid advice here, and I just wanted to add a little something to it:

    Do not underestimate how incredibly sexy some organisations find having their own app.

    Meaning: You might want to suggest making an adjusted version just for them, with their logo, color scheme etc. In addition, they might be interested in having some custom functionality available also. This can be as simple as wrapping a webpage from their site, "so your drivers always have a simple way of getting the latest information from you". And add a little extra sprinkle on top: "Also, we can add more functionality to the app, if you find a need." Making a custom app for them also makes them more likely to want to keep an active and healthy relationship with you, to ensure that you can provide fixes and more features. (And please realize that adding a logo and color scheme etc is somewhat expensive for them, even though it might take you less than a day to do.)

    Regarding the licensing, I would most likely just give them an apk, if they find that acceptable (mostly to ensure that problems with Google kicking out the app never happen, which could harm your income). In the terms with them I would put a burden on them to report at the latest January 31st each year how many drivers they have - and you send an invoice for that year, for that number of copies. (If you ask for how many apps they have installed, they will have problems finding the correct number - not very likely they have a working inventory system for what's installed on the drivers' phones. But it is likely that they have told all drivers to install the app - so you can use that number instead.) Somewhat counter-intuitive, the more expensive your app is, the better this trust-based system will work. (Obviously there's a limit to how expensive the app can be for them to be interested.)

    @agraham : Considering your experience dealing with large companies, got any comments on this post?
    f0raster0 likes this.
  6. canalrun

    canalrun Well-Known Member Licensed User

    I tend to agree with agraham's solution. You are dealing with a business – trust is key.

    A really old-school solution we used back in the 1980s. We purchased 10 licenses for a real-time operating system to be used on single board computers. We had 15 single board computers. There were stickers representing the licenses. As we used the RTOS on new SBCs we would peel off the sticker from the old SBC and move it to the new SBC.

    You could really go crazy developing a licensing scheme, but it may very well be more trouble than it's worth. The business has a lot to lose if they cheat and they may buy 1500 copies, but only use 500.

    I would supply 1500 foil stickers representing licenses. Each device that uses the software would need a sticker on the device or maybe on a sheet of paper in the device owners file cabinet. You can move licenses between devices by simply handing over the sticker.

    No sticker, no license.

    f0raster0 and karld like this.
  7. karld

    karld Active Member Licensed User

    Sandman and agraham
    Good points.

    This is not for drivers. More maintenance person oriented. They have almost 500 locations, and want to roll it out. I can talk to them about customization.

    I DO have another company that does need a driver oriented app.
    That is for another day.

    I have been doing much research this weekend. Will have to decide how to proceed in the next few days.

  8. colboy

    colboy Member Licensed User

    You might want to consider offering an unlimited licence, at an additional cost. It all depends on how much future income there could be with additional licences. You could find that they never come back for more licences, as 1500 is enough for them. However having an unlimited licences gives them the security that they can deploy as they want. Something to consider anyway.
    agraham and f0raster0 like this.
  9. DawningTruth

    DawningTruth Active Member Licensed User

    With an an
    With an annual maintenance fee of 20%
    Sandman likes this.
  10. agraham

    agraham Expert Licensed User

    The suggestion adding their branding, at low cost, is a good idea. It does help to ensure that those purchasing, and those who will use, the item perceiving that they are using something that is part of their business. It also might help to stop the app 'creeping' elsewhere.

    I thought a bit about the licence/inventory problem and, depending upon how you perceive them as a customer and would do one of two things

    I could just pass over the apk for side-loading, and if they lack that expertise, charging for your time to train some of their employees how to do it and keep account of the number of times they do it. They would just report, or you would request, every month or so how many devices they have produced. Remember they may well, as good business practice, have their own inventory control for the devices as they are a business asset so you could piggy-back on those procedures.

    Or I might build in a simple activation scheme that uses a master device to produce an activation code for each install and keeps count of the number of activations - it could even send you an SMS or email for each one if you get really paranoid. The activation doesn't have to be bullet proof, as I said above this is a business relationship not a retail one. Every time it starts your program would check for a private file with its activation code and if it doesn't find one displays a device ID to the user to enter it. The installer has a master device that takes that ID and encrypts it and display it to the installer who then enters the code into the newly installed program that saves and decrypts it, and if the ID matches it is then operative. This suffers the usual problem of both master and installed program having a shared encryption key in their code but it doesn't have to be a clear string, it can be built programmatically and so when obfuscated would not be easy to find. But anyway this is for inventory control, not protecting Fort Knox, so it only has to be good enough!
    Sandman likes this.
  11. Sandman

    Sandman Well-Known Member Licensed User


    In addition, there might be a discrepancy between their target installs and actual installs which might impact license fees negatively. Meaning this:

    1. Customer expects 1500 installs (to pick a number)
    2. Not all installs happens, because some end users just aren't installing.
    3. 500 installs actually happen.

    If you do the solution where the app reports to a server with a heartbeat when it's launched, you would find 500 installs. And the bottom line would be that you left money for the diff of 1000 installs on the table.
  12. agraham

    agraham Expert Licensed User

    Fine by me. They use 500, they pay for 500. That's fair even if it's not what you hoped for.
    MarkusR likes this.
  13. karld

    karld Active Member Licensed User

    Good points all.

    They have requested licensing for 1400 installs. as they build new locations they will add 3 or more installs per location.
    They currently have 480 locations.

    I am leaning towards an activation code that is entered upon installation. It will query a server I can setup and keep track of how many times the app is activated.
    Now I need to consider re-installs for lost or damaged devices that get replaced.....
  14. Sandman

    Sandman Well-Known Member Licensed User

    Assuming you're able to make a custom app for them I would suggest this instead, which require no server code at all, just a working web server installation with logging enabled:

    1. On first launch, create a unique id for the device that you store locally.
    2. Each launch, request an url (<device-id>, or something like that)
    3. Make sure the server has an empty page located on

    That's it. Just looking at your server logs, you will very easily be able to gather all requests made for the page applaunch (or whatever you call it, make it something unusual and easy to search for) and see how many different values you get after the question mark. Which gives you a basis to say to the customer "So, we're in February now. During January you had X installs, so here's an invoice for that."

    This is assuming everybody will use the app each month so they show up there. If it's rarer than that I would make the period longer so you get as many unique ids as possible in it.
    karld likes this.
  15. techknight

    techknight Well-Known Member Licensed User

    I have a Challenge Key/Unlock key system that uses a backend PHP script for storing the license info during the activation. So it should be easy to implement.

    You basically setup a master account that contains the number of "seats" so when they activate a device, they put in that account info either onthe device, Or, the master account holder PC can generate the key for you.

    many different ways to do it.

    If you dont want to maintain the overhead of licensing, the easiest thing to do which is along the lines of what others have said, is have your app upon first install generate a unique UUID, or grab the AndroidID, or Advertising ID and use that. Send it to your back end server/database. This keeps track of devices. Once it hits the limit, it wont allow any more installs unless you increase that cap.

    Or, you can allow installs for the overage, but bill the difference. The downside to any of these solutions is you cant easily track the "uninstalls" or device lost/stolen scenarios and thats where the trust system comes into play.

    But first things first, Register yourself as a sole proprietorship. This way you have a CYA scenario.
    karld likes this.
  16. karld

    karld Active Member Licensed User

    Sandman and techknight.

    Both good ideas. Thanks...

    Spending today going over various ideas...

    and BTW.. I already formed an LLC several years ago for my app development. :D
  17. karld

    karld Active Member Licensed User

    Heard back from the company... They declined to do the licensing deal. they will just direct purchase via the app store.

    That means... no discounts, they pay full price.

    My contact at the company told me to expect a bunch of orders as he was instructed to prepare written instructions for all the locations on how to go purchase my app.

    If they want to throw money at me I'll take it!!!!!
    Sandman likes this.
  18. agraham

    agraham Expert Licensed User

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice