SDK iOS Utilisation des schémas d'URL

La communication entre les applications offre à votre application la possibilité de tirer parti des fonctionnalités d'autres applications, d'envoyer et de recevoir des données entre les applications et de fournir une expérience utilisateur riche qui "fonctionne"..

Dans ce tutoriel, nous allons créer deux applications, une application qui envoie des données et une autre application qui reçoit ces données. Ensemble, ces applications présenteront des schémas d'URL, une méthode d'envoi et de réception de données entre applications. Ceci est un tutoriel assez avancé en ce qui concerne la compréhension de Xcode, et je vous recommande fortement de vous familiariser avec ce code avant de commencer à l'utiliser, à l'aide de Xcode et d'interface Builder..

Remarque: un périphérique physique est requis pour tester cette application..

Étape 1: Création d'un projet d'expéditeur

Continuons et créons un nouveau projet Xcode, sélectionnez? Application basée sur l'affichage. Cliquez ensuite sur. Nommez le projet? Expéditeur "et entrez votre identifiant d'entreprise. Ce projet hébergera l'application qui envoie des informations à l'application "Receiver" que nous allons créer prochainement.

Étape 2: configuration des connexions XIB et Interface Builder

Avant de configurer notre XIB, nous allons créer quelques déclarations à l’avance..

Dans le volet de navigation de gauche, ouvrez SenderViewController.h et configurez-le comme suit:

#importation  @interface SenderViewController: UIViewController IBOutlet UITextField * textBox;  - (IBAction) openMaps: expéditeur (id); - (IBAction) openYoutube: (id) expéditeur; - openReceiverApp (IBAction): expéditeur (id); @property (nonatomic, keep) IBOutlet UITextField * textBox; @fin

En faisant cela, nous déclarons quelques méthodes qui seront appelées à l’avenir par UIButtons et une variable qui fait référence à un UITextField. Ces éléments de l'interface seront ajoutés à la suite.

Maintenant, dans le volet de navigation de gauche, ouvrez SenderViewController.xib et faites glisser un élément UITextField et trois boutons UIB dans le volet des utilitaires de droite. Empilez-les verticalement dans la vue et renommez le premier bouton? Envoyez le texte à l'application Receiver ", le deuxième bouton à" Ouvrir les cartes "et le troisième bouton à" Ouvrir YouTube ". Votre vue doit ressembler à quelque chose de similaire à l'image ci-dessous..

Notre dernière étape consiste à finaliser nos connexions IBC. Sélectionnez le propriétaire du fichier (la boîte de fil orange) à gauche, puis, dans le volet Utilitaires à droite, choisissez l'onglet Inspecteur de connexions (la flèche). Relier zone de texte à UITextField. Ensuite, connectez openMaps:, openYoutube:, et openReceiverApp: l’événement "Touch Up Inside" de leurs boutons respectifs par une ligne de connexion allant du cercle à droite des boutons. Les connexions doivent ressembler à ce qui est montré ci-dessous.

Étape 3: Ouverture des URL pour la communication

Pour commencer, ouvrez le fichier SenderViewController.m à partir du volet de navigation. Sous @la mise en oeuvre ajoutez la ligne suivante pour synthétiser notre propriété:

@synthesize textBox;

Veillons également à suivre les règles de gestion de la mémoire et à nettoyer les droits conservés dans notre propriété, ci-dessus. [super dealloc]; ajouter:

[version de textBox];

Enfin, dans notre méthode viewDidUnload ci-dessous? [Super viewDidUnload]; "add:

self.textBox = nil;

Un bref aperçu des schémas d'URL est que les schémas d'URL permettent aux applications d'enregistrer leur propre protocole pour permettre le transfert de données. Voici quelques exemples courants de protocoles que vous pouvez utiliser régulièrement:? Http: // ",? Https: //" et? Ftp: // ". Par exemple, une application de mise en favori peut vouloir s'enregistrer? Bookmark: // ", afin que d'autres applications puissent marquer les liens en utilisant le schéma d'URL,? bookmark: //www.envato.com". Les applications ne peuvent pas s'inscrire au protocole? http: // ", bien que certaines applications Apple enfreignent cette règle et soient enregistrées? http : // "pour ouvrir des applications telles que Maps, iTunes et YouTube. Notre application Receiver va s'inscrire pour? readtext: // texthere". Nous pouvons ouvrir ces URL en appelant la méthode de UIApplication ouvrir le lien:. Quand on utilise ouvrir le lien: il lancera l'application spécifiée et lui remettra les données que vous avez fournies.

