Quando provate la vostra nuova applicazione Android, vorrete testare la sua WebView. Tuttavia, potreste notare un errore che impedisce il rendering di una pagina del browser all’interno dell’applicazione. Questo può avere un impatto negativo sulla User Experience (UX) della vostra app.
Per fortuna, è possibile risolvere facilmente l’errore ERR_UNKNOWN_URL_SCHEME. Sul front-end, potrebbe essere necessario disabilitare le estensioni di Chrome o semplicemente svuotare la cache. In alternativa, gli sviluppatori possono disabilitare gli URL non standard durante lo sviluppo dell’applicazione.
In questo post spiegheremo cos’è l’errore ERR_UNKNOWN_URL_SCHEME e quali sono le sue cause. Poi vi mostreremo come risolverlo sia nel front-end che nel back-end. Cominciamo!
Cos’è l’Errore ERR_UNKNOWN_URL_SCHEME?
Per capire l’errore ERR_UNKNOWN_URL_SCHEME, parliamo prima delle applicazioni native. In parole povere, un’applicazione nativa viene installata su un dispositivo mobile e progettata per un sistema operativo specifico.
Potete trovare le applicazioni native nell’App Store o nel Google Play Store:
Attualmente Android controlla il 72% del mercato dei sistemi operativi mobili. Per questo motivo, potreste voler sviluppare la vostra app nativa per il Google Play Store. Per farlo, dovrete utilizzare Android Studio, l’ambiente di sviluppo integrato (IDE) di Android:
Durante lo sviluppo della vostra applicazione, è importante consentire agli utenti di visualizzare i contenuti del browser web incorporati. Gli utenti che non devono navigare avanti e indietro dal browser all’applicazione avranno una UX più coerente.
Per aggiungere questa funzione alla vostra app, dovrete utilizzare WebView. Questa classe speciale visualizza le pagine web direttamente da un’applicazione nativa. Sebbene il browser non disponga di funzioni complete come la barra di ricerca o i controlli di navigazione, la WebView riuscirà a eseguire il rendering di una pagina web.
Tuttavia, l’applicazione nativa potrebbe anche produrre un errore ERR_UNKNOWN_URL_SCHEME. In questo caso, il sito web richiesto ha uno schema URL che il dispositivo mobile non è in grado di riconoscere.
L’ERR_UNKNOWN_URL_SCHEME è di norma un bug di Chromium. Si tratta di un problema molto diffuso a partire da Chrome 40. Tuttavia, può avere diverse caratteristiche e diverse cause.
Quali sono le Cause dell’Errore ERR_UNKOWN_URL_SCHEME?
Sebbene WebView possa essere utile nelle app native, è in grado di elaborare solo alcuni schemi di URL diversi. Uno schema URL fornisce informazioni su come deve essere interpretato l’URL.
Gli schemi URL standard sono “https://” e “http://”. Ecco alcuni schemi URL che possono causare il problema ERR_UNKNOWN_URL_SCHEME:
- mailto://
- whatsapp://
- file://
- telnet://
- intent://
- market://
- app://
- mail://
- buy://
Se siete sviluppatori di app, dovrete utilizzare una codifica URL specifica per evitare che questi schemi URL causino errori. In caso contrario, gli utenti non potranno utilizzare WebView nella vostra applicazione nativa.
In alternativa, l’errore ERR_UNKNOWN_URL_SCHEME può verificarsi quando un utente cerca di aprire un URL reindirizzato. Potreste visualizzare questo messaggio anche dopo aver utilizzato OAuth con una scheda Chrome personalizzata.
Come Risolvere l’Errore ERR_UNKOWN_URL_SCHEME (8 Metodi)
Per gli sviluppatori, l’errore ERR_UNKNOWN_URL_SCHEME indica che la WebView della vostra applicazione non visualizza correttamente le pagine del browser web. Questo impedisce agli utenti di vederne i contenuti corretti.
Che voi siate degli sviluppatori o degli utenti front-end, ci sono alcuni modi per risolvere il problema. Ecco otto soluzioni!
1. Disattivare le Estensioni di Chrome
Molti errori di Chrome possono essere risolti eliminando le estensioni del browser. Per farlo, andate su Altri strumenti > Estensioni. In alternativa, basta semplicemente cercare “chrome://extensions/”:
In questa pagina vedrete un elenco delle estensioni di Chrome installate. Per prima cosa, disattivate tutte le estensioni utilizzando l’interruttore nell’angolo in basso a destra:
Poi controllate se il problema è stato risolto. In caso affermativo, saprete che c’era un problema con una delle estensioni.
Per capire quale estensione ha causato l’errore ERR_UNKNOWN_URL_SCHEME, riattivatele una per una. Dopo aver attivato un’estensione, verificate se il problema ricompare. In tal caso, rimuovete completamente l’estensione in questione.
2. Cancellare la Cache e i Cookie di Chrome
Quando navigate su Internet, il browser salva i dati dei siti web nella cache. In questo modo, la seconda visita sarà molto più veloce. Tuttavia, questi dati nella cache possono facilmente corrompersi.
Se la prima soluzione non ha risolto l’errore ERR_UNKNOWN_URL_SCHEME, potrebbe essere necessario cancellare la cache del browser. In Google Chrome, andate su Altri strumenti > Cancella dati di navigazione:
Quindi, assicuratevi di selezionare Immagini e file nella cache. Se lo desiderate, potete anche cancellare la cronologia di navigazione, i cookie e altri dati salvati sul sito:
A questo punto, provate a ricaricare la pagina che stavate cercando di raggiungere. Se viene visualizzata senza errori, avete risolto il problema!
3. Disattivare l’Accelerazione Hardware
L’accelerazione hardware avviene quando un browser utilizza l’hardware del dispositivo per aumentare l’efficienza. In Google Chrome, l’unità di elaborazione grafica (GPU) del dispositivo inizierà a elaborare le attività con grafica pesante, come i giochi o la riproduzione di video.
Nella maggior parte dei casi, l’accelerazione hardware consente a Chrome di eseguire operazioni più complesse di quelle che il suo software è in grado di supportare. Tuttavia, questa funzione può anche causare rallentamenti, blocchi e persino crash.
Pertanto, potreste voler disabilitare l’accelerazione hardware. Per prima cosa, aprite la pagina delle Impostazioni di Chrome. Poi, cliccate sulla scheda Sistema:
Infine, utilizzate l’interruttore a levetta per disattivare l’accelerazione hardware. Vi verrà chiesto di rilanciare Chrome con questa nuova impostazione.
4. Disattivare il Firewall
Un’altra causa dell’errore ERR_UNKNOWN_URL_SCHEME è un firewall non correttamente configurato. Per verificare se è questo il caso, disabilitate temporaneamente il firewall sul vostro dispositivo.
Per gli utenti Mac, basta cliccare sull’icona della mela. Quindi, selezionate Impostazioni di sistema:
Nell’elenco delle schede, selezionate Rete. Quindi, cercate l’opzione Firewall e disattivatela:
Se avete un computer Windows, cliccate su Start e aprite Impostazioni. Quindi, andate su Privacy e sicurezza > Sicurezza di Windows > Firewall e protezione di rete:
Ora dovrete selezionare la rete di dominio, la rete privata o la rete pubblica. Una volta fatto questo, cercate l’impostazione Microsoft Defender Firewall e disattivatela:
Verrà visualizzato un popup di sicurezza che vi chiederà di confermare la vostra scelta. Cliccate su OK per salvare la modifica.
5. Creare un Nuovo Profilo Utente di Chrome
Se i metodi precedenti non hanno risolto l’errore ERR_UNKNOWN_URL_SCHEME, potete provare a creare un profilo utente Chrome completamente nuovo. Fatto ciò, verificate se riuscite a visitare la pagina senza problemi.
Fortunatamente, Google Chrome permette di personalizzare facilmente i profili. Nell’angolo in alto a destra, cliccate sull’immagine del vostro profilo. In fondo al pop-up, fate clic su Aggiungi:
In questo modo potrete creare un nuovo profilo. Potrete quindi accedere a un account Chrome esistente oppure selezionare Continua senza account:
Prima di iniziare a navigare, date un nome al profilo. Inoltre, potrete personalizzare la combinazione di colori:
A questo punto avrete un nuovo profilo Chrome indipendente dagli altri account. Utilizzando questo profilo, provate a caricare la pagina web di destinazione. Se il problema persiste, è bene contattare lo sviluppatore dell’app, che risolverà il problema per voi.
6. Aprire l’URL in una Nuova Finestra
Finora abbiamo spiegato come gli utenti possono risolvere l’errore ERR_UNKNOWN_URL_SCHEME in un browser. Se siete sviluppatori, dovrete sapere come risolvere questo problema in modo che la vostra applicazione abbia una WebView priva di errori.
Una soluzione semplice consiste nel modificare il codice dell’URL href. Includendo un attributo target nell’HTML dell’applicazione, specificherete come deve essere aperto il browser.
Ad esempio, è possibile aggiungere il codice HTML target=”_blank”. Questo aprirà la WebView in una nuova finestra. Ecco un esempio:
<a href=”https://www.w3schools.com” target=”_blank”>Visita W3Schools</a>
Anche se questa può essere una soluzione efficace a breve termine, può avere un impatto negativo sulla User Experience (UX) della vostra applicazione. Nello sviluppo web, è buona norma evitare di aprire nuove finestre.
Lo snippet di codice qui sopra rimuove il pulsante Indietro, che potrebbe confondere gli utenti quando vogliono tornare alla pagina precedente.
7. Aggiungere un Nuovo Intent
Come sviluppatori Android, dovrete utilizzare gli intent. In sostanza, un intent descrive l’azione che volete far eseguire all’app. Per risolvere un errore di schema dell’URL, si può considerare di includere un intent per caricare il contenuto in un’applicazione esterna.
Ad esempio, potreste volere che lo schema URL “maps://” apra l’applicazione mappe predefinita dell’utente, oppure che ‘mailto://’ apra l’applicazione di posta.
Per aggiungere un nuovo intent, dovrete utilizzare un’istruzione IF. Questa indicherà al dispositivo di aprire schemi speciali in un’applicazione esterna pertinente. Gli schemi URL standard come ‘https://’ o ‘http://’, invece, si apriranno normalmente.
Ecco come si presenta questo intent in azione:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url == null || url.startsWith("http://") || url.startsWith("https://")) {
return false;
}
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
} catch (Exception e) {
Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e);
return true;
}
}
È inoltre possibile aggiungere un intent personalizzato per specifiche app esterne. Se volete inviare gli utenti alla loro installazione di Whatsapp, ecco come potrebbe cambiare l’override dell’URL:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (url.startsWith("whatsapp://")) {
webview.stopLoading();
try {
Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, webview.getUrl() + " - Shared from webview ");
startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
String MakeShortText = "Whatsapp has not been installed";
Toast.makeText(WebactivityTab1.this, MakeShortText, Toast.LENGTH_SHORT).show();
}
};
};
Questo codice permetterà all’app di aprire Whatsapp sul dispositivo dell’utente. Se non è installato, verrà visualizzato un messaggio toast che informa gli utenti che “Whatsapp non è stato installato”.
8. Disabilitare gli Schemi URL non Standard
Invece di usare gli intent, è possibile disabilitare completamente gli schemi URL non standard. In questo modo non potrete utilizzare altri schemi URL oltre a “http://” e “https://”.
Ecco come implementare questa funzione in HTML:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (url.startsWith("http") || url.startsWith("https")) {
return true;
}else {
webview.stopLoading();
webview.goBack();
Toast.makeText(MainActivity.this, "Error: Unknown link type", Toast.LENGTH_SHORT).show();
}
return false;
}
Se un utente clicca su un link che utilizza uno schema personalizzato, verrà visualizzato un messaggio toast che dice “Errore: Tipo di link sconosciuto”. Poiché la WebView della vostra applicazione non supporterà schemi personalizzati, potrete evitare del tutto l’errore ERR_UNKNOWN_URL_SCHEME.
Riepilogo
Quando le persone utilizzano la vostra app nativa, vogliono che i link esterni si aprano all’interno della stessa applicazione. Se il sito web richiesto non ha uno schema URL noto, il dispositivo mobile dell’utente restituirà un errore ERR_UNKNOWN_URL_SCHEME.
Sul front-end, potrete risolvere questo problema nei browser Chrome disattivando l’accelerazione hardware o creando un profilo utente completamente nuovo. Tuttavia, nella maggior parte dei casi, sarà lo sviluppatore dell’applicazione a dover risolvere questo errore. In qualità di sviluppatori, potrete risolvere l’errore ERR_UNKNOWN_URL_SCHEME aggiungendo un nuovo intent o aprendo l’URL in una nuova finestra.
Durante lo sviluppo dell’applicazione, avrete bisogno di un hosting affidabile e stabile. Il nostro Hosting di Applicazioni dispone di 25 data center e di un supporto di esperti via chat 24 ore su 24, 7 giorni su 7, in modo che possiate concentrarvi esclusivamente sullo sviluppo!