Hyperlänkar Utanför Webben

0
21

Hyperlänkar är den äldsta och mest populära inslag på webben. Ordet hypertext (som är ht i http/s) : sms: a med hyperlänkar. Möjligheten att länka till andra människors hypertext gjort webben, web — anslutna sidor. Denna grundläggande funktion har gjort webben till en mycket kraftfull plattform och det är uppenbart att en värld av appar behov av denna funktion. Alla moderna plattformar för att stödja ett sätt för program att registrera en URI (eget protokoll) och har även universal länkar (hantering av länkar i en app).

Låt oss se varför vi skulle vilja dra fördel av denna funktion och hur man gör det.

Varför har app-länkar på alla?

Att skapa Uri: er som program kan öppna erbjuder en uppsättning unika fördelar. En URL omfattar hela staten av webbsidan (det som används för att före tillkomsten av en Enda Sida Tillämpningar (Spa) tungt med JavaScript och även i dem, är det bästa praxis för att upprätthålla denna funktion) eller en webbapplikation och det är lämpligt att ha routing i applikationer så att URL: navigering är aldrig brytas. Webbadresser har gjort webbläsare för att ha en konsekvent fram och tillbaka knappar och ladda om och bokmärka sidor. Och saker som Google sök beror på webbsidan adresser och webbapplikationer för att navigera användare till rätt plats. Tillåter program att öppna Url-adresser är ett sätt att länka innehåll och funktionalitet i ditt program från andra program, webbplatser och även internt inom programmet, som hjälp/handledning sidor.

Trivia! Stationära tillämpningar har haft hyperlänkar även innan world wide web som Hypercard på Mac 1987 och Windows Hjälp 1990. Den revolutionära sak om hyperlänkar i nätet är att du kan länka till innehåll som har skapats och som ägs av andra. Detta koncept cross app länka inte var populär i traditionella plattformar förrän ökningen av smartphones.

Appen länkar via kommandoraden

Det finns redan ett skal för command line interface och det stöd som passerar argument, styra resultaten från en applikation till en annan, och till och med skript. Fortfarande behovet av att ha stöd för hyperlänkar är önskvärd av olika skäl:

  • Säkerhet: kommandoraden skriften är för komplicerat för att få rätt. Det är mycket riskabelt att förvänta sig att användare av tekniken (som inte är utvecklare) för att förstå hur att rengöra en kommandorad skript och kontrollera att skriptet inte av misstag kalla något, som rm -rf ~/Documents. Kommandoraden är inte sand-box och även om det ger en effekt, det lägger ansvaret på användarna och är benägna att exploatera.
  • Webbläsare-stöd: webbläsaren inte kan ge gränssnittet för kommandoraden. Den är byggd för att köras betrodd tredje part kod i en sandlåda och som inte kan brytas. Och, om vi inte respekterar reglerna för web-teknik, app skulle silo sig ut på Internet. Det är alltför mycket att förlora.
  • Mobil: I världen av mobil, en touch-tangentbordet är inte lika bra och intuitivt som den fysiska som används på skrivbordet. Därför, även om kommandoraden var närvarande, skulle det vara mycket svårt att använda. All makt av omdirigering och kedja är inte så effektiv som den är över ett tangentbord-baserade kommandoraden. En enklare lösning som URL är mer önskvärt i detta sammanhang.
  • Tillstånd: Teoretiskt, command line interface, kan vara ett sätt att få program tillgängliga i någon stat. Men, praktiskt taget, det var byggd för en separat syfte: för att starta programmet för att utföra en uppgift och sedan tillbaka med en kod. Dessutom var det de prioriteras av grafiska gränssnitt i Windows och Mac. Många program (till exempel Microsoft Word och Adobe Photoshop) aldrig hade fullfjädrad command line support. De är inte ens förekommer i miljön VÄG och behöver den fullständiga sökvägen till lanseras. Uri: er ger ett nytt sätt att se på anslutning av information och funktionalitet mellan program. De är ett säkert och modernt sätt av inter-app kommunikation där användaren inte behöver tänka.

Länka Terminologi

Djupt Länk

Deep link är konceptet där en specifik sida/funktion inom den webbplats/applikation kan kopplas till. Till exempel, https://css-tricks.com/link/to/this/page är en djup länk till den här sidan inom den bredare https://css-tricks.com länk. Till skillnad från ytlig länkar som öppnar program, djupa länkar öppnar programmet i en viss stat, med godkända uppgifter, redo att konsumeras. Anpassade URI (som beskrivs nedan) var de första sätten att uppnå djup länkning i appen och “djup länkning” i många sammanhang är nu synonymt med anpassade URI, men det kan också innebära att Universal länkar.

Anpassade URI

Webben har alltid haft vissa egna Uri: er som är kopplade till förvalda program, som mailto:username@host.com och tfn:1234567890 för e-post och telefon, respektive. Det var ett självklart val för att utöka denna och alla stora plattformar som tillhandahåller ett sätt för en app för att registrera ett URI — protokollet- som css-tricks://<detaljer länk> — som kan öppna ett djupt kopplad native applikation. Det ska kapsla in hela staten och alla routing fördelar med att öppna appen om den är tillgänglig på systemet. Dessa ger ett bra gränssnitt för inter-app meddelande när programmet redan är installerat och önskan är att öppna användarens föredragna programmet (som webbläsare eller e-postklient) som implementerar önskat protokoll.

Anpassade Uri: er är bra för den klass av tillämpningar där man vill ha ett val att välja en app för att utföra ett visst val, men de är inte bra för uppgiften att länka webbplatsen till den ursprungliga ansökan på grund av följande skäl:

  • Montering: till Skillnad från webben native appar behöver för installation och, om de inte är installerade, har du två alternativ: skicka användaren till app store (som också erbjuder en anpassad URI) eller korrekt falla tillbaka. Båda dessa uppgifter kräver ytterligare kod som URI inte kapsla in. App store URI skulle vara en annan URI som vi behöver för att lagra. Dessutom har vi för att upptäcka om programmet är installerat, vilket kräver att navigera till URI och hantering av fel i navigering liknar en 404 eftersom protokollet inte är registrerad. Detta är inte så enkelt som en fästpunkt (<a href=”{URL}”></a>), och därför är en vanlig källa till utvecklare klagomål.
  • Avsaknaden av ett centralt register: Även om allt är gjort helt rätt, kan användare fortfarande att kastas in i ett program som de inte borde ha varit kopplad till. Till skillnad från DNS-systemet (som garanterar unika domännamn), plattformar, inte har en central lagringsplats. Så, flera appar kan registrera csstricks som en egen URI. Nu, någon annan kan också registrera samma URI som en app och om det andra programmet är installerat på systemet i stället för den önskade, att det skulle kunna lansera istället. Friheten av en egen URI för app-utbud som fungerar mot de fall där vi alltid vill öppna en specifik tillämpning.
  • Tredje Part Länkar: att Ge en egen URI till tredje part på grund av de frågor som vi har beskrivit ovan är besvärligt och att kontrollera dem är smärtsamt. Det är också ett nytt protokoll. Varje webbplats har länkar till innehåll på webben och uppdatera hela Internet är inte möjligt. Det kanske inte ens är önskvärt för SEO-syfte.

Därför, om vi vill ge användaren en upplevelse där appen är det bästa sättet att visa innehåll, anpassade Uri är inte den perfekta lösningen. Detta kan mildras med smart app banners till viss del, där bannern visas när webbläsaren blir den anpassade URI-och app store-länken för att identifiera den applikation. Men detta kommer inte att vara smidig.

Trivia! URI och Webbadresser är något annorlunda av definitionen, även om de används omväxlande. URI står för Uniform Resource Identifier vilket innebär att det kapslar in allt som krävs för att få en resurs. URL (Uniform Resource Locator) är en speciell typ av URI som identifierar en resurs på webben. Så, tekniskt, en webbadress är en URL-adress men något som csstricks:// skulle bara vara en URI.

Dessa är alla möjliga att använda de fall där en anpassad URI kan göra känsla:

  • Du behöver ange en URI som många utomstående kund apps kan registrera sig. Säg att du har en git:// i din app och användarens favorit git-klienten kunde registrera att URI och klona repo när de klickar på länken.
  • Du har inte en fullfjädrad webbplats.
  • Du behöver en URI som är lätt att komma ihåg för användarna.
  • Du är villig att hantera alla fall kanten om navigering.

Du kan använda anpassade Uri: er i parallell till Universal link ” kommer vi att täcka kommande och de kan dra nytta av att exponera den anpassade WEBBADRESSEN för inter-app kommunikation samtidigt som den Allmänna länk för särskilda fall av webb-till-app navigering. Android officiellt samtal anpassade Uri: er djupa länkar.

Kontroll av flöden för Anpassade URI, Universal Link ” och Omedelbar Apps

Universal link”, App Länk eller App URI

Lösningen till problemet för webb-till-app omdirigering kan lösas med Universal link ” (som det heter på Mac och iOS), App-Länk (som det kallas i Android) eller App-URI (som det kallas i Windows UWP), vilket är olika namn för samma begrepp. Detta sammanfattar den logik som varje webbplats måste skriva för att identifiera installerade program, starta rätt sidor och hantera navigering brister i fall av anpassade Webbadresser. Det är mycket liknande till smart app banner i den meningen att du behöver för att ge en app store-länk till programmet på din webbplats för kontroll men det tar bort alla redundans. Eftersom den befintliga http(s) URL redan innehåller hela staten, registrera anpassade URI är överflödig. Den ursprungliga URL: en kan själv navigera till app med den webbplats som tillhandahåller en återgång uppleva om programmet inte är installerat.

När du registrerar din app med en universal link”, när appen är installerad OS går till Internet för att räkna ut uppsättning länkar som appen har stöd för. När någon av dessa länkar får klickade, native app-blir lanserades i stället för webbläsaren. Full att ta itu stöd finns nu i programmet där en mer anpassad upplevelse kan fås att falla tillbaka till webbläsaren om programmet inte är installerat. Den viktiga skillnaden med universal länkar är att de inte påverkar regelbunden surfning och därför OS leverantörer förvara sedan under åtsittande lock och knapp.

Några bra case för Universella förbindelser är:

  • Du har en fullfjädrad webbplats för en återgång.
  • Önskat flöde för användare som är från hemsidan till appen.
  • Du har redan byggt upp en hel del karma genom att ha innehåll från din webbplats som är kopplad runt på nätet.

Instant Länk eller Uppskjuten Djupt Länk

Uppskjuten djupa länkar ge det som saknades i den djupa länkar om användaren går med på att installera appen när länken öppnas. Användaren kan överlämnas till app store och app store tar hand om att upprätthålla sammanhang när programmet är slut lanserades efter installationen. Detta ger kontinuitet i de fall där en app är installerad. För närvarande är denna metod stöds endast av Android (Google Play Omedelbar) och det är det alternativ där du vill att kräva att användare att flytta från app för att få önskad funktionalitet. Hyperlänken system på webben är smidig och klicka på en länk som tar dig till destinationen nästan direkt (även om en hel del saker att hända bakom kulisserna). Uppskjuten djupa länkar ge samma funktionalitet för appar där du klickar på en länk kan ladda ner appen och starta det med rätt sida och gör alla uppgifter på app-installation så smidig som möjlig.

Du kan överväga att använda instant länkar om:

  • Du behöver användarna att använda appen och inte hemsidan, även om de kommer från webbläsaren (utom i sällsynta fall när de har ont om diskutrymme eller har aktiverat den här funktionen för att spara bandbredd).
  • Dina viktigaste sidor är alltid up-to-date i din ansökan.
  • OK, alltid använda dem. Med extra SEO-fördelar som Google kastar in för omedelbar appar, det finns ingen anledning att inte aktivera “instant” apps för en app som har Universell länkar.

Nu har vi en sammanfattning av vad varje begrepp innebär, låt oss se hur vi kan gå tillväga för att skapa dessa på vissa plattformar.

Att sätta upp ansökan hyperlänkar

MacOS och iOS
Anpassade URI

Registrera en egen URI i MacOS och iOS är extremt lätt. I Xcode, gå till Info.plist-fil för projektet och välj alternativet URL Typer. Skapa ett objekt av typen URL-Scheman inne i filen där du kan lägga till alla URL-scheman som du vill stödja.

Observera: standard-URL-Identifierare som fylls i av Xcode inom URL-Typer är valfritt.

URL-Schema i Xcode

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>css-tricks</string>
</array>
</dict>
</array>

För MacOS, du kommer att ta emot samtal till AppDelegate där du kan åsidosätta funktionen:

func ansökan(_ ansökan: NSApplication, öppna url-adresser: [URL]) {
// För att välja den första URL i listan över URL för att öppna
låt url = url[0];
// Logga in hela URL-adressen
NSLog(“%@”, url.absoluteString)
}
-(void)program:(NSApplication *)ansökan openURLs:(NSArray<NSURL *> *)webbadresser {
NSLog(@”%@”, url: er[0].absoluteString);
}

I iOS, den funktionen för att få samma samtal i AppDelegate är:

func ansökan(_ app: UIApplication, öppna url: URL alternativ: [UIApplicationOpenURLOptionsKey : Alla] = [:]) -> Bool {
NSLog(“%@”, url.absoluteString)
return true
}
-(BOOL)program:(UIApplication *)app openURL:(NSURL *)url: (NSDictionary<UIApplicationOpenURLOptionsKey,id -> *) alternativ {
NSLog(@”%@”, url.absoluteString);
return true;
}

Den URL-typ i alla dessa fall innehåller den vanliga URL bitar som vägen, den fråga och de sökparametrar.

Allmänna Länkar

Allmänna länkar stöds inte i MacOS. För att få universal länkar på iOS, du behöver vara registrerad hos Apple Developer Program eller en Apple Developer Enterprise Program som medlem. Allmänna länkar på iOS är en del av ett större koncept med tillhörande domäner där hemligheter webbplatsen, som lagrade autentiseringsuppgifter, kan nås från appen och Apple inte tillåter vanliga Xcode användare att plaska med universal länkar (om du av misstag aktivera funktionen för din App-ID, men inte sätta denna i anspråk, vara beredd på att få en validering fel: fel ITMS-90046: “Ogiltig Kod Logga Rättigheter”).

Trivia! Allmänna länkar är ett nytt koncept och många av Mac-och Windows-skrivbordsprogram som byggts med sina egna nätverk stack, inte använda app store och kan ha varit släpptes år sedan. Därför, OS inte har den kontroll som krävs för att tvinga alla program att följa den Allmänna länk koncept och öppna appen. Apple har valt att inte införa Allmänna Länkar i MacOS men även på Windows-de fungerar bara i Microsoft Kanten webbläsaren och andra UWP apps (som använder samma teknik).

För att registrera dig till Universal länkar på iOS, behöver du göra följande saker:

  1. Möjligt för App-ID på Apple Developer webbplats för att få funktionen för tillhörande domäner.
  2. Lägg till den tillhörande domäner till de rättigheter fil.
  3. Lägg till en apple-app-webbplats-association-fil till webben domän för att ge verifiera äganderätten till programmet.
  4. Lägga till kod för att hantera klickar på Universal länkar.

Steg 1 och 2 kan utföras tillsammans i Kapacitet fliken på Xcode om du är inloggad och har rätt profil (som är från en Apple-Utvecklare eller Företag-konto). Xcode UI ger en indikation på att dessa poster har slutförts.

Tillhörande Domäner i Kapacitet avsnitt i Xcode

I bilden ovan, Steg 2 har slutförts, medan Steg 1 pågår. Du kan klicka på utropstecknet för att hitta problemet. Det är viktigt att prefixet domän med applinks: (som identifierar att du behöver app länkar funktionalitet, samma som används för gemensamma referenser). I denna anges att Appen Länk kapacitet har aktiverats.

Ovanstående åtgärder kan också ske individuellt.

För Steg 1, aktivera Tillhörande Domäner i App-ID avsnitt på utvecklarnas hemsida (visas på den nedre delen av bilden):

Apple Developer webbplats för att aktivera tillhörande domäner

För Steg 2, lägg till följande till de rättigheter fil:

Rättigheter plist

<key>kom.apple.utvecklare.samband-domäner</key>
<array>
<string>applinks:css-tricks.com</string>
</array>

Nu, till Steg 3 värd en förening fil apple-app-webbplats-föreningen som https://css-tricks.com/apple-app-site-association med mime-typen application/json med följande JSON-data från roten på din webbplats:

{
“applinks”: {
“appar”: [],
“information”: {
“ABCDEFGHIJ.com.ccs-trick.mobil”: {
“vägar”: [
“*”
]
}
}
}
}

Ovanstående utdrag bidrag app med ID ABCDEFGHIJ.com.ccs-trick.mobil och ger tillgång till alla förfrågningar på https://css-tricks.com domän. Observera att detta fungerar med https-men http stöds inte. Du kan också använda en alternativ plats som https://css-tricks.com/.well-known/apple-app-site-association för detta. Denna URL är att föredra eftersom det kan hålla Android -, iOS och UWP föreningen filer på ett säkert separat mapp som inte kan raderas av misstag.

Trivia! Universella förbindelser inte garantera att appen öppnas. Om användaren går tillbaka till webbplatsen från huvudet i iOS, OS beslutar att som standard webbplats från och med då tills användaren bestämmer sig för att använda appen genom att klicka på rubriken igen från Safari.

För Steg 4 lägg till följande kod till appen:

func ansökan(_ ansökan: UIApplication, fortsätta userActivity: NSUserActivity, restorationHandler: @fly ([Något]?) -> Void) -> Bool {
om userActivity.activityType == NSUserActivityTypeBrowsingWeb {
låt url = userActivity.webpageURL!
print(url.absoluteString)
}
return true
}
-(BOOL)program:(UIApplication *)ansökan continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
om(userActivity.activityType == NSUserActivityTypeBrowsingWeb) {
NSLog(@”%@”, userActivity.webpageURL.absoluteString);
}
return true;
}

Smart app banners på iOS är mycket enklare och kan läggas till via en enkel meta-tagg i huvudet avsnitt som detta:

<meta name=”apple-itunes-appen” content=”app-id=123456789, app-argumentet=https://css-tricks.kom/länka till//artikel, affiliate-data=optionalAffiliateData”>

De kallar samma metod Anpassade Uri vi berört tidigare.

Windows (Traditionell)

På den traditionella Windows-plattformen (Win32/.NETTO) egna URI (kallas Anpassad Jackbara protokollhanteraren) är den enda funktionen stöds. Lägga till en anpassad URI i Windows handlar om att lägga till en post i registret i HKEY_CLASSES_ROOT. Följande kommer att öppna programmet med den absoluta sökvägen anges när du klickar på en länk för att css-tricks://<text>. Tack vare att man använder kommandoraden är denna öppnas alltid en ny instans av programmet och inte skicka URL: en till den befintliga program som körs.

Registerposten för att ge programmets namn
Registerposten för öppna-kommandot

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTcss-tricks]
“URL-Protokollet för”=” som”
@=”CSS-Tricks (programmets namn)”

[HKEY_CLASSES_ROOTcss-tricksshell]

[HKEY_CLASSES_ROOTcss-tricksshellopen]

[HKEY_CLASSES_ROOTcss-tricksshellopencommand]
@=””C:\Windows\notepad.exe” “%1″”

Ovanstående lanserar anteckningar med en kommandoradsväljare som motsvarar den URL som medföljer. Att vara medveten om att Anteckningar inte har stöd för anpassade URI och vet inte vad jag ska göra med URL: en.

Detta bete är liknande passerar här på konsolen och ansökan måste se till det ordentligt skiljer mellan argumentet vara en vanlig CLI eller en anpassad URI, som visas här:

namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
om (args.Längd > 0 && args[0].IndexOf(“css-tricks:”) == 0) {
Konsolen.Skriv(args[0]);
}
}
}
}
int main(int argc, char*argv[]) {
if (argc > 1) { // argv[0] är fil.
std::string word(argv[1]);
om (ord.jämför(0, 11, “css-tricks:”) == 0) {
std::cout<<ord;
}
}
return 0;
}
Universal Windows-Plattformen (UWP)

På Allmän Windows-Plattformen, du kan använda paket uppenbart att registrera både anpassade URI och Universal link ” (heter App URI Handler).

Anpassade URI

Lägga till ett protokoll förklaring i paketet.appxmanifest:

Protokoll Förklaring finns i paketet.appxmanifest

Samma sak kan göras i koden:

<Extensions>
<uap:Förlängning Kategori=”windows.protokoll”>
<uap:Protokoll Name=”css-tricks” DesiredView=”default”>
<uap:DisplayName>CSS</uap:DisplayName>
</uap:Protokoll>
</uap:Extension>
</Extensions>

…och detta kan nu hanteras i appen.

protected override void OnActivated(IActivatedEventArgs args) {
basen.OnActivated(args);
om (args.Typ == ActivationKind.Protokoll) {
var e = args som ProtocolActivatedEventArgs;
– Systemet.Diagnostik.Felsöka.WriteLine(e.Uri.AbsoluteUri);
}
}
// I App.xaml.h
virtual void OnActivated(Windows::ApplicationModel::Aktivering::IActivatedEventArgs^ e) förbi;

// I App.xaml.cpp
void Program::OnActivated(Windows::ApplicationModel::Aktivering::IActivatedEventArgs ^ e) {
om e->Typ == Windows::ApplicationModel::Aktivering::ActivationKind::Protocol) {
auto args = (ProtocolActivatedEventArgs^)e;
auto url = args->Uri->AbsoluteUri;
}
}
Allmänna Länkar (App URI)

App Uri: er stöds endast i Microsoft Kanten webbläsare. De fungerar inte i Internet Explorer, Chrome eller Firefox. App Uri: er har också ett paket inlägg som liknar den anpassade URI. Det är inte tillgängliga i det grafiska gränssnittet i Visual Studio Kod 2017. I paketet.appxmanifest poster är nästan samma sak:

<Extensions>
<uap3:Förlängning Kategori=”windows.appUriHandler”>
<uap3:AppUriHandler>
<uap3:Host Name=”css-tricks.com” />
</uap3:AppUriHandler>
</uap3:Extension>
</Extensions>

Om uap3 inte är tillgänglig, kan det läggas till i Paketet tag där uap definieras också:

xmlns:uap3=”http://schemas.microsoft.com/appx/manifest/uap/windows10/3″

App URI är en relativt ny funktion i Windows och många UWP-projekt riktar sig till äldre versioner av windows som den minsta versionen. Du kanske behöver för att stöta upp för att stödja denna funktion.

Precis som iOS, webbplats behov för att verifiera äganderätten till domänen för att detta ska fungera. Det kan göras genom att ta emot en fil med mime-typen application/json i roten på din webbplats, som https://css-tricks.com/windows-app-web-link eller https://css-tricks.com/.well-known/windows-app-web-link via https med innehållet:

{
“packageFamilyName”: “YourPackageFamilyNameHere”,
“vägar”: [“*”],
“excludePaths”: [“/none/*”, “https://cdn.css-tricks.com/robot.txt”]
}

För att få det paket som efternamn, kör följande Powershell och sök ditt paket väg:

Få-AppxPackage

Hantering App Uri: er innebär att samma kod som egna Uri: er i Windows. Genom design, allt du behöver göra är att se protokollet fält i den medföljande URI och skriva motsvarande logik.

Precis som iOS, Windows-användare kan välja att inaktivera öppnar appar. Windows innehåller inställningar i registret för att tvinga program att öppna (används för att testa) och även en validator verktyg (som finns i %windir%system32AppHostRegistrationVerifier.exe) för att kontrollera om ovanstående inställningar är korrekta.

Android
Anpassade URI

Android har stöd för anpassade Uri: er från början. Detta kan göras med koden. I AndroidManifest.xml lägg till:

<aktiviteten android:namn=”.CustomUriActivity”>
<avsikten-filtrera>
<handling android:namn=”android.uppsåt.handling.UTSIKT” />
<kategorin android:namn=”android.uppsåt.kategori.STANDARDVÄRDET” />
<kategorin android:namn=”android.uppsåt.kategori.BLÄDDRINGSBAR” />
<android data:stödordning=”css-tricks” />
</avsikten-filtrera>
</aktivitet>

Kategorin STANDARD är att se till att det finns ingen användare åtgärd krävs för att aktivera det. BLÄDDRINGSBAR ser till att den egna Uri: er för arbetet i webbläsaren.

Detta kan sedan hanteras i CustomUriActivity.java på skapelsen:

SHARE
Previous articleOanvända
Next articleUbrukt