| <h1>Kiosk Apps</h1> |
| |
| |
| |
| <p>Kiosk Apps are Chrome Apps that are designed to always run fullscreen using <a |
| href="https://support.google.com/chromebook/answer/3134673">Single App Kiosk Mode</a> |
| on Chrome OS and do not allow the user to exit |
| the app. They're great for a purpose-built Chrome device, such as a guest |
| registration desk, a library catalog station, or a point-of-sale system in a store.</p> |
| |
| <p>A Kiosk App can be launched manually or set to automatically launch when the |
| device boots up. You can use a Chrome device as a kiosk by turning on Single App Kiosk mode <a |
| href="https://support.google.com/chromebook/answer/3134673">manually for each device</a>, |
| or across multiple devices using the <a |
| href="https://support.google.com/chrome/a/answer/3017014">Chrome management console</a>.</p> |
| |
| <iframe width="560" height="315" src="//www.youtube.com/embed/aGvFbBt-LNA?autohide=1" |
| frameborder="0" allowfullscreen></iframe> |
| |
| |
| <h2 id="Look">How they look</h2> |
| |
| <p>Once the Kiosk App starts, the user experience is dedicated to the tasks defined by the app. The |
| app does not look like the traditional Chrome browser: there is no window frame, no Omnibox |
| (address bar), no tab strip, and no other browser interface elements. So as a developer, every |
| pixel of the screen is yours to use as you wish.</p> |
| |
| |
| <h2 id="Behavior">How they behave</h2> |
| |
| <p>When a Kiosk App is configured to run on Chrome OS using <a href= |
| "https://support.google.com/chromebook/answer/3134673">Single App Kiosk Mode</a>, the user |
| has no control over the app’s lifecycle. The user cannot exit the app or switch to another task. |
| However, as an app developer, you can offer a "logout" or "exit" |
| button within the app to close all its windows, which terminates the session and returns |
| the user to the login screen.</p> |
| |
| <p>Single App Kiosk Mode optimizes bandwidth use and speed by downloading and installing the app so |
| it can launch each time without installation delays. Each time a Kiosk App launches, the system |
| checks for updates in the Chrome Web Store to ensure that the latest app version is installed, |
| unless the app is set to be <a href= |
| "https://developer.chrome.com/apps/manifest/offline_enabled">enabled offline</a>. Thereafter, the |
| system checks for updates every five hours and installs the update if available. If the device is |
| offline, the update is rescheduled to a later time when the app is back online.</p> |
| |
| <p>Any data the app stores using the <a href= |
| "https://developer.chrome.com/apps/fileSystem">FileSystem</a> API persists across executions of the |
| app, allowing you to download and cache any assets your app may need while offline. As a developer, |
| you need to ensure that user data is stored locally while offline, then synced to your data server |
| once online (see <a href="https://developer.chrome.com/apps/offline_apps.html">Offline |
| First</a>).</p> |
| |
| <p>Once the app is installed, it is available to anyone who walks up to the Chrome OS device. There |
| is no need for users to log in before using Single App Kiosk Mode.</p> |
| |
| |
| |
| <h2 id="Develop">How to develop a Kiosk App</h2> |
| |
| <p>If you know how to build a <a href="https://developer.chrome.com/apps/about_apps">Chrome App</a>, |
| then you know how to build a Kiosk App because they use |
| the same <a href="https://developer.chrome.com/apps/app_architecture">app architecture</a>. All you |
| have to do is set <code>"kiosk_enabled"</code> to <code>true</code> in your app’s <a href= |
| "https://developer.chrome.com/apps/manifest">manifest file</a>. Your app can then run in either |
| a regular session or Single App Kiosk Mode. If you want your app |
| to run in Single App Kiosk Mode only, then also set <code>"kiosk_only"</code> to <code>true</code>. |
| This prevents the app from being launched in a regular session. For example:</p> |
| |
| <pre> |
| { |
| "app" : { |
| "background" : { |
| "scripts" : ["background.js"] |
| } |
| }, |
| "manifest_version" : 2, |
| "name" : "My Kiosk App", |
| "version" : "1.0", |
| ... |
| |
| // Set as Kiosk App |
| "kiosk_enabled" : true, |
| "kiosk_only" : true |
| } |
| </pre> |
| |
| <p>To determine whether the app is being run in a regular session or Single App Kiosk Mode, you can |
| inspect the <code>isKioskSession</code> boolean that's included in the <code>launchData</code> |
| object from the <a href= |
| "https://developer.chrome.com/apps/app_runtime#event-onLaunched">app.runtime.onLaunched</a> |
| event.</p> |
| |
| <p>If you want to monetize your app, your app must handle all payment logic. You cannot monetize a |
| Kiosk App through the <a href="https://developer.chrome.com/webstore/money">Chrome web store |
| payment flow</a>.</p> |
| |
| |
| <h3 id="Samples">Sample apps</h3> |
| |
| <ul> |
| <li><a href= |
| "https://github.com/KioskApps/InfoHub" |
| >LiveStream/Interactive display app</a></li> |
| <li><a href= |
| "https://github.com/KioskApps/SalesPoint" |
| >Point of sale app</a></li> |
| <li><a href= |
| "https://github.com/KioskApps/QuickTicket" |
| >Movie theater app</a></li> |
| <li><a href= |
| "https://chrome.google.com/webstore/category/collection/kiosk-apps" |
| >Kiosk apps in the Chrome Web Store</a></li> |
| </ul> |