Une des meilleurs fonctionnalités de la SDK de l’iPhone est la capacité d’un application à se “lier” elle-même à un ” custom URL schemes” (ou Schéma URL personnalisé) et que ce schéma puisse être utilisé pour lancer cette application à partir d’un navigateur ou d’une autre application iPhone. Créer ce genre de schéma est tellement simple qu’il serait un crime de ne pas l’utiliser dans votre application.
Avant que vous ne soyez prêt à démarrer, vous devez déterminer comment vous voulez que votre application réponde à l’URL. La façon la plus simple d’utiliser les custom schemes est de simplement “réveiller” l’application; mais il est aussi possible de transmettre des information via l’URL (comme indiqué dans l’article précédent), et ainsi, permettre à l’application de faire différentes tâches à son réveil.
Enregistrer un Custom URL Schemes
Indépendamment de ce que vous voulez faire une fois que votre application est démarrée, la première étape est d’enregistrer un schéma d’URL personnalisée avec l’iPhone. Cela se fait via le fichier info.plist
situé dans le dossier du projet de votre application.
(NOTE: c’est le même fichier que vous changeriez pour définir une icône personnalisée).
Par défault, quand il est lancé, XCode éditera le fichier dans une UI graphique.
Il est possible de modifier le fichier info.plist
directement dans un éditeur de Texte, ce qui peut être plus simple pour certaines personnes.
Étape 1. Clique droit et “Add Row”
Étape 2. Sélectionnez “URL types” comme Key
Étape 3. Développez l’arborescence de “Item 1″ et donnez lui une valeur pour l’URL identifier. Cela peut être n’importe quoi, mais la convention est d’utiliser un “nom de domaine inversé”(ex: “com.myapp”).
Step 4. Ajoutez une autre “row”, cette fois sur “Item 1″.
Step 5. Sélectionnez “URL Schemes” comme Key.
Step 6. Entrez les caractères qui deviendront votre URL scheme (par exemple “myapp://” deviendrait “myapp”). Il est possible d’enregistrer plus d’un scheme en en ajoutant dans cette section même si ce serait étrange de le faire.
NOTE: Si vous ouvrez le fichier info.plist
dans un éditeur de texte vous verrez que ce qui suit a été ajouté au fichier…
CFBundleURLTypes CFBundleURLSchemes myapp CFBundleURLName com.yourcompany.myapp
Gérer l’URL
Maintenant que l’URL a été enregistrée, n’importe qui peut ouvrir l’application en utilisant votre URL scheme.
Voici quelques exemples :
myapp:// myapp://some/path/here myapp://?foo=1&bar=2 myapp://some/path/here?foo=1&bar=2
Quand l’application est lancée à partir d’une des URL ci-dessus, la SDK de l’iPhone lancera un message à l’UIApplicationDelegate.
Si vous voulez fournir un handler personnalisé, fournissez tout simplement une implementation pour le message dans votre delegate. Par exemple :
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { // Faites quelques choses avec l'URL ici }
Une technique courante consiste à analyser l’URL passée en paramètre et à tirer d’elle les paramètres qui seront utilisés par les différentes vues dans l’application et de les stocker dans les préférences de l’utilisateur. Voici un exemple où nous stockons l’URL comme paramètre la valeur ”url” de cette façon…
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { if (!url) { return NO; } NSString *URLString = [url absoluteString]; [[NSUserDefaults standardUserDefaults] setObject:URLString forKey:@"url"]; [[NSUserDefaults standardUserDefaults] synchronize]; return YES; }
Maintenant, vous disposez de tout ce dont vous avez besoin pour permettre aux autres applications de réveiller la votre tout en y passant des informations.