The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
I agree with JSOP. Write it as a web app and run it on any device.
I was tempted to do an iOS app a few years ago for a new customer who elected to use iPads. I tried Xamarin with mixed results, and ultimately decided it wasn't worth the effort or the cost (you have to buy a developer license) for a single customer.
Instead, I just wrote up a document explaining how to create homescreen shortcuts to the two apps they needed. (which were already azure web apps anyway...on windows, they run in a browser container (to get the workstation name), for iPads, the shortcut contains a unique id for each iPad.) This has worked really well.
Now for a funny story. Back in 2002, our con man salesman promised a few clients that if they bought X today, we could give them a very deep discount (free) on our new web-based POS system when it came out the next year. Well, they bought, and I got started from scratch on our new web-based POS.
There were a few real challenges:
0: unreliability of the internet at the time meant that there had to be an off-line mode
1: responsiveness was a priority...long pauses caused by slow connections were not acceptable
2: integration with other local resources/systems (such as barcode/scanner input, imports/exports, images, etc.)
Based on those challenges, decided that the customers would need to host their own databases and webserver. They could host for their 80+ locations. The first 6 months were spent using classic asp and throwing together enough screens to test basic functionality. While it worked, the responsiveness issue (or lack thereof) was a deal breaker. Remember, this was almost 20 years ago and hardware/networks/browsers were much slower.
With 6 months until training, I separated the application into around a dozen modules which became ActiveX controls which were placed on a common webpage for all 80 something locations.
Not only was it web-based, it was auto-updating, it was available offline, and it connected to local resources. Most of all, it was responsive. Overall, it was a good application and I learned a lot doing it, but it was one of the first to be phased out (not resold) as it was not a market we (I) wanted to be in anyway. I still have it on a disk somewhere.
So, there's that example of a windows app masquerading as a web app but I have also done the reverse...running a web app in a browser control of a windows app. Sometimes, hybrid is the answer.
0 - I have not used any of the following in real world, but hopefully helpful pointers to look at.
1 - what is your language preference/strongest
If wanting to stick with c#/.net side of things, look toward Xamarin. Build one logic core, apply platform specifics for android/ios where needed.
But will need apple machine to build the ios version.
2 - Web App with offline functionality
clearing your browser history or cookies will mess them up good
Is this a real concern or over thinking?
I would expect offline data to be stored in the local storage api and not as cookies. Yes this can be cleared, but I would check what the default settings are for clearing.
If want to give the "feel" of an app, then maybe look at wrapping it in electronjs
Looks like low-code and the code you have to write is VB.NET.
I'm a bit allergic to low-code since my last experience with it (no source control, the code you have to write becomes a lot more difficult to write because you need to know the framework, the drag'n'drop "code" takes ages to click together, the database had no query language...).
I'll put it on my long-list though.
Yes. Xamarin Forms using Visual Studio 2019 on Windows, with a Mac Mini or other Mac on the network that you can connect to from VS2019 and if needed, VNC into. The single Xamarin Forms solution creates iOS, Android, and UWP (for Windows) projects. The UI code is written once (though you can include native UI code if and when necessary, which is rare or non-existent), and shared between the OS-specific projects. The time-to-delivery is better than other development platforms when one considers equally skilled developers in each platform.
I use that setup and it works like a charm. The caveat, which is true in about any development environment, is to use the tool as it was designed to be used. Native mobile apps (stateful) are a wholly different architecture than web apps (stateless). In fact, they are more like WinForms apps than like web apps.
You can build the WebAPI code in the same project, so if there is an Internet connection, the data uploads. If the connection is not there, you can save the data locally, and automatically upload when connected.
I've been using Ionic (ionicframework.com) for several years. It works well if you want to target Apple, Android and web all with one code base. It also supports Progressive Web Apps (offline web applications). I've had clients that did not want to pay for an iOS developer, an Android developer and a web developer but wanted it on all 3 platforms. Obviously, having one code base also makes it easier to maintain.
Best of luck.
- Freedom is the right of all sentient beings. (Optimus Prime, or Michael Bay, but I prefer Otpimus Prime)
Been catching up on my CodeProject daily news and came across your question.
I did some work a couple of years ago on a single-page application written in ember.js and we had a requirement for the application to work in an "offline" mode. Once the user had logged onto the system they could enter offline mode and only offline modules would be available.
We used node.js to host a local rest api that would then be able to access local resources to save the relevant messages/data since we had the same issue with localstorage being cleared and couldn't have our messages disappear. The SPA was then also locally hosted and communicated with the node rest api (we used restify).
It appears as though node.js is available for mobile devices now also so perhaps you could consider something along the lines of a locally hosted web-site that uses the rest api as a store-and-forward mechanism.
The daily Bing image[^], of course
I have an app that puts the image on my desktop's background.
This particular one made me scratch my head.
For a minute there I thought the building had a sticker or a painting of trees on the concrete below it.
The thought even crossed my mind that this was some very poor PaintShop job.
Then I realized there's no concrete at all and what I'm looking at is just the background under a bridge!