Is anyone building business apps around here?

Sounds like the answer to the original question is “yes, people are building business apps.”  Unfortunately, it also sounds like Corona is still lacking in that area.  I would theorize that it’s because the Corona developers consider the game side much more fun and the business app side kind of boring.

For business apps, my questions would be:

Is there a tool for quick form layout?

Can text boxes be data bound to table fields?

Is a large local database (5+ MB) supported well with SQLite (or equivalent)?

Can a large number of images (6000+) be handled a separate files outside of the DB.

I’ve been keeping my eye on this product, but I still don’t get the feeling they are really committed to making business apps easy to develop with Corona.

Hi Russ, yes, indeed many of us are on this boat building business apps despite all challenges. Your theory certainly has merit. My own theory is that Corona Labs leadership sees bigger ROI on game related focus. Funny how each new gaming platform gains instant support (can you recall Ouya & Green Lantern) in Corona SDK?

When we ask for something remotely business app related we immediately get the auto-response… “Submit a feature request and get people to vote it up…

When someone asks about a new gaming technology its often the other way around… “Let me ask the engineers for an ETA”… See latest example : http://forums.coronalabs.com/topic/43169-moga-ace-power-support-on-corona-sdk/

But in the meanwhile you can still do quite a lot with Corona SDK. If you wish for dual platform capabilities then it is a great platform to work with. Specific answers to your questions : 

There are no tools for quick form layout as of now. The widget framework as it is written and [barely] supported by Corona Labs does not have the built in support to make this possible in its current iteration (yes, v2.0 can you believe it?). You have to basically hand code placement/size etc for each platform & screen you wish to support in your app. This especially is a challenge given the large range of device variability on the Android side.

 

The text boxes can’t be data bound directly to db table fields. You have to read data from your db table, typically assign rows to an array and then in a function which gets called each time one of your records get displayed you have to assign your text boxes the value your array holds for that particular field. So if you are wondering whether you can find say Visual Basic type data bound text boxes the answer is a very big no. I’m sorry. 

 

Your last 2 questions are hard for me to answer as I never had to work with this much data on my mobile apps. I’d wager to say you will probably be ok on the db front but may choke on the file front especially on some Android devices but thats just my guess. You can however get some of the sample apps Corona Labs provide and rework them to work with some of your data and see how the sample apps perform with this kind of load. I would also encourage you to test on various OS levels and device types across both IOS and Android. The performance varies across the spectrum.

 

Having said all that, one mistake we often make is to think inside the desktop paradigm which we have been working with for the last 30 years or so. I think as we make the transition to the mobile realm we need to seriously question those paradigms and be prepared to make some significant changes. Not trying to be preachy here as only you can know the background to this but I would ask the following questions :

 

  • Does my app user really need the 5MB+ db and all 6000 images loaded on the device?
  • Are the app users typically connected to the internet? 
  • How often does the data get refreshed?
  • Can I load certain elements (ie pictures) on demand? 

 

I’m sure you see my point. Maybe I’m totally wrong here but in a nutshell, Corona SDK is not the magic answer to all our questions yet but it is still quite a potent tool. There are bugs and shortcomings that we have to patiently wait for resolution on but despite those it is still a good place to be if you are thinking of apps that generally get categorized as “Business Apps”.

 

Keep well. 

Hi Russ, Also to keep in midn, if you have a large number of db records, the bottleneck might end up in the display part, as of now Corona’s tableView (the grid component) does not have a virtual or paginated mode. Atanas

I’ve asked engineering what the limits on the SQLite database are.  I suspect that there probably isn’t a record limit (came up in another pose), but there could be total disc space issues.  This is also likely the answer to your 6000+ image question.  Corona won’t care how many that are there.

As @ksan mentioned, app size is a huge consideration.  Let’s start with iOS.  There are basically four places to have images, read only within your app’s resource bundle, your system’s “Documents” directory, a temporary directory and a “Caches” directory.  If you put 6000 high resolution photos in your App Bundle, people are not likely going to want to download your app because the app size is too large.  6000 32x32 images probably won’t take up too much space.  Apple has a 100mb app size limit for cellular download.  After 100mb, you have to be on WiFi to download the app.   Generally speaking the larger the app, the more resistance people will have to download it.

