¿Cómo puede la aplicación watchOS 2.2 determinar si su iPhone sincronizado ha cambiado a otro reloj Apple Watch?

Estoy tratando de admitir la nueva function para emparejar con múltiples relojes en mi aplicación iOS 9.3 / watchOS 2.2. Parece que funciona bien, excepto que no puedo entender cómo la aplicación watchOS puede determinar si el iPhone emparejado se ha cambiado a otro Apple Watch.

Los docs dicen que WCSession permanece activado desde la perspectiva de la extensión WatchKit a lo largo del ciclo de vida de conmutación, y de mis testings en Xcode, parece que la session de vigilancia informa que el iPhone también es accesible incluso cuando el teléfono ha sido cambiado a otro reloj .

Actualmente no tengo varios relojes para poder comprobar si el comportamiento es el mismo en un dispositivo real.

Solutions Collecting From Web of "¿Cómo puede la aplicación watchOS 2.2 determinar si su iPhone sincronizado ha cambiado a otro reloj Apple Watch?"

Una respuesta específica a su pregunta:

El hecho de que el reloj ya no esté conectado no es evidente, ya que se pueden utilizar todos los methods de transferencia, incluida la postría inmediata . Las transferencias simplemente se diferencian hasta que el usuario regresa a ese reloj.

Como un reloj no conectado todavía puede iniciar transferencias a su iPhone asociado, es probable que tenga que implementar algún tipo de reconocimiento de espera o de espera y ver si el teléfono no responde a time.

Mis hallazgos:

Parece que el reloj no conectado no está destinado a saber que el usuario ha cambiado a un reloj diferente. Como señaló, la session de la aplicación de reloj todavía está activa, y el reloj (simulador) sigue informando que el teléfono es accesible.

Una aplicación de reloj no conectada puede continuar utilizando todos los methods de transferencia, incluida la postría interactiva (aunque el sistema recibe los datos salientes y no se transfiere hasta que el usuario regrese a ese reloj).

He verificado que los datos están en queue, utilizando dos enfoques diferentes:

  • mediante el uso del dictionary transferUserInfo de un reloj, permitiendo ejecutar el ciclo de ejecución, repitiendo ese process varias veces, y luego examinando la matriz outstandingUserInfoTransfers .
  • mediante el uso de un sendMessage respuesta sendMessage que solo se ejecuta después de que el usuario regrese a ese reloj y se reciba una respuesta.

Una vez que se vuelve a conectar, todas las transferencias en queue se envían inmediatamente a su teléfono, y el reloj recibe las respuestas interactivas.

Mientras que un reloj no conectado puede poner datos en queue en su iPhone asociado (dado que su session aún está activa), el teléfono solo puede comunicarse con su reloj conectado, ya que el teléfono ya no tiene una session activa para ningún reloj desconectado.

Nuevo código de muestra:

Puede probar el nuevo código de muestra QuickSwitch . Utiliza updateApplicationContext para pasar un designador y colorear desde cualquiera de los relojes al teléfono.

Puede cambiar el designador y el color de un reloj no utilizado, use el panel Dispositivos Xcode para cambiar a ese reloj, luego observe que la aplicación iOS muestra inmediatamente el nuevo designador y el color del reloj (que estaba en queue mientras el reloj no estaba en uso).

Posible incoinheritance de la documentation reachable :

En su extensión WatchKit, el valor de esta propiedad es SÍ cuando una session coincidente está activa en el iPhone del usuario y el dispositivo está dentro del scope para que pueda producirse la comunicación.

Como no tengo un segundo reloj, no pude comprobar si la accesibilidad de un reloj no utilizado cambia a falsa, una vez que su teléfono sale del range.