blob: 38053b0f3f4a4e70539b6d0feb9793f4df4e6cf4 [file] [log] [blame]
<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>