Next, files stored in what we call system.DocumentsDirectory get saved to iCloud.  Apple restricts what can be put in here to files generated by the app, but not those that can be re-downloaded from the internet.   Most people have fairly small amounts of iCloud space to manage backups and large numbers of files here will be a problem getting your app approved by Apple.   The system.TemporaryDirectory and system.CachesDirectory are both folders that have no guarentee the data will stay over the life of the app.  Temporary files are that temporary.  Cache files can be deleted when space gets tight on the device and you have to make sure you can re-download them if you are missing them.

On Android, people are much more sensitive to app size.  Having a 5MB SQLite database in your resource file (.apk) may turn people off.  Many Android devices have a low amount of system storage for apps, assuming people are going to install their apps, or have their apps store their data on the SD card.  Corona SDK does not support writing data to/from the SD card (though  you probably could using Corona Enterprise).

Google Play supports expansion files, which helps keep your APK file small and then download the larger data set after the app installs.  Other Android stores, like Amazon, Barnes & Nobel and Samsung don’t have those facilities that I’m aware of.

As @ksan said, we don’t have an easy layout tool.  As for the other part textBox to table field, if you are talking about a database table, isn’t it a better practice to scrub your data before it goes into the database? 

Rob

Ok. Just for giggles I did some putzing around. I have an app that loads about 500 records and presents them in various categories. I put the loadfromdb routine in a 100x for loop.

I’m finding that categories that amount to about 6000 to 9000 records take a long time to load but eventually run in my tableView. The tableView performance once loaded seems reasonable. Any categories which amount to more than 10000 records cause my app to crash. Checking it out in the simulator, I can see how app’s memory usage grow as I increase record numbers.

In a nutshell, the app works but loading too many records into memory by way of lua tables which is what then connects me to my tableView is not the best way to go when you have to deal with such large number of records. I’m sure there would be ways around this issue. Its just a matter of design but in the end we need to question the goal carefully.

Does it really make sense to ask the user to scroll through 10000 records on a small handheld screen? For me the answer is almost always no but then everyone’s patience levels will vary.

Kerem, Thanks for taking the time to do this. I suspected loading would be slow into tableViews, as you need to load all records even though the display just needs a pageful of records. Fully agree that an app shouldnt need to display that amount of records for browsing :slight_smile:

You should be able to add a row at the end of the tableView that has navigation for pagination and have it delete the rows and insert the new range in the tableView.  This should happen fast enough to work well.

Rob

Thanks Rob, Yes I can add some form of pagination, however its not that easy or simple as just a navigation control. But my point was that it is not supported by the tableView as the poster was asking about built in features for large datasets. On a side note, I wish there was also a virtual mode to allow for example tableView.recCount = 1000 and an onRowDefinition to supply the row heights etc on-demand, instead of having to iterate inserting rows that can never be displayed anyway. Thanks for the input Atanas

We have made Files-Finder Edition for iPad users and it’s basically a file management/organizer productivity app for iPad users. right now we have getting pretty good reviews about it from the users. they are loving it as it’s having pretty much familiar interface and great convenience. Love to hear feedback from you guys too. Here are some screenshots of it you can consider kindly.

screen480x480.jpeg

screen480x480.jpeg

screen480x480.jpeg

if liked take some time to review it on itunes here :https://itunes.apple.com/us/app/files-finder-edition/id733259837?mt=8
 

Hi all, 

Just thought I’d offer up a lonely voice in an empty room and see if there were any lurkers out there :slight_smile:

I’ve got two business apps out using Corona at the moment, a free and a paid version of our Cake Costing tool; Cost a Cake and Cost A Cake Pro (and they’re actually doing pretty blummin’ well!).

I have a ton of questions relating to issues arising from building ‘serious’ apps and I’m guessing others must too, anyone care to chat?

We build all types of apps includingbusiness apps. You can chat with me if you want.

I started with Corona with a game and now I’m building business apps with it. I’ve encountered many obstacles along the way that have make me doubt if this is right platform for this kind of apps. I enjoy working it with but I tell you it have been a challenge. So far I’ve encountered 4 major obstacles: tables, textfields, maps and text in general.  I’ve managed to partially solved some of the problems with those four but there’s still plenty of work that can be done.

The app below is the first business app I managed to get to the App Store:

xnsqIdg.jpg  3ZwoHx2.jpg

EUJBB75.jpg  E5vl1lY.jpg

Link to the app: https://itunes.apple.com/us/app/mi-mecanico-de-confianza/id700723956?mt=8

This allow the users to find certified mechanics and workshops. As you can see it have tables, textfields and maps. So here are the major problems with each one of this.

Tables

Tables are fine. They’re very flexible and work pretty well. The problem with them is they’re so flexible is unintuitive to work with them. The most basic of tables is a nightmare to program for a newbie. I’ve solved my problems with tables by wrapping it in some code and making an easier to use API.

Textfields

Oh god, textfields! This are very tricky to work with. Since they’re native objects they don’t look or behave equally in all platforms. Also, you can put them in groups and they’re always in top of everything else. I haven’t find a solution to this one yet. What I’m doing right now is to create a simple button that when you click on it shows an overlay scene with a big textfield. As soon as you press enter this overlay disappears and the text in the button is updated. Is kinda ugly but it works. I’m currently testing atanas newEditField and it looks promising.

Maps

Maps are fine too, except they don’t work well in Android. For the app above I had to implement and entirely different solution for Android. The problem was that, for some reason, in Android the map only showed 7 markers. In iOS worked fine but not in Android. I asked in the forums but no one answered. So, what I did was to implement a basic web page with a map and showed it through the app with a WebView.

Text

Dealing with text in Corona is pretty easy when is just a few lines of text. The things get complicated when you have to deal with longer bits of text, specially if they have formatting in them. For example, how do you deal with something like this:

00000025.png

Is a paragraph that have some words in bold. As far as I know there’s no way to apply formatting like that to a text. If there is please let me know. There are some other things like when you want to increase the line height or justify the text. My solution to this is very weird but it works fairly well. I use a WebView, with transparent background, that shows an HTML file with the formatted text. The problem with this approach is that the text doesn’t scale well. I’m working on a solution to this. I’ve build a component that takes text in html and creates a WebView with that text. So you can do something like this:

local text = elements.newWebText("Hello, \<strong\>world!\</strong\>")

Although is not perfect yet I can share the code if any of you need to do something like this.

Since I found this thread I saw new hope. Now I know I’m not the only one building business apps with Corona. I’m willing to help in anything that will make building business apps in Corona easier.

@hectots, mi-mecanico-de-confianza seems like a very nicely put together app. Congratulations on your first release. Sounds like you jumped in to the pool at the deep end and managed to swim out without drowning. Very nice article on challenges encountered. Thanks for sharing some of your strategies.

We have made Files-Finder Edition for iPad users and it’s basically a file management/organizer productivity app for iPad users. right now we have getting pretty good reviews about it from the users. they are loving it as it’s having pretty much familiar interface and great convenience. Love to hear feedback from you guys too. Here are some screenshots of it you can consider kindly.

screen480x480.jpeg

screen480x480.jpeg

screen480x480.jpeg

if liked take some time to review it on itunes here :https://itunes.apple.com/us/app/files-finder-edition/id733259837?mt=8
 

I’m new to Corona, building my first app. It’s a tableview that reads and writes from a sqlite DB. I have an edit screen and multiple tabs for different queries from the DB. I use storyboard and screen transitions. It is about 90% complete, but I’ve only run it in the simulator so far, and I didn’t realize the text field problem when the keyboard pops up. Thanks for all the warnings :slight_smile:

I’m new to Corona, building my first app. It’s a tableview that reads and writes from a sqlite DB. I have an edit screen and multiple tabs for different queries from the DB. I use storyboard and screen transitions. It is about 90% complete, but I’ve only run it in the simulator so far, and I didn’t realize the text field problem when the keyboard pops up. Thanks for all the warnings :slight_smile:

Can you please provide the list of issues which you are facing during building a business app. Please elaborate the questions which you have in your mind.

Can you please provide the list of issues which you are facing during building a business app. Please elaborate the questions which you have in your mind.