iOS Ajout d'un schéma d'URL à votre propre application


Exemple

Disons que vous travaillez sur une application appelée MyTasks et que vous souhaitez autoriser les URL entrantes à créer une nouvelle tâche avec un titre et un corps. L'URL que vous concevez pourrait ressembler à ceci:

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

(Bien sûr, les paramètres de text et de body sont utilisés pour remplir notre tâche que nous créons!)

Voici les grandes étapes pour ajouter ce schéma d'URL à votre projet:

  1. Enregistrez un schéma d'URL dans le fichier Info.plist votre application afin que le système sache quand acheminer une URL vers votre application.
  2. Ajoutez une fonction à votre UIApplicationDelegate qui accepte et gère les URL entrantes.
  3. Effectuez n'importe quelle tâche qui doit se produire lorsque cette URL est ouverte.

Première étape: Enregistrez un schéma d'URL dans Info.plist:

Tout d'abord, nous devons ajouter une entrée "Types d'URL" à notre fichier Info.plist. Cliquez sur le bouton (+) ici: ajouter une nouvelle ligne à Info.plist

... puis entrez un identifiant unique pour votre application, ainsi que le schéma d'URL que vous souhaitez utiliser. Être spécifique! Vous ne voulez pas que le schéma d'URL entre en conflit avec l'implémentation d'une autre application. Mieux vaut être trop long ici que trop court! remplir l'entrée des types d'URL dans Info.plist

Deuxième étape: gérer l'URL dans UIApplicationDelegate

Nous devons implémenter application:openURL:options: sur notre UIApplicationDelegate . Nous allons inspecter l' URL entrante et voir si une action est possible!

Une mise en œuvre serait la suivante:

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
}

Troisième étape: Effectuez une tâche en fonction de l'URL.

Lorsqu'un utilisateur ouvre votre application via une URL, il s'attend probablement à ce que quelque chose se produise. Peut-être que la navigation vers un élément de contenu, peut-être la création d'un nouvel élément - dans cet exemple, nous allons créer une nouvelle tâche dans l'application!

Dans le code ci-dessus, nous pouvons voir un appel à self.rootViewController.createTaskWithTitle(:body:) - en supposant que votre AppDelegate ait un pointeur sur son contrôleur de vue racine qui implémente correctement la fonction, vous êtes prêt!