Une introduction au transfert

introduction

Avec iOS 8 et OS X Yosemite, Apple a introduit une nouvelle fonctionnalité intéressante permettant aux développeurs de tirer parti, Remise. Handoff permet aux applications de transférer des données et des informations sur l’état des applications d’un appareil à un autre via Bluetooth. Cela permet aux utilisateurs de vos applications de commencer une tâche sur l’un de leurs appareils, puis de la poursuivre de manière transparente sur un autre.

Un exemple de cela serait de commencer à écrire un message sur votre iPhone, puis de terminer et d’envoyer ce même message sur votre iPad. Dans ce tutoriel, je vais vous montrer comment adopter Handoff dans vos propres applications via une application de prise de notes très simple.

Ce didacticiel nécessite que vous exécutiez Xcode 6+ et que vous disposiez de deux appareils compatibles Handoff. Tous les appareils iOS 8 n’ont pas Bluetooth LE (Low Energy), qui est nécessaire pour Handoff. Cette fonctionnalité n’est donc disponible et ne peut être testée que sur les appareils suivants:

  • iPhone 5 et versions ultérieures
  • iPad de 4e génération, y compris tous les modèles d’iPad Air
  • ipad mini
  • iPod Touch 5e génération

Pendant le test, vous devez vous connecter au même compte iCloud sur chaque appareil et activer Handoff dans les paramètres de l’appareil.

1. Configuration du projet

Créez un nouveau projet dans Xcode et choisissez le Application à vue unique modèle du iOS> Application section.

Modèle de projet

Configurez le projet comme indiqué ci-dessous. Notez que Langue est réglé sur Rapide et Dispositifs est réglé sur Universel.

Options de projet

Une fois que Xcode a créé votre projet, ouvrez ViewController.swift et remplacer la mise en œuvre du ViewController classe avec l’implémentation suivante:

La mise en œuvre est assez simple. Cela rend le ViewController la classe adopte à la fois le UITextFieldDelegate et UITextViewDelegate protocoles, et il ajoute un UITextField et UITextView à la vue du contrôleur de vue pour la saisie de texte.

Créez et exécutez votre application sur l’un de vos appareils de test et vous devriez voir une interface utilisateur très basique avec deux champs de saisie, un champ de texte pour un titre et une vue de texte pour le contenu de la note.

Interface utilisateur initiale

2. Configuration du transfert

Les activités transférées entre appareils avec Handoff sont modélisées par le NSUserActivity classe. Vous en apprendrez plus sur cette classe et comment l’utiliser plus tard dans ce didacticiel. Tout d’abord, votre application doit être configurée pour créer ces activités avec succès.

Chaque type d’activité pris en charge par votre application doit recevoir un identifiant unique, de la même manière que chaque application iOS possède son propre identifiant unique. Ces identifiants peuvent être ce que vous voulez, mais la meilleure pratique consiste à utiliser la notation DNS inversée, telle que com.tutsplus.handoff-introduction.note. L’instance de l’application exécutée sur chaque appareil doit également être signée par la même équipe de développement iOS pour que les activités soient correctement reconnues.

Vous devez d’abord ajouter les identifiants d’activité pris en charge par votre application à la cible Info.plist. Ouvrez la cible Info.plist et ajoutez le NSUserActivityTypes clé. Faire de cet article un Tableau et ajoutez un seul élément, com.tutsplus.handoff-introduction.note, comme indiqué dans la capture d’écran ci-dessous.

En relation :  Comment connecter une manette Xbox One à Raspberry Pi
Définition des types d'activité des utilisateurs

Ensuite, sélectionnez le projet dans le Navigateur de projet et, dans l’éditeur de droite, ouvrez le Général languette. dans le Identité section, ensemble Équipe à la bonne équipe de développement iOS.

Choisissez la bonne équipe de développement

Une fois ces étapes terminées, à condition que vous soyez connecté au même compte iCloud et connecté au même réseau Wi-Fi sur chacun de vos appareils de test, votre application est prête à commencer à utiliser Handoff.

3. Envoi d’une activité utilisateur

Ensuite, vous devez ajouter du code pour que l’activité de l’utilisateur soit envoyée d’un appareil à un autre. Mettre à jour le viewDidLoad méthode de la ViewController classe comme indiqué ci-dessous.

Cela crée une base NSUserActivity objet avec l’identifiant que vous avez ajouté à votre cible Info.plist plus tôt. Vous donnez à cet objet d’activité un title et un userInfo dictionnaire avec des valeurs de chaîne vides pour le Titre et contenu clés.

Dans ce tutoriel, nous allons mettre des chaînes dans notre activité userInfo dictionnaire. Cependant, vous pouvez ajouter n’importe quel type de liste de propriétés, comme des nombres, des tableaux et des dictionnaires, ainsi que NSCoding objet conforme.

Vous attribuez ensuite cette nouvelle activité au userActivity propriété de votre ViewController instance afin que l’API Handoff y fasse référence. le UIViewController class hérite de cette propriété du UIResponder classe.

Enfin, vous appelez becomeCurrent sur l’objet activité pour indiquer au système qu’il s’agit de l’activité de l’utilisateur en cours à envoyer par l’application.

Vous avez maintenant configuré votre activité utilisateur avec succès, mais nous devons également la remplir avec du contenu au fur et à mesure que l’utilisateur rédige sa note. Pour ce faire, nous mettons à jour l’activité actuelle de l’utilisateur en remplaçant le updateUserActivityState(_:) méthode dans le ViewController classe. Cette méthode est appelée périodiquement par l’API Handoff pour mettre à jour l’activité actuelle de l’utilisateur. Ajoutez le code suivant au ViewController classe.

le updateUserActivityState(_:) La méthode nous donne une référence à l’activité actuelle de l’utilisateur et remplace les valeurs de l’activité userInfo dictionnaire avec les dernières valeurs de votre application. Notez que nous invoquons également cette méthode sur la superclasse.

Nous avons également implémenté deux autres méthodes, textField(_:shouldChangeCharactersInRange:replacementString:) du UITextFieldDelegate protocole et textView(_:shouldChangeTextInRange:replacementText:) du UITextViewDelegate protocole. Dans ces méthodes, nous mettons à jour l’activité actuelle de l’utilisateur chaque fois que le texte de l’un des champs de saisie change. Bien que cela ne soit pas nécessaire, cela garantit que votre activité contiendra toujours les dernières informations.

Vous êtes maintenant prêt à tester votre application avec Handoff. Créez et exécutez votre application sur vos deux appareils de test. Appuyez sur le bouton de verrouillage d’un appareil pour mettre l’appareil en veille tout en gardant l’application ouverte sur l’autre. Réveillez l’appareil que vous venez de verrouiller et vous devriez voir l’icône de l’application apparaître dans le coin inférieur gauche de l’écran de verrouillage. Effectuez un geste de balayage sur cette icône et votre application reprendra via Handoff.

Vous pouvez également double-cliquer sur le bouton d’accueil pour accéder au sélecteur d’applications et votre application compatible Handoff apparaîtra à gauche de l’écran d’accueil. Pour le moment, votre application ne reprend que sur la même interface vierge. Corrigeons ça maintenant.

En relation :  Prendre le contrôle du moteur de mise au point tvOS

4. Restauration à partir d’une activité utilisateur

Restauration d’une application à partir d’un transfert NSUserActivity est géré par votre délégué d’application. Le délégué d’application transmet ensuite l’objet d’activité de l’utilisateur au contrôleur de vue racine de l’application pour qu’il se restaure. Si le contrôleur de vue qui a besoin de traiter l’activité n’est pas le contrôleur de vue racine de votre application, vous le transmettez simplement du contrôleur de vue racine à la hiérarchie du contrôleur de vue jusqu’à ce que vous atteigniez l’endroit souhaité dans votre application.

Ouvert AppDelegate.swift et ajoutez la méthode suivante au AppDelegate classe:

Dans cette méthode, vous passez l’objet d’activité utilisateur au contrôleur de vue racine de l’application et, en retournant true, vous indiquez à l’application que vous avez correctement reçu et traité l’activité de l’utilisateur Handoff.

Ensuite, ouvrez ViewController.swift et ajoutez la méthode suivante au ViewController classe:

Semblable à la updateUserActivityState(_:) méthode précédente dans ce didacticiel, vous remplacez la restoreUserActivityState(_:) méthode afin de récupérer les informations du NSUserActivity objet. Dans votre implémentation de cette méthode, vous mettez à jour les deux champs d’entrée avec les données stockées dans l’objet d’activité utilisateur.

Créez et exécutez votre application sur vos deux appareils de test et commencez à rédiger une note sur un appareil. Depuis l’écran de verrouillage ou le sélecteur d’application sur votre autre appareil, ouvrez l’application via Handoff et vous devriez voir le texte que vous aviez écrit sur votre premier appareil sur votre deuxième.

Données transférées avec succès

5. Gestion des erreurs et méthodes de délégation

Contrairement à de nombreuses API fournies par Apple pour iOS, la gestion des erreurs n’est pas facile lors de l’utilisation de Handoff si vous ne savez pas où ces erreurs doivent être traitées. Le premier point auquel votre application sera informée d’une erreur de transfert est via le application(_:didFailToContinueUserActivityWithType:error:) dans la classe de délégué d’application. Dans cette méthode, vous pouvez déterminer la cause de l’erreur et le type d’activité auquel l’erreur se rapporte. Notez que le type d’un NSUserActivity objet est le même que l’identifiant unique que vous lui attribuez.

Lorsque votre application continue à partir d’une activité de transfert, elle doit d’abord télécharger les données associées à l’activité à partir de l’appareil d’origine via Bluetooth. Avant que ce téléchargement ne soit terminé, une autre méthode de délégué d’application est appelée: application(_:willContinueUserActivityWithType:). Dans cette méthode facultative, vous pouvez renvoyer une valeur booléenne pour indiquer à l’API Handoff si vous souhaitez ou non continuer à recevoir l’activité de l’utilisateur. Dans certaines situations, cela peut être utile car vous pouvez désactiver un type particulier de NSUserActivity lorsque certaines conditions sont remplies.

Conclusion

Dans ce tutoriel, je vous ai montré comment utiliser le NSUserActivity classe pour adopter facilement Handoff dans vos propres applications iOS 8. Vous avez créé une application très simple, capable de transférer des données sans fil vers un autre appareil via Bluetooth.

Alors que l’exemple d’application que nous avons parcouru dans ce didacticiel était très simple, vos propres applications peuvent avoir autant de types d’activité utilisateur que vous le souhaitez pour une grande variété de fonctionnalités. Comme toujours, si vous avez des commentaires ou des questions, laissez-les dans les commentaires ci-dessous.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.