Når du afprøver din nye Android-app, vil du gerne teste dens WebView. Du kan dog bemærke en fejl, der forhindrer en browserside i at blive gengivet i appen. Dette kan have en negativ indvirkning på appens brugeroplevelse (UX).
Heldigvis kan du nemt rette fejlen ERR_UNKNOWN_URL_SCHEME. På forsiden skal du muligvis deaktivere Chrome-udvidelser eller blot rydde cachen. Alternativt kan udviklere deaktivere ikke-standardiserede URL’er i appens kodning.
I dette indlæg forklarer vi, hvad fejlen ERR_UNKNOWN_URL_SCHEME er, og hvad der forårsager den. Derefter viser vi dig, hvordan du kan rette den i både front- og backend. Lad os komme i gang!
Hvad er ERR_UNKNOWN_URL_SCHEME-fejlen?
For at forstå fejlen ERR_UNKNOWN_URL_SCHEME skal vi først diskutere native apps. Kort sagt er en native applikation installeret på en mobilenhed og designet til et bestemt operativsystem.
Du kan finde native apps i App Store eller Google Play Store:
I øjeblikket kontrollerer Android 72% af markedet for mobile styresystemer. Derfor bør du måske udvikle din native app til Google Play Store. For at gøre dette skal du bruge Android Studio, som er Androids integrerede udviklingsmiljø (IDE):
Når du udvikler din app, er det vigtigt at give brugerne mulighed for at se indlejret indhold i webbrowseren. Brugere, der ikke behøver at navigere frem og tilbage fra en browser til din app, vil få en mere ensartet UX.
Hvis du vil tilføje denne funktion til din app, skal du bruge WebView. Denne særlige klasse viser websider direkte fra en native app. Selv om browseren ikke vil have omfattende funktioner som en søgelinje eller navigationskontrolelementer, vil WebView gengive en webside med succes.
Din native app kan dog også producere en ERR_UNKNOWN_URL_SCHEME-fejl. I dette tilfælde har det anmodede websted et URL-scheme, som mobilenheden ikke kan genkende.
ERR_UNKNOWN_URL_SCHEME er almindeligvis en Chromium-fejl. Det har været et fremtrædende problem siden Chrome 40. Det kan dog have et par forskellige årsager.
Hvad er årsagen til fejlen ERR_UNKOWN_URL_SCHEME?
Selv om WebView kan være nyttigt i native apps, er det kun udstyret til at behandle nogle få forskellige URL-schemes. Et URL-scheme giver oplysninger om, hvordan URL ‘en skal fortolkes.
Standard-URL-skemaerne er “https://” og “http://”. Her er nogle URL-skemaer, der kan forårsage ERR_UNKNOWN_URL_SCHEME:
- mailto://
- whatsapp://
- file://
- telnet://
- intent://
- market://
- app://
- mail://
- buy://
Hvis du er appudvikler, skal du bruge specifik URL-kodning for at forhindre, at disse URL-ordninger forårsager fejl. Ellers vil brugerne ikke kunne bruge WebView i din native app.
Alternativt kan fejlen ERR_UNKNOWN_URL_SCHEME opstå, når en bruger forsøger at åbne en omdirigeret URL. Du kan også se denne meddelelse efter brug af OAuth med et brugerdefineret Chrome-kort.
Sådan retter du fejlen ERR_UNKOWN_URL_SCHEME (8 metoder)
For udviklere betyder fejlen ERR_UNKNOWN_URL_SCHEME, at din app’s WebView ikke effektivt viser webbrowsersider. Dette forhindrer brugerne i at se det rigtige indhold.
Uanset om du er udvikler eller front-end-bruger, er der et par måder at fejlfinde problemet på. Her er otte løsninger!
1. Deaktiver Chrome-udvidelser
Mange Chrome-fejl kan løses ved at fejlfinding af dine browserudvidelser. For at gøre dette skal du gå til Flere værktøjer > Udvidelser. Alternativt kan du blot søge efter “chrome://extensions/”:
På denne side får du vist en liste over dine installerede Chrome-udvidelser. Deaktiver først alle dem ved hjælp af kontakten i nederste højre hjørne:
Kontroller derefter, om problemet er løst. Hvis det var, ved du, at der var et problem med en af udvidelserne.
Hvis du vil finde ud af, hvilken udvidelse der var årsag til fejlen ERR_UNKNOWN_URL_SCHEME, skal du genaktivere dem en efter en. Når du har aktiveret en udvidelse, skal du se, om problemet dukker op igen. Når det gør det, skal du fjerne den pågældende udvidelse helt.
2. Ryd Chrome Cache og cookies
Når du surfer på internettet, gemmer din browser data fra websteder i en cache. Dette vil sikre, at dit andet besøg behandles meget hurtigere. Disse cachedata kan dog let blive ødelagt.
Hvis den første løsning ikke løste fejlen ERR_UNKNOWN_URL_SCHEME, skal du muligvis rydde din browsers cache. I Google Chrome skal du gå til Flere værktøjer > Ryd browsingdata:
Sørg derefter for at vælge Cachelagrede billeder og filer. Hvis du vil, kan du også rydde din browserhistorik, cookies og andre gemte webstedsdata, hvis du vil:
Prøv herefter at genindlæse den side, du forsøgte at nå. Hvis den vises uden en fejl, har du løst problemet!
3. Slå hardwareacceleration fra
Hardwareacceleration sker, når en browser bruger din enheds hardware til at øge effektiviteten. I Google Chrome begynder din enheds grafiske procesenhed (GPU) at behandle opgaver med tung grafik, f.eks. spil eller afspilning af videoer.
Det meste af tiden gør hardwareacceleration det muligt for Chrome at udføre mere komplekse opgaver, end softwaren kan understøtte. Denne funktion kan dog også forårsage forsinkelse, frysning og endda nedbrud.
Derfor bør du måske deaktivere hardwareacceleration. Først skal du åbne siden Indstillinger i Chrome. Klik derefter på fanen System:
Til sidst skal du bruge skiftekontakten til at slå hardwareacceleration fra. Du vil blive bedt om at genstarte Chrome med denne nye indstilling.
4. Deaktiver din firewall
En anden årsag til fejlen ERR_UNKNOWN_URL_SCHEME er en forkert konfigureret firewall. For at se, om dette er tilfældet, kan du midlertidigt deaktivere firewallen på din enhed.
For Mac-brugere skal du klikke på æbleikonet. Vælg derefter Systemindstillinger:
På listen over faner skal du vælge Netværk. Find derefter indstillingen Firewall, og slå den fra:
Hvis du har en Windows-computer, skal du klikke på Start og åbne Indstillinger. Naviger derefter til Privatliv og sikkerhed > Windows-sikkerhed > Firewall og netværksbeskyttelse:
Nu skal du vælge enten domænenetværk, privat netværk eller offentligt netværk. Når du har gjort dette, skal du finde indstillingen Microsoft Defender Firewall og slå den fra:
Du vil se en sikkerheds-popup, der beder dig om at bekræfte dit valg. Klik på OK for at gemme ændringen.
5. Opret en ny Chrome-brugerprofil
Hvis de foregående metoder ikke løste fejlen ERR_UNKNOWN_URL_SCHEME, kan du prøve at oprette en helt ny Chrome-brugerprofil. Se derefter, om du kan besøge siden uden problemer.
Heldigvis gør Google Chrome det nemt at tilpasse dine profiler. Klik på dit profilbillede i øverste højre hjørne. Nederst i pop-up-vinduet skal du trykke på Tilføj:
Dette giver dig mulighed for at oprette en ny profil. Du kan enten logge ind på en eksisterende Chrome-konto eller trykke på Fortsæt uden konto:
Før du begynder at surfe, skal du give profilen et navn. Derudover kan du tilpasse farveskemaet:
Herefter har du en ny Chrome-profil, der er uafhængig af dine andre konti. Mens du bruger denne profil, skal du prøve at indlæse målwebsiden. Hvis problemet fortsætter, er det en god idé at kontakte app-udvikleren, som vil løse problemet for dig.
6. Åbn webadressen i et nyt vindue
Indtil videre har vi forklaret, hvordan brugerne potentielt kan løse fejlen ERR_UNKNOWN_URL_SCHEME i en browser. Hvis du er udvikler, skal du vide, hvordan du løser dette problem, så din app får et fejlfrit WebView.
En nem løsning indebærer redigering af din URL href-kode. Ved at inkludere en target-attribut i din app’s HTML-tekst angiver du, hvordan browseren skal åbnes.
Du kan f.eks. tilføje HTML-koden target=”_blank”. Dette vil åbne WebView i et nyt vindue. Her er et eksempel:
<a href=”https://www.w3schools.com” target=”_blank”>Besøg W3Schools</a>
Selv om dette kan være en effektiv løsning på kort sigt, kan det have en negativ indvirkning på din app’s brugeroplevelse (UX). I webudvikling er det en god idé at undgå at åbne nye vinduer.
Kodestumpen ovenfor fjerner knappen Tilbage, hvilket kan forvirre brugerne, når de ønsker at vende tilbage til den forrige side.
7. Tilføj en ny hensigt
Som Android-udvikler skal du bruge intents. En hensigt beskriver grundlæggende set den handling, du ønsker, at appen skal udføre. Hvis du skal rette en fejl i et URL-scheme, kan du overveje at inkludere en intention om, at indholdet skal indlæses i en ekstern app.
Du kan f.eks. ønske, at URL-skemaet “maps://” skal åbne en brugers standardkortprogram. Alternativt kan “mailto://” åbne mail-appen.
For at tilføje en ny hensigt skal du bruge en IF-erklæring. Dette fortæller enheden, at den skal åbne særlige skemaer i en relevant ekstern app. Standard-URL-schemes som “https://” eller “http://” åbnes dog normalt.
Sådan ser denne hensigt ud i praksis:
@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;
}
}
Du kan dog tilføje en brugerdefineret hensigt til specifikke eksterne apps. Hvis du vil sende brugerne til deres installerede Whatsapp, kan URL-override ændres på følgende måde:
@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();
}
};
};
Denne kode gør det muligt for din app at åbne Whatsapp på en brugers enhed. Hvis den ikke er installeret, vil der være en toastmeddelelse, der fortæller brugerne, at “Whatsapp ikke er blevet installeret”.
8. Deaktiver ikke-standardiserede URL-skemaer
I stedet for at bruge intentioner kan du også helt deaktivere ikke-standardiserede URL-skemaer. Dette forhindrer dig i at bruge andre URL-skemaer end “http://” og “https://”.
Her kan du se, hvordan du implementerer dette i 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;
}
Hvis en bruger klikker på et link, der bruger et brugerdefineret scheme, vil der blive vist en toastmeddelelse med teksten “Error: Unknown link type”. Da din app’s WebView ikke vil understøtte brugerdefinerede schemes, kan du helt undgå fejlen ERR_UNKNOWN_URL_SCHEME.
Oversigt
Når folk bruger din native app, ønsker de, at eksterne links skal åbnes inden for samme program. Hvis det ønskede websted ikke har et kendt URL-scheme, returnerer brugerens mobilenhed en ERR_UNKNOWN_URL_SCHEME-fejl.
I frontenden kan du løse dette problem i Chrome-browsere ved at slå hardwareacceleration fra eller oprette en helt ny brugerprofil. I de fleste tilfælde skal appens udvikler dog løse denne fejl. Som udvikler kan du løse fejlen ERR_UNKNOWN_URL_SCHEME ved at tilføje en ny hensigt eller åbne URL-adressen i et nyt vindue.
Når du udvikler din app, har du brug for pålidelig og stabil hosting. Vores applikationshosting har 25 datacentre og 24/7 ekspertchatsupport, så du kan fokusere udelukkende på udvikling!