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 :
Allez, on y va !
Donc, je crée un nouveau projet sous Xcode, en sélectionnant comme template « iOS App with WatchKit App » :
On crée nos 2 Storyboards…
Le Storyboard coté iPhone :
Et celui coté AppleWatch :
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 !
Pingback: Communication iPhone – Apple Watch : la vidéo | Pour quelques lignes de plus...
Pingback: Tutoriel Swift : la gestion des entrées utilisateurs sur une Apple Watch | Pour quelques lignes de plus...