Hi everyone
We're building an online quiz application. Exam centres would either download an app to a desktop/notebook computer or start up a browser, and the learner would answer the questions. Easy enough - but to prevent cheating we have a requirement to prevent the learner from leaving the app/browser. So what we're really trying to build is a kiosk application that the exam administrator kicks off at the start of the session.
Has anyone found any good cross-platform approaches to this? Ideally we'd be using a web stack to build the app rather than a native windows/iOS application.
I've heard great things about Flutter (https://flutter.dev/) from my developer friends and it is certainly cross-platform.
I would use Ionic framework for this. Off course it is made for cross-platform development for Android and iOS, but it has a built in solution which is built on top of Electron.
You can use it with any lib/framework you want now (Angular, Vue, React), or even vanilla JS.
https://ionicframework.com/docs/publishing/desktop-app
Thanks! I don't think I understand what role Ionic would play here (assuming native apps are out of scope) - can't we just publish a windows app from Electron directly?
My bad. Sure you can publish it with only electron on windows.
On Mac I'm not sure, because Apple just started to ban all electron apps from its store.
https://9to5mac.com/2019/11/04/electron-app-rejections/
On second though maybe It won't work with ionic either.
sorry
I would create the quiz application as a website, then create an electron app "shell".
The electron "shell" just opens your website in fullscreen (aka "kiosk" mode) and doesn't have anything like the url bar/tabs/menus/devtools that users can click on.
Then to prevent leaving the app, enable something like this:
https://docs.microsoft.com/en-us/windows/configuration/kiosk-single-app
A similar feature exists on mac. There are libraries in the electron ecosystem that can create installers for multiple platforms at the same time.
You can also build a simple "shell" app for iOS/Android that is basically just a "webview" that shows your quiz website. React Native or Expo would work. I haven't used Expo, but for something as simple as that, it's probably easier than making a full React-Native app. I'm not familiar with other, native app technologies.
iPads have some"Single App Mode", not sure about Android. Also you can connect keyboards to tablets if that is a requirement.
Thanks, that's really useful. I was kind of hoping the answer would be "electron" as I wouldn't mind a crack at that. The unknown here then is whether it's 100% possible to package an electron app in such a way that it enforces kiosk mode. I found this just now, which looks relevant although pretty involved and seems to require Windows 10 Enterprise to execute the shell script.
https://www.microsoft.com/developerblog/2018/04/17/packaging-electron-app-managed-distribution-across-devices/
This looks interesting though:
https://medium.com/@andreas.schallwig/building-html5-kiosk-applications-with-vue-js-and-electron-c64ac928b59f
... so maybe that will get us far enough for v1.