watchkit - TransferCurrentComplicationUserInfo est-il plus approprié pour la mise à jour des complications?




apple-watch apple-watch-complication (2)

Quelle est la différence entre transferCurrentComplicationUserInfo et transferUserInfo ?

Je souhaite envoyer des données de mon AppDelegate à une complication du kit d’horloge.

transferCurrentComplicationUserInfo semble faire exactement la même chose que transferCurrentUserInfo . Est-ce que je manque quelque chose?


À ma connaissance: TransferCurrentComplicationUserInfo a les mêmes fonctionnalités que transferCurrentUserInfo lorsque vous l'appelez comme délégué d'application parent, mais TransferCurrentComplicationUserInfo appelle également CLKServer ...... etc. pour mettre à jour la complication. Je dois dire que je trouve que les deux solutions ne sont pas fiables et que j'ai du mal à utiliser TransferCurrentComplicationUserInfo pour mettre à jour mon application. Ça ne semble pas toujours fonctionner. Ce qui est gênant, c’est qu’il varie d’une version à l’autre sans changer le code, ce qui, techniquement, ne devrait pas être possible. tant pis...


La distinction entre ces deux méthodes WCSession implique le moment où les données sont envoyées et si l'extension du kit de surveillance est réveillée ou non.

transferCurrentComplicationUserInfo: est spécialement conçu pour transférer les informations utilisateur de complication destinées à être affichées sur le cadran de la montre pour le moment.

  • Les informations sur l'utilisateur de la complication sont marquées "Urgent" et sont placées au début de la file d'attente.
  • la montre réveille l'extension en arrière-plan pour recevoir les informations, et
  • le transfert se fait immédiatement. (D'autres informations en file d'attente pourraient également être transférées à ce stade.)

transferUserInfo: file d'attente les informations à transférer lorsque le système détermine que le moment est opportun pour traiter la file d'attente:

  • Les informations sur l'utilisateur sont placées à la fin de la file d'attente.
  • les informations transférées sont stockées si l'extension n'est pas réveillée,
  • le transfert ne se produit pas immédiatement, et
  • les informations sont livrées dans l'ordre dans lequel elles ont été envoyées.

Plus de détails peuvent être trouvés dans la vidéo WWDC 2015 Introducing Watch Connectivity .

Mise à jour pour iOS 10:

Dans iOS 10, WCSession ajoute une propriété WCSession qui peut avoir une incidence sur la méthode WCSession utilisera pour transférer les informations de l'utilisateur:

Nombre de fois qu'il est possible d'appeler transferCurrentComplicationUserInfo: cours de la journée en cours. Si cette propriété est définie sur 0, tous les appels supplémentaires à transferCurrentComplicationUserInfo: utilisez plutôt transferUserInfo: :.

Si la complication est sur le cadran de veille actif, vous recevez 50 transferts par jour. Si la complication n'est pas active, cette propriété est définie par défaut sur 0.