Tutoriel Swift : Communication Apple Watch – iPhone

dock-2898497_1280

Cette foi c’est bon, j’en rêvait depuis un moment, et c’est maintenant devenu réalité : mon application Reiki Energy possède maintenant son extension Apple Watch !

Cela vaut bien un petit tuto sur la communication entre ces 2 objets !

Pour cela, nous allons faire une petite appli contenant, coté iPhone une TextView et un bouton, et coté Apple Watch un Label.

Voici l’appli :

Appli

Allez, on y va !

Donc, je crée un nouveau projet sous Xcode, en sélectionnant comme template « iOS App with WatchKit App » :

NewProject

On crée nos 2 Storyboards…

Le Storyboard coté iPhone :

StoryBoardiPhone

Et celui coté AppleWatch :

StoryBoardAppleWatche

Et je vous laisse créer les outlets et les actions qui vont bien…

Ensuite, toute la partie communication dépend du framework « WatchConnectivity », que vous devrez donc importer dans les contrôleur devant communiquer.

On initialise le framework ainsi (Cliquez pour agrandir) :

On doit toujours utiliser un WCSessionDelegate (même si les fonctions qui s’y trouvent sont vides !) :

C’est le WCSessionDelegate qui gère la réception des messages entre les 2 devices !

Ici, nous utilisons l’AppleWatch pour recevoir et afficher un texte provenant de l’iPhone. Les messages seront reçus sous la forme d’un Array contenant des paires de valeurs sous forme ce [« Clé” : « Valeur »].

On parcourt donc ce tableau à l’aide de la Méthode « enumerated() » afin de trouver la valeur d’une clé donnée :

—————- Watch Interface Controller —————-

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
//WKInterfaceDevice().play(.click)

if message.count > 0 {
for (i, msg) in message.enumerated() {

let value = (msg.value) as! String

messageLabel.setText(value)
}
}

}


Les messages sont envoyés depuis l’iPhone via le bouton « sendButton » :

—————- iPhone ViewController —————-

//MARK: Actions
@IBAction func sendButton(_ sender: Any) {

message = messageTextView.text

// send a message to the Watch if it’s reachable
if (WCSession.default.isReachable) {
let message = [« request »: self.message]
WCSession.default.sendMessage(message, replyHandler: nil)

}
else {
print(« No Watch found ! »)
}

}


Voilà, c’est aussi simple que cela !

Pour la communication dans l’autre sens (Apple Watch vers iPhone), c’est la même chose !

Vous trouverez le projet complet ici : https://www.dropbox.com/s/55j5jie5kyswpfh/WatchCommDemo.zip?dl=0

N’hésitez pas à commenter ou envoyer un mail pour toute question / suggestion / remarque !

2 réflexions sur “Tutoriel Swift : Communication Apple Watch – iPhone

  1. Pingback: Communication iPhone – Apple Watch : la vidéo | Pour quelques lignes de plus...

  2. Pingback: Tutoriel Swift : la gestion des entrées utilisateurs sur une Apple Watch | Pour quelques lignes de plus...

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.