Ajoutez les méthodes suivantes à votre fichier SenderViewController.m:

-(IBAction) openMaps: (id) sender // Ouvre une carte contenant le siège de Envato UIApplication * ourApplication = [UIApplication sharedApplication]; NSString * ourPath = @ "http://maps.google.com/maps?ll=-37.812022, 144.969277"; NSURL * ourURL = [NSURL URLWithString: ourPath]; [ourApplication openURL: ourURL];  - (IBAction) openYoutube: (id) sender // Ouvre une vidéo d'un iPad 2 Commercial UIApplication * ourApplication = [UIApplication sharedApplication]; NSString * ourPath = @ "http://www.youtube.com/watch?v=TFFkK2SmPg4"; NSURL * ourURL = [NSURL URLWithString: ourPath]; [ourApplication openURL: ourURL];  - (IBAction) openReceiverApp: (id) sender // Ouvre l'application Receiver si elle est installée, sinon affiche une erreur UIApplication * ourApplication = [UIApplication sharedApplication]; NSString * URLEncodedText = [self.textBox.text stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSString * ourPath = [@ "readtext: //" stringByAppendingString: URLEncodedText]; NSURL * ourURL = [NSURL URLWithString: ourPath]; if ([notreApplication peutOpenURL: notreURL]) [notreApplication openURL: notreURL];  else // Erreur d'affichage UIAlertView * alertView = [[UIAlertView alloc] initWithTitle: @ "Récepteur introuvable": @ "L'application Receiver n'est pas installée. Elle doit être installée pour envoyer du texte." délégué: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [alertView show]; [version alertView]; 

Ces méthodes utilisent le ouvrir le lien méthode de l'application UIA pour envoyer des données à d'autres applications. Apple a enregistré l'application Google Maps et l'application YouTube avec? Http: // "essentiellement, nous appelons simplement ouvrir le lien sur ces URL. Pour créer notre URL, nous avons également utilisé le stringByAddingPercentEscapesUsingEncoding: méthode permettant de s’assurer que la chaîne est une URL valide, codée par une URL (nous la décoderons dans notre application Receiver). Pour notre URL personnalisée? Readtext: // ", nous vérifions d’abord si le lien peut être ouvert avec canOpenURL. Cela vérifie essentiellement si l'application qui est enregistrée pour ce schéma d'URL particulier est installée et si c'est le cas, nous pouvons ouvrir l'URL avec notre texte. Si l'application n'est pas installée, nous affichons un message d'erreur. N'oubliez pas que lorsque vous publiez votre application au public, le schéma d'URL dont dépend votre application risque de ne pas fonctionner car l'autre application n'est pas installée. Vous devriez toujours effectuer le canOpenURL lors de l'ouverture de modèles d'URL autres que http: //.

Allez-y, construisez et exécutez l'application. Notez que les boutons Maps et YouTube ouvrent leurs applications respectives. En outre, le bouton "Texte envoyé" renvoie un message d'erreur car nous n'avons pas encore créé notre application "Récepteur"..

Étape 4: Création d'une application récepteur

Créez un nouveau projet XCode et sélectionnez? View Based Application. Cliquez ensuite sur. Nommez le projet? Récepteur "et entrez votre identifiant d'entreprise. Ce projet hébergera l'application qui lit les informations envoyées par l'application "Sender".

Étape 5: Enregistrer le schéma d'URL personnalisé

Dans le navigateur de projet, développez le groupe Fichiers de support et ouvrez le fichier Receiver-Info.plist..

Vous pouvez ajouter une nouvelle ligne en allant dans le menu et en cliquant sur Editeur> Ajouter un élément. Configurez un élément Types d'URL en ajoutant un nouvel élément. Développez la clé Types d'URL, développez l'élément 0 et ajoutez un nouvel élément, "schémas d'URL". Remplissez "readtext" pour l'élément 0 de? Schémas d'URL "et l'identificateur de votre société pour l'identificateur? URL". Votre fichier doit ressembler à l'image ci-dessous lorsque vous avez terminé.

Étape 6: gérer l'URL

Ouvrez ReceiverAppDelegate.m et remplacez le application: applicationDidFinishLaunchingWithOptions: méthode avec le code suivant:

- Application (BOOL): application (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions // Point de substitution pour la personnalisation après le lancement de l'application. self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; // Erreur d'affichage s'il n'y a pas d'URL si (! [LaunchOptions objectForKey: UIApplicationLaunchOptionsURLKey]) UIAlertView * alertView; alertView = [[UIAlertView alloc] initWithTitle: @ "Erreur" message: @ "Cette application a été lancée sans texte. Ouvrez cette application à l'aide de l'application Sender pour envoyer du texte." délégué: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [alertView show]; [version alertView];  retourne OUI; 

Cela alerte une erreur si l'application est ouverte sans URL. En règle générale, si cela se produit, vous devez charger votre application normalement, mais dans le but d'expérimenter, nous afficherons une erreur..

Ajoutez le code suivant sous le application: applicationDidFinishLaunchingWithOptions: méthode.

- Application (BOOL): (UIApplication *) application handleOpenURL: (NSURL *) url // texte d'affichage UIAlertView * alertView; NSString * text = [[url host] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; alertView = [[[UIAlertView alloc]] initWithTitle: @ "Texte" message: délégué texte: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [alertView show]; [version alertView]; retourner OUI; 

Ce code alerte l'utilisateur avec le texte envoyé par l'application Sender lors de l'ouverture de l'application avec une URL. En règle générale, vous devez utiliser ces données pour effectuer un suivi avec une action appropriée au sein de votre application. Notez que nous avons utilisé le nom d’hôte de l’URL pour obtenir notre texte. Nous l'avons fait parce que le schéma d'URL que nous avons enregistré fonctionne comme n'importe quel autre schéma? Schéma: // nomhôte / chemin/fichier.php? Variable = x # section "(Rappelez-vous que notre URL était? Readtext: // text"). Nous avons également décodé l’URL du texte à l’aide de la touche stringByReplacingPercentEscapesUsingEncoding: méthode comme précédemment nous avions URL encodé.

Étape 7: Test de l'application

Le moment est enfin venu de tester ces deux applications. Ils doivent tous deux être construits et installés sur un périphérique iOS physique. Vérifiez que vous avez déconnecté le périphérique de l'ordinateur lors des tests et que vous avez fermé l'application Receiver après la déconnexion pour éviter tout problème. Ouvrez l'application Sender, rédigez du texte et cliquez sur Envoyer. L'application du destinataire devrait s'ouvrir et vous demander le texte que vous avez saisi.

Conclusion

En cas de succès, vous devriez maintenant pouvoir facilement mettre en œuvre des communications inter-applications à l'aide de schémas d'URL. Si vous avez des questions ou des commentaires, n'hésitez pas à les laisser dans la section des commentaires ci-dessous. Merci d'avoir lu!

Informations complémentaires et ressources

Avantages:

  • Ne force pas l'utilisateur à se connecter à un réseau et ne nécessite pas de ressources supplémentaires pour la gestion du serveur Web..
  • Une méthode simple, rapide et facile d'implémentation de la communication.
  • Fournir une interface de communication publique dont TOUTE application peut tirer parti.
  • Ouvrez votre application depuis votre site Web à l'aide d'une balise d'ancrage. Ex: Ouvrez notre application iPhone

Les inconvénients:

  • Contrairement à d'autres plates-formes telles qu'Android, l'iPhone ne crée pas une pile d'actions (pile arrière sur Android). Cela signifie que si vous décidez de lancer une autre application, votre application ne reprendra pas lorsque l'utilisateur quittera l'application que vous avez ouverte..

Quand ne pas utiliser les modèles d'URL:

  • Envoi de données sensibles à l'utilisateur telles que combinaisons de nom d'utilisateur et de mot de passe. Vous ne devriez jamais faire cela; reportez-vous plutôt à l'API du trousseau.
  • Évitez d'utiliser des schémas d'URL lorsque vous pouvez implémenter les fonctionnalités des autres applications en interne et directement, afin d'éviter la fermeture de votre application. Par exemple, devriez-vous utiliser un modèle d'URL pour lancer l'application Maps lorsque vous pourriez implémenter Maps in-app? En fonction de la situation, vous devrez peut-être, mais dans de nombreux cas, ouvrir Maps dans l'application est suffisant..
  • Aucune authentification indiquant que les données que vous avez envoyées atteindront la bonne application ou si elles l'ont été, à savoir pourquoi les données sensibles ne doivent pas être envoyées.

Ressources:

  • Manuel de référence du développeur Apple (fournit des informations sur les modèles d'URL et sur la manière de lancer des applications Apple en les utilisant)
  • Modèles d'applications mobiles iOS sur le marché Envato