48: SiriKit, part 1

Les liens

SiriKit

SiriKit dans iOS 10.

On sait déjà que SiriKit propose 6 domaines d'interactions.
Avec un peu de chance, Apple proposera d'autres domaines d'ici à la sortie de l'iPhone 7. Pour rappel, ces 6 domaines sont:

  • la réservation de trajet (3 intentions)
  • l'envoi de messages (3 intentions)
  • la recherche de photos (3 intentions)
  • les transactions monétaires (2 intentions)
  • les conversations en VoIP (3 intentions)
  • les exercices physiques (5 intentions)

Il existe deux autres domainest, restreints à des usages bien spécifiques:

  • la réservations de restaurant lorsqu'on est dans l'application Maps (5 intentions)
  • la modifications de réglages dans la voiture (quand l'iPhone est en mode Carplay) (7 intentions)

Flow

D'un point de vue haut niveau, le flow est le suivant:

  • l'utilisatrice demande à Siri de réaliser une action
  • Siri traduit les paroles de l'utilisateur en Intention
  • Si votre application est concernée par cette intention, Siri appelera votre code
  • Vous répondrez à Siri de façon à ce qu'elle puisse informer l'utilisatrice du résultat de l'action.

L'avantage le plus important est que Siri faisant la traduction des paroles vers l'intention, vous n'avez pas à vous souciez de la langue de l'utilisatrice.

Technique

Et techniquement, comment ça marche Jamie ?
Bien évidemment, il faut créer une extension qui contiendra le code appelé par iOS, mais ce n'est pas tout:

  • dans le fichier Info.plist de votre application, il vous faudra déclarer toutes les "intentions"
  • au lancement de votre application, demander toutes les autorisations nécessaires pour le code de votre extension Siri.
  • il y a une nouvelle autorisation, celle d'utiliser Siri, qui fonctionne de la même façon que la demande de géoloc, c'est-à-dire avec l'affichage d'un message explicatif

Résolution

La grande question est : une fois que la question est posée, que l'intention est calculée, que l'extension est appelée, que se passe-t-il ?

La documentation d'Apple divise ce travail en deux étapes:

  • valider les paramètres de l'intention
  • traiter l'intention

La première étape est de faire savoir à Siri si l'intention est complète et traitable. Si l'intention est de réserver une course de taxi mais que votre application/service ne gère pas l'endroit où se trouve l'utilisateur, il est indispensable de le faire savoir à l'utilisatrice via Siri.

Il y a donc plusieurs résultats possibles à la validation des paramètre d'une intention:

  • tout est OK
  • un paramètre est superflu (fixer un but pour un exercice physique)
  • un paramètre est ambigu (envoyer un message à une personne: chosir entre deux contacts)
  • un paramètre nécessite une confirmation (appeler un contact)
  • un paramètre nécessite des précisions (appeler un contact)
  • un paramètre est manquant (rembourser qqun sans préciser le montant)
  • un paramètre n'est pas pris en charge (trajet en taxi dans un endroit non couvert par le service)

Vocabulaire

Mais comment indiquer à Siri que les paroles de l'utilisatrice concernent notre application ?
Tout simplement en indiquant à Siri un vocabulaire particulier. Et là encore, deux cas:

  • un vocabulaire général, décrit dans le fichier AppIntentVocabulary.plist
  • un vocabulaire spécifique à l'utilisateur, stocké via le singleton INVocabulary.sharedVocabulary

Un vocabulaire est une association entre un ensemble de mot et des concepts.
Apple explique précisément en quoi consiste ces concepts.

Pour le vocabulaire général, il s'agit:

  • de noms d'exercices physiques ou
  • d'options pour la réservations de trajet

Pour le vocabulaire spécifique, il s'agit:

  • de noms de contacts
  • de tags de photos
  • de noms d'album photos ou
  • de noms d'exercices physiques

Le vocabulaire spécifique, via le singleton, est une simple définition clé-valeur.
Le vocabulaire général, définie dans un plist, est un peu plus intéressant car il permet, en plus des clés-valeurs, de définir des synonymes et des phrases d'exemples.

Je vous garde la création d'UI customisé pour la semaine prochaine.

A vot' bon cœur m'sieur-dame

Le lien du podcast sur iTunes

47: Au nom du père, du fils et du saint esprit

Les liens

Le sujet

  • Le père: le language, ObjC ou Swift
  • Le fils: l'API, CocoaTouch
  • le saint-esprit: l'IDE, Xcode

Des alternatives existent (Xamarin, Rubymotion, n'importe quoi qui compilent) mais parce que seul Apple a la maîtrise de l'ensemble de la stack et la plus grande ressource financière pour assurer le support et les évolutions, le tooling d'Apple restera celui de référence.e

A vot' bon cœur m'sieur-dame

Le lien du podcast sur iTunes

46: Être un modèle pour les vues

Les liens

  • tester des NSNotification en UI Tests avec Xcode, ce n'est pas possible. Un billet de Realm explique pourquoi et donne des pisets sur le comment
  • Daniel Glazman donne son point de vue très critique sur la façon dont est considéré l'informatique et propose une solution
  • Une situation bien connue porte désormais un nom: la loi de Brandolini qui énonce que la quantité d'énergie nécessaire pour réfuter une connerie est largement supérieur à l'énergie nécessaire pour produire la même connerie.
  • Une fonctionnalité d'iOS 8 que je ne vois pas assez à mon goût: les «credentials» partagés (Shared Web Credentials), c'est-à-dire d'offrir à l'utilisateur la possibilité de se connecter automatiquement à son compte dans l'application mobile s'il s'est auparavant connecté au site web via Safari (et avec iCloud Keychain)
  • Ce n'est pas du code mais c'est l'équivalent de l'assembleur pour la société: construire un lieu de vie from scratch

Le ViewModel

  • pas de @import UIKit
  • en swift, ça peut être une simple struct
  • c'est du code qui existe déjà mais que l'on encapsule ailleurs
  • au lieu de tout faire pour la vue, on lui donne les données (le viewModel) et la vue va calculer l'état de la vue
  • ça permet de passer d'une UITableViewCell à une UICollectionViewCell ou à une UIView
  • on peut tester l'état de la vue unitairement

A vot' bon cœur m'sieur-dame

Le lien du podcast sur iTunes

45: Docker & Chef

44: Les X-mens vont coder nos tests

Les 5 liens

Le mutation testing

A vot' bon cœur m'sieur-dame