Iniziare
-
Installa il pacchetto
Terminal window npm i @capgo/capacitor-android-kioskTerminal window pnpm add @capgo/capacitor-android-kioskTerminal window yarn add @capgo/capacitor-android-kioskTerminal window bun add @capgo/capacitor-android-kiosk -
Sincronizza con i progetti nativi
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
Supporto Piattaforme
Section titled “Supporto Piattaforme”Questo plugin è solo per Android. Per la funzionalità di modalità kiosk su iOS, utilizza la funzione integrata del dispositivo Guided Access.
Funzionalità
Section titled “Funzionalità”- Modalità Kiosk: Nascondi l’interfaccia di sistema ed entra in modalità schermo intero immersiva
- Integrazione Launcher: Imposta la tua app come launcher/home app del dispositivo
- Controllo Tasti Hardware: Blocca o consenti specifici pulsanti hardware
- Rilevamento Stato: Verifica se la modalità kiosk è attiva o se l’app è impostata come launcher
- Android 6.0+: Supporta Android API 23 fino ad Android 15 (API 35)
Utilizzo Base
Section titled “Utilizzo Base”Entra ed Esci dalla Modalità Kiosk
Section titled “Entra ed Esci dalla Modalità Kiosk”import { CapacitorAndroidKiosk } from '@capgo/capacitor-android-kiosk';
// Enter kiosk modeawait CapacitorAndroidKiosk.enterKioskMode();
// Exit kiosk modeawait CapacitorAndroidKiosk.exitKioskMode();
// Check if in kiosk modeconst { isInKioskMode } = await CapacitorAndroidKiosk.isInKioskMode();console.log('Kiosk mode active:', isInKioskMode);Funzionalità Launcher
Section titled “Funzionalità Launcher”Per la funzionalità completa della modalità kiosk, devi impostare la tua app come launcher del dispositivo:
// Open home screen settings for user to select your app as launcherawait CapacitorAndroidKiosk.setAsLauncher();
// Check if app is set as launcherconst { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();console.log('App is launcher:', isLauncher);Controllo Tasti Hardware
Section titled “Controllo Tasti Hardware”Controlla quali pulsanti hardware possono funzionare in modalità kiosk:
// Allow only volume keysawait CapacitorAndroidKiosk.setAllowedKeys({ volumeUp: true, volumeDown: true, back: false, home: false, recent: false});
// Block all keys (default)await CapacitorAndroidKiosk.setAllowedKeys({});Esempio Completo
Section titled “Esempio Completo”async function setupKioskMode() { try { // Check if already set as launcher const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();
if (!isLauncher) { // Prompt user to set as launcher await CapacitorAndroidKiosk.setAsLauncher(); alert('Please select this app as your Home app'); return; }
// Configure allowed keys await CapacitorAndroidKiosk.setAllowedKeys({ volumeUp: true, volumeDown: true, back: false, home: false, recent: false, power: false });
// Enter kiosk mode await CapacitorAndroidKiosk.enterKioskMode(); console.log('Kiosk mode activated');
} catch (error) { console.error('Failed to setup kiosk mode:', error); }}Riferimento API
Section titled “Riferimento API”isInKioskMode()
Section titled “isInKioskMode()”Verifica se l’app è attualmente in esecuzione in modalità kiosk.
const { isInKioskMode } = await CapacitorAndroidKiosk.isInKioskMode();Restituisce:
isInKioskMode(boolean): Se la modalità kiosk è attualmente attiva
isSetAsLauncher()
Section titled “isSetAsLauncher()”Verifica se l’app è impostata come launcher del dispositivo (home app).
const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();Restituisce:
isLauncher(boolean): Se l’app è impostata come launcher del dispositivo
enterKioskMode()
Section titled “enterKioskMode()”Entra in modalità kiosk, nascondendo l’interfaccia di sistema e bloccando i pulsanti hardware. L’app deve essere impostata come launcher del dispositivo perché funzioni efficacemente.
await CapacitorAndroidKiosk.enterKioskMode();exitKioskMode()
Section titled “exitKioskMode()”Esce dalla modalità kiosk, ripristinando l’interfaccia di sistema normale e la funzionalità dei pulsanti hardware.
await CapacitorAndroidKiosk.exitKioskMode();setAsLauncher()
Section titled “setAsLauncher()”Apre le impostazioni della schermata home del dispositivo per consentire all’utente di impostare questa app come launcher. Questo è necessario per la funzionalità completa della modalità kiosk.
await CapacitorAndroidKiosk.setAsLauncher();setAllowedKeys(options)
Section titled “setAllowedKeys(options)”Imposta quali tasti hardware possono funzionare in modalità kiosk. Per impostazione predefinita, tutti i tasti hardware sono bloccati in modalità kiosk.
await CapacitorAndroidKiosk.setAllowedKeys({ volumeUp: true, volumeDown: true, back: false, home: false, recent: false, power: false, camera: false, menu: false});Parametri:
volumeUp(boolean, opzionale): Consenti pulsante volume su (predefinito: false)volumeDown(boolean, opzionale): Consenti pulsante volume giù (predefinito: false)back(boolean, opzionale): Consenti pulsante indietro (predefinito: false)home(boolean, opzionale): Consenti pulsante home (predefinito: false)recent(boolean, opzionale): Consenti pulsante app recenti (predefinito: false)power(boolean, opzionale): Consenti pulsante di accensione (predefinito: false)camera(boolean, opzionale): Consenti pulsante fotocamera se presente (predefinito: false)menu(boolean, opzionale): Consenti pulsante menu se presente (predefinito: false)
getPluginVersion()
Section titled “getPluginVersion()”Ottieni la versione del plugin Capacitor nativo.
const { version } = await CapacitorAndroidKiosk.getPluginVersion();console.log('Plugin version:', version);Restituisce:
version(string): Il numero di versione del plugin
Configurazione Android
Section titled “Configurazione Android”1. Configurazione MainActivity
Section titled “1. Configurazione MainActivity”Per abilitare il blocco completo dei tasti hardware, devi sovrascrivere dispatchKeyEvent nella tua MainActivity.java:
import android.view.KeyEvent;import ee.forgr.plugin.android_kiosk.CapacitorAndroidKioskPlugin;
public class MainActivity extends BridgeActivity { @Override public boolean dispatchKeyEvent(KeyEvent event) { // Get the kiosk plugin CapacitorAndroidKioskPlugin kioskPlugin = (CapacitorAndroidKioskPlugin) this.getBridge().getPlugin("CapacitorAndroidKiosk").getInstance();
if (kioskPlugin != null && kioskPlugin.shouldBlockKey(event.getKeyCode())) { return true; // Block the key }
return super.dispatchKeyEvent(event); }
@Override public void onBackPressed() { // Don't call super.onBackPressed() to disable back button // Or call the plugin's handleOnBackPressed }}2. AndroidManifest.xml
Section titled “2. AndroidManifest.xml”Aggiungi l’intent filter del launcher per rendere la tua app selezionabile come launcher:
<activity android:name=".MainActivity" ...>
<!-- Existing intent filter --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
<!-- Add this to make app selectable as launcher --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>Note Importanti
Section titled “Note Importanti”-
Requisito Launcher: Per la funzionalità completa della modalità kiosk (blocco del pulsante home, prevenzione del cambio di app), la tua app deve essere impostata come launcher del dispositivo.
-
Test: Durante i test, puoi uscire dalla modalità kiosk programmaticamente o impostando un’altra app come launcher.
-
Versioni Android: Il plugin utilizza API Android moderne per Android 11+ e ricorre a metodi più vecchi per compatibilità con Android 6.0+.
-
Sicurezza: Questo plugin è progettato per applicazioni kiosk legittime. Assicurati di fornire agli utenti un modo per uscire dalla modalità kiosk.
-
Batteria: La modalità kiosk mantiene lo schermo acceso. Considera di implementare il tuo timeout dello schermo o la gestione della luminosità.
Alternativa iOS
Section titled “Alternativa iOS”Per dispositivi iOS, usa la funzione integrata Guided Access:
- Vai su Impostazioni > Accessibilità > Accesso Guidato
- Attiva Accesso Guidato
- Imposta un codice
- Apri la tua app
- Premi tre volte il pulsante laterale
- Regola le impostazioni e avvia Accesso Guidato
Migliori Pratiche
Section titled “Migliori Pratiche”-
Verifica prima lo stato del launcher
const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();if (!isLauncher) {// Prompt user to set as launcher firstawait CapacitorAndroidKiosk.setAsLauncher();} -
Fornisci un meccanismo di uscita
// Allow specific key combination to exit// Or implement a secret gesture/patternasync function exitKioskWithConfirmation() {const confirmed = confirm('Exit kiosk mode?');if (confirmed) {await CapacitorAndroidKiosk.exitKioskMode();}} -
Gestisci il ciclo di vita dell’app
// Re-enter kiosk mode when app resumeswindow.addEventListener('resume', async () => {const { isInKioskMode } = await CapacitorAndroidKiosk.isInKioskMode();if (!isInKioskMode) {await CapacitorAndroidKiosk.enterKioskMode();}}); -
Gestione degli errori
try {await CapacitorAndroidKiosk.enterKioskMode();} catch (error) {console.error('Failed to enter kiosk mode:', error);// Notify user and provide alternative}