Zoeken…


Opmerkingen

Handige Apple-documentatie met voorbeelden en verduidelijking.

Een app openen op basis van het URL-schema

Een app openen met een gedefinieerd URL-schema todolist:// :

Doelstelling C

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

Snel

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>

Opmerking: het is handig om te controleren of de link kan worden geopend om anders een passend bericht aan de gebruiker weer te geven. Dit kan met behulp van de methode canOpenURL:

Een URL-schema toevoegen aan uw eigen app

Stel dat u werkt aan een app met de naam MyTasks en dat u inkomende URL's wilt toestaan een nieuwe taak met een titel en een hoofdtekst te maken. De URL die u ontwerpt, kan er ongeveer zo uitzien:

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

(Natuurlijk, de text en body parameters worden gebruikt om onze taak die we creëren bevolken!)

Hier zijn de grote stappen om dit URL-schema aan uw project toe te voegen:

  1. Registreer een URL-schema in het Info.plist bestand van uw app, zodat het systeem weet wanneer een URL naar uw app moet worden geleid.
  2. Voeg een functie toe aan uw UIApplicationDelegate die inkomende URL's accepteert en verwerkt.
  3. Voer de taak uit die moet worden uitgevoerd wanneer die URL wordt geopend.

Stap één: Registreer een URL-schema in Info.plist:

Eerst moeten we een "URL-typen" -item toevoegen aan ons Info.plist-bestand. Klik hier op de knop (+): een nieuwe rij toevoegen aan Info.plist

... voer vervolgens een unieke identificatie voor uw app in, evenals het URL-schema dat u wilt gebruiken. Wees specifiek! U wilt niet dat het URL-schema conflicteert met de implementatie van een andere app. Het is beter om hier te lang te zijn dan te kort! het invullen van de URL-typenvermelding in Info.plist

Stap twee: verwerk de URL in de UIApplicationDelegate

We moeten de toepassing implementeren application:openURL:options: op onze UIApplicationDelegate . We zullen de inkomende URL inspecteren en kijken of we een actie kunnen ondernemen!

Een implementatie zou deze zijn:

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
}

Stap drie: Voer een taak uit, afhankelijk van de URL.

Wanneer een gebruiker uw app opent via een URL, verwachtte hij waarschijnlijk dat er iets zou gebeuren. Misschien is dat navigeren naar een deel van de inhoud, misschien is dat een nieuw item maken - in dit voorbeeld gaan we een nieuwe taak in de app maken!

In de bovenstaande code zien we een aanroep van self.rootViewController.createTaskWithTitle(:body:) - dus ervan uitgaande dat uw AppDelegate een aanwijzer heeft naar de AppDelegate die de functie correct implementeert, bent u helemaal klaar!

Deep-linking instellen voor uw app is eenvoudig. U hebt alleen een kleine URL nodig waarmee u uw app wilt openen.

Volg de stappen om deeplinking in te stellen voor uw app.

  1. Laten we een project maken en het DeepLinkPOC noemen.

  2. Selecteer nu uw projectdoel.

  3. Na het selecteren van het doel, selecteert u het tabblad 'info'.

  4. Blader naar beneden tot u een optie met URL-typen ziet

  5. Klik op de optie '+'.

  6. U zult zien dat URL-schema's een string toevoegen waarmee u uw app wilt openen. Laten we " DeepLinking " toevoegen in URL-schema's.

Dus om uw app te openen, kunt u deze starten door "DeepLinking: //" in uw safari te typen. Uw deep-linking string heeft het volgende formaat.

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

waar, Schema: "DeepLinking" Host: "path" path: "Page1"

Opmerking : zelfs als u geen host en pad toevoegt, wordt de app gestart, dus geen zorgen, maar u kunt host en pad toevoegen om na het starten van de applicatie extra door te verwijzen naar een bepaalde pagina.

  1. Voeg nu de volgende methode toe aan uw appdelegate.

Snel:

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

Doelstelling C:

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

De bovenstaande methode wordt aangeroepen wanneer uw app wordt gestart met een deep-linking string die u instelt voor uw app.

  1. Nu is het tijd om uw app te installeren, maar wacht voordat u direct naar de knop Uitvoeren springt. Laten we een kleine wijziging aanbrengen in de app-startmethode van het schema.
  • Selecteer en bewerk uw schema als

voer hier de afbeeldingsbeschrijving in

  • verander het lanceringstype en sluit voer hier de afbeeldingsbeschrijving in
  1. Klik nu op de knop Uitvoeren (als u wilt, kunt u breekpunt toevoegen aan uw didFinishLaunchingWithOptions en openURL-methoden om waarden te observeren)

  2. U ziet het bericht "Wachten op DeepLinkPOC (of uw app-naam) om te starten".

  3. Open safari en typ " DeepLinking: // " in de zoekbalk. Dit toont de prompt "open deze pagina in DeepLinkPOC" klik op open om uw app te starten.

Ik hoop dat je hebt leren kennen hoe je deep-links instelt voor je app :)



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow