Sök…


Anmärkningar

Användbar Apple-dokumentation med exempel och förtydligande.

Öppna en app baserat på dess URL-schema

Så här öppnar du en app med definierat URL-schema todolist:// :

Objective-C

NSURL *myURL = [NSURL URLWithString:@"todolist://there/is/something/to/do"];
[[UIApplication sharedApplication] openURL:myURL];

Snabb

let stringURL = "todolist://there/is/something/to/do"
if let url = NSURL(string: stringURL) {
    UIApplication.shared().openURL(url)
}

html

<a href="todolist://there/is/something/to/do">New SMS Message</a>

Obs: Det är användbart att kontrollera om länken kan öppnas för att annars visa ett lämpligt meddelande till användaren. Detta kan göras med canOpenURL:

Lägga till ett URL-schema i din egen app

Låt oss säga att du arbetar på en app som heter MyTasks , och att du vill tillåta inkommande URL: er att skapa en ny uppgift med en titel och ett organ. Webbadressen du utformar kan se ut så här:

mytasks://create?title=hello&body=world

(Naturligtvis används text och body för att fylla vår uppgift som vi skapar!)

Här är de stora stegen för att lägga till detta URL-schema till ditt projekt:

  1. Registrera ett URL-schema i appens Info.plist fil, så att systemet vet när du Info.plist en URL till din app.
  2. Lägg till en funktion i din UIApplicationDelegate som accepterar och hanterar inkommande URL: er.
  3. Utför vad som behövs för att uppstå när den URL-adressen öppnas.

Steg ett: Registrera ett URL-schema i Info.plist:

Först måste vi lägga till en post "URL-typer" i vår Info.plist-fil. Klicka på knappen (+) här: lägger till en ny rad i Info.plist

... ange sedan en unik identifierare för din app, såväl som URL-schemat du vill använda. Var specifik! Du vill inte att URL-schemat ska komma i konflikt med implementeringen av en annan app. Bättre att vara för lång här än för kort! fylla i posten i URL-typer i Info.plist

Steg två: Hantera URL: en i UIApplicationDelegate

Vi måste implementera application:openURL:options: på vår UIApplicationDelegate . Vi granskar den inkommande URL och ser om det finns en åtgärd vi kan vidta!

En implementering är detta:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    if url.scheme == "mytasks" && url.host == "create" {
        let title = // get the title out of the URL's query using a method of your choice
        let body = // get the title out of the URL's query using a method of your choice
        self.rootViewController.createTaskWithTitle(title, body: body)
        return true
    }

    return false
}

Steg tre: Utför en uppgift beroende på webbadressen.

När en användare öppnar din app via en URL, förväntade de sig antagligen att något skulle hända. Kanske är det att navigera till ett innehåll, kanske det skapar ett nytt objekt - i det här exemplet kommer vi att skapa en ny uppgift i appen!

I koden ovan kan vi se ett samtal till self.rootViewController.createTaskWithTitle(:body:) - så förutsatt att din AppDelegate har en pekare till sin root view-controller som implementerar funktionen ordentligt, är du redo!

Det är enkelt att konfigurera djuplänkning för din app. Du behöver bara en liten url med vilken du vill öppna din app.

Följ stegen för att konfigurera djuplänkning för din app.

  1. Låter skapa ett projekt och namnge det DeepLinkPOC.

  2. Välj nu ditt projektmål.

  3. När du har valt mål väljer du fliken "info".

  4. Rulla ner till botten tills du ser ett alternativ med URL-typer

  5. Klicka på "+".

  6. Du ser URL-scheman lägga till en sträng med vilken du vill öppna appen. Låter lägga till " DeepLinking " i URL-scheman.

Så för att öppna din app kan du starta den genom att skriva "DeepLinking: //" i din safari. Din djupa länksträng har följande format.

[scheme]://[host]/[path]  --> DeepLinking://path/Page1

var, schema: "DeepLinking" värd: "sökväg" sökväg: "Sida1"

Obs! Även om du inte lägger till värd och sökväg kommer den att starta appen, så inga bekymmer. Men du kan lägga till värd och sökväg för att dessutom omdirigera till en viss sida efter applikationsstart.

  1. Lägg nu till följande metod i appdelegatet.

Snabb:

 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 

Mål-c:

-(BOOL)application:(UIApplication *)application
          openURL:(NSURL *)url
          sourceApplication:(NSString *)sourceApplication
          annotation:(id)annotation

Ovanstående metod kallas varje gång din app startas med hjälp av en djup-länkande sträng som du anger för din app.

  1. Nu är det dags att installera din app men vänta innan du direkt hoppar för att köra knappen. Låt oss göra en liten förändring i schemans app-lanseringsmetod.
  • Välj och redigera ditt schema som

ange bildbeskrivning här

  • ändra lanseringstyp och stäng ange bildbeskrivning här
  1. Klicka nu på Kör-knappen (om du vill kan du lägga till brytpunkt till dina didFinishLaunchingWithOptions och openURL-metoder för att observera värden)

  2. Du ser ett meddelande "Väntar på att DeepLinkPOC (eller ditt appnamn) kommer att starta".

  3. Öppna safari och skriv " DeepLinking: // " i sökfältet. Detta visar snabbmeddelandet "öppna den här sidan i DeepLinkPOC" klicka öppen för att starta din app.

Hoppas att du fick veta hur du ställer in djupa länkar för din app :)



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow