Cette année à la WWDC, Apple a officiellement dévoilé watchOS 3, sa dernière mise à jour du logiciel de base de l'Apple Watch. WatchOS 3 offre de nombreuses API permettant aux développeurs de créer des applications watchOS encore plus fonctionnelles. Un grand nombre de ces API sont disponibles sur iOS depuis plusieurs années et ont maintenant été ajoutées à watchOS, notamment CloudKit, SpriteKit et SceneKit..
Dans ce didacticiel, je vais vous montrer comment utiliser toutes ces nouvelles API dans vos applications watchOS 3. Je vais également vous montrer quelques-uns des ajouts les plus significatifs aux frameworks existants de watchOS..
Ce tutoriel nécessite que vous exécutiez Xcode 8 sur macOS 10.11 ou version ultérieure. Cela suppose également que vous maîtrisez les bases de WatchKit et du développement d'applications WatchOS. Si ce n'est pas le cas, je vous recommande de consulter certains des didacticiels suivants qui traitent des bases de WatchKit:
Vous devrez également télécharger le projet de démarrage depuis GitHub..
Deux des plus importants ajouts à watchOS 3 pour les développeurs sont les frameworks SpriteKit et SceneKit. Ces infrastructures fournissent des graphiques 2D et 3D riches, respectivement dans les applications Apple Watch. Vous pouvez afficher des scènes dans vos applications en utilisant le nouveau WKInterfaceSCNScene
et WKInterfaceSKScene
objets d'interface, qui sont à la fois des sous-classes de WKInterfaceObject
. Similaire à SCNView
et SKView
sur iOS, ces objets d'interface fournissent des propriétés et des méthodes pour manipuler vos scènes, y compris les fonctionnalités de lecture / pause et d'éclairage par défaut.
Ouvrez le projet de démarrage et ouvrez le Interface.storyboard fichier. Vous verrez que dans ce fichier, j'ai déjà configuré quelques interfaces de base pour vous. Pour cette partie du didacticiel, nous ne nous intéressons qu'au contrôleur d'interface le plus haut doté d'un seul bouton. Aller au Bibliothèque d'objets dans le coin inférieur droit de Xcode et faites glisser un SceneKit Scène objet au-dessus du Jouer pause bouton:
Ensuite, ouvrez le Les attributs Inspecteur et assigner le fichier de scène (Scene.scn) inclus dans le projet à la Scène propriété de cet objet d'interface:
Pour travailler avec cela dans notre code, ouvrez le SceneKitInterfaceController.swift déposer dans le Assistant rédacteur et créer et relier un point de vente appelé sceneItem
pour votre objet d'interface:
@IBOutlet var sceneItem: WKInterfaceSCNScene!
Notez que pour que votre contenu SceneKit soit restitué correctement, vous devez doit lier l'objet d'interface dans votre storyboard avec un IBOutlet
dans votre code. Au moment de la rédaction de ce didacticiel, il n’est mentionné nulle part dans la documentation d’Apple, mais cette configuration est obligatoire..
Enfin, pour mettre en œuvre la fonctionnalité de lecture / pause de notre bouton, remplacez le didPress (bouton :)
méthode avec ce qui suit:
@IBAction func didPress () si laissé en pause = sceneItem.scene? .IsPaused sceneItem? .Scene? .IsPaused =! En pause
Construisez et exécutez votre application et vous verrez un cube rouge tourner à l'écran:
En appuyant sur Jouer pause bouton devrait arrêter et démarrer l'animation de votre scène au besoin.
Alors que nous venons de décrire le contenu de SceneKit dans ce tutoriel, l’ajout de la prise en charge de SpriteKit est très similaire. La seule différence majeure est que les actifs SpriteKit doivent être utilisés avec WKInterfaceSKScene
objet plutôt qu'un WKInterfaceSCNScene
objet pour SceneKit.
Un autre ajout avec iOS 10 et watchOS 3 est le cadre UserNotifications. Ce cadre fournit un moyen simple de travailler avec les notifications locales et distantes envoyées et livrées par votre application..
Si vous voulez en savoir plus sur ce cadre, consultez mon tutoriel le couvrant ici:
Veuillez noter que toutes les API du framework UserNotifications sur iOS ne sont pas disponibles dans watchOS. Ceux qui sont présents, cependant, fonctionnent de manière identique sur watchOS et iOS.
WatchOS 3 est un autre ajout important à la disponibilité de frameworks qui étaient auparavant uniquement disponibles sur d'autres plateformes Apple, notamment CloudKit, GameKit, CoreAudio et AVFoundation..
WatchOS ne contient pas l'ensemble complet des API de ces infrastructures, mais les classes et méthodes utilisables dans les applications Apple Watch fonctionnent de la même manière que leurs homologues iOS et macOS..
WatchOS 3 apporte de nombreux changements aux frameworks existants, notamment WatchKit et ClockKit..
La première nouvelle fonctionnalité du framework WatchKit que nous allons examiner est la nouvelle WKCrownSequencer
classe. Cette classe vous permet de récupérer des données détaillées sur la couronne numérique, y compris sa vitesse de rotation actuelle et son état de veille ou non. Bien que ces informations soient accessibles via des propriétés sur WKCrownSequencer
objet, le WKCrownDelegate
le protocole vous permet de suivre les changements plus facilement.
Tout WKInterfaceController
les sous-classes ont maintenant un CrownSequencer
propriété, qui est une instance de la WKCrownSequencer
classe. Cela signifie que pour suivre les changements dans la couronne numérique, il vous suffit de spécifier un objet délégué et d'implémenter les méthodes souhaitées..
Dans votre projet, ouvrez votre CrownInterfaceController.swift déposer et faire votre CrownInterfaceController
classe conforme à la WKCrownDelegate
protocole:
Classe CrownInterfaceController: WKInterfaceController, WKCrownDelegate …
Ensuite, remplacez votre actuel réveillé (avecContext :)
méthode avec ce qui suit:
redéfinit func awake (withContext contexte: Any?) super.awake (withContext: context) crownSequencer.delegate = self crownSequencer.focus ()
Dans le code ci-dessus, nous appelons le concentrer
méthode sur le CrownSequencer
sinon, il ne recevra pas les événements de la couronne numérique. Si un élément de votre interface est mis en évidence par l'utilisateur en le tapant dessus, vous devrez à nouveau appeler cette méthode pour obtenir le résultat. CrownSequencer
détecter le mouvement numérique de la couronne.
Enfin, ajoutez les deux méthodes suivantes à votre classe:
func crownDidRotate (_ crownSequencer: WKCrownSequencer ?, rotationalDelta: Double) si laissez speed = crownSequencer? .rotationsPerSecond label.setText ("Crown \ nspeed: \ n \ (vitesse)") func crownDidBecomeIdle (_ crownSequancer) ) label.setText ("Crown \ n est inactif")
Pour que cette interface soit chargée, ouvrez votre Interface.storyboard déposer et faire glisser le Contrôleur initial flèche pour sélectionner l'interface inférieure:
Générez et exécutez votre application et vous verrez que, lorsque la couronne numérique de la montre est déplacée, l'étiquette à l'écran reflète l'état actuel:
Si vous utilisez le simulateur Apple Watch, vous pouvez "tourner" la couronne numérique en faisant simplement défiler l'écran à l'aide de la souris ou du trackpad de votre Mac..
Outre la détection des mouvements de couronne numériques, le framework WatchKit de watchOS 3 fournit également les classes suivantes pour que votre application détecte les gestes sans utiliser les éléments d'interface:
WKLongPressGestureRecognizer
WKPanGestureRecognizer
WKSwipeGestureRecognizer
WKTapGestureRecognizer
Comme leur nom l'indique, ces dispositifs de reconnaissance de mouvements fonctionnent de manière très similaire à la manière dont ils fonctionnent sur iOS. Ces classes sont particulièrement utiles pour détecter les contacts si vous utilisez SceneKit, SpriteKit ou une interface personnalisée à base d'images pour afficher du contenu..
watchOS 3 apporte également quelques nouvelles fonctionnalités importantes pour les applications qui tirent parti du cadre ClockKit pour offrir des complications sur le cadran de la montre..
Tout d'abord, en raison de la nouvelle fonctionnalité de traitement en arrière-plan des applications dans watchOS 3, si un utilisateur insère une des complications de votre application sur son visage, votre application restera en mémoire et restera dans un état prêt à être lancée. De plus, votre application est assurée de pouvoir mettre à jour son contenu en réponse aux notifications push jusqu'à 50 fois par jour..
Si vous souhaitez en savoir plus sur les nouvelles fonctionnalités de l'application d'arrière-plan dans watchOS 3, j'ai déjà abordé ce sujet ici:
Ensuite, de nouveaux modèles ont été ajoutés à la famille des complications très volumineuses, notamment CLKComplicationTemplateExtraLargeColumnsText
, CLKComplicationTemplateExtraLargeRingImage
, CLKComplicationTemplateExtraLargeRingText
, et CLKComplicationTemplateExtraLargeSimpleImage
.
Enfin, le CLKTextProvider
classe fournit maintenant une API pour créer un fournisseur de texte localisable afin d'utiliser un texte différent pour des régions de périphérique spécifiques.
En dehors de ces petits ajouts, ClockKit reste inchangé par rapport à la sortie de watchOS 2 de l'année dernière. Si vous voulez en savoir plus sur ce framework et sur son utilisation, vous pouvez consulter mon tutoriel le couvrant ici:
Alors que PassKit était déjà disponible sous une forme limitée dans watchOS 2, watchOS 3 offre une prise en charge complète des achats Apple Pay intégrés à l'application directement sur la montre. Cela se fait à travers de nouvelles classes et un protocole, y compris:
WKInterfacePaymentButton
: utilisé pour montrer un pré-conçu Achetez avec Apple Pay bouton.PKPaymentAuthorizationController
: utilisé pour afficher un modèle d'interface avec les informations de paiement à confirmer par l'utilisateur. Cette classe remplit le même rôle que le PKPaymentAuthorizationViewController
classe mais ne dépend pas de UIKit. Cela signifie que le PKPaymentAuthorizationController
la classe peut être utilisée à la fois sur iOS et sur watchOS.PKPaymentAuthorizationControllerDelegate
: les classes peuvent être faites pour se conformer à cela. Ce protocole permet à votre application de répondre aux actions de l'utilisateur concernant votre paiement, y compris lorsqu'il sélectionne un mode de paiement ou lorsque le paiement a été autorisé..Dans l'ensemble, watchOS 3 est une version importante pour les développeurs d'applications Apple Watch. Il est maintenant beaucoup plus facile de créer des jeux et des applications multimédias avec l’ajout de cadres, tels que SceneKit, SpriteKit, GameKit et AVFoundation. L'ajout de CloudKit et les améliorations apportées à WatchKit, ClockKit et PassKit vous permettent de créer des applications plus fonctionnelles que jamais auparavant tout en devenant plus indépendant de l'iPhone..
Comme toujours, assurez-vous de laisser vos commentaires dans la section commentaires ci-dessous. Pour savoir comment créer une application dans WatchOS, consultez le cours watchOS 2 From Scratch ici sur Envato Tuts.+.