0 votos

iOS: aplicación de fondo Bluetooth LE

Sufro severamente de iOS (supuestamente) matando mis aplicaciones todo el tiempo, aunque a propósito no las mato. También aparecen en el administrador de tareas (doble toque en el hogar).

Esto es especialmente malo para al menos dos de mis aplicaciones:

  1. HID Mobile Access (sistema de entrada sin llave)
  2. Noke (candado Bluetooth)

Para los primeros, basta con agitar el teléfono. Entonces, el lector de tarjetas debería activarse y abrir la puerta. Para la segunda, sólo habría que pulsar el grillete de la cerradura de almohadilla y ésta debería desbloquearse automáticamente si el teléfono está cerca (es decir, en mi bolsillo).

AMBOS casi nunca funcionan, lo que los hace casi inútiles (si tengo que rebuscar en mi bolso para encontrar el teléfono, también puedo rebuscar la llave o la tarjeta RFID).

Ambos funcionan cuando inicio manualmente la aplicación (y poco después) pero luego vuelven a fallar aleatoriamente después de algún tiempo.

Ambas aplicaciones tienen una opción de actualización de aplicaciones en segundo plano que he activado.

Los desarrolladores de las aplicaciones afirman que esto sería una limitación de iOS y la funcionalidad no funcionaría. Me parecería atrevido anunciar una funcionalidad que ni siquiera puede funcionar...

¿No debería la actualización de aplicaciones en segundo plano permitir exactamente esto... mantener ese tipo de cosas en funcionamiento?

También tengo un Apple Watch y ahí nunca he experimentado pérdidas de comunicación ni problemas.

¿Cómo funciona exactamente la actualización de la aplicación en segundo plano para Bluetooth LE? Existe una función para buscar un dispositivo Bluetooth LE en segundo plano?

¿Los desarrolladores de estas aplicaciones están inventando excusas?

(Tile es otra aplicación Bluetooth LE con los mismos problemas. Sin embargo, aquí no me importa demasiado)

1voto

Benjamin Geese Puntos 11

En efecto, es un reto conseguir que esa funcionalidad funcione de forma fiable, ya que iOS tiene un mecanismo de ahorro de energía muy conservador y los desarrolladores no se inventan las cosas.

El problema es: Si bien existe una forma de que las aplicaciones utilicen Bluetooth LE en segundo plano, es muy limitada. Normalmente, para conectarse a un dispositivo BLE como Noke, la aplicación necesita escanear para el dispositivo que anuncia es la presencia. Sólo después de recibir un escaneo, la aplicación puede conectarse realmente al dispositivo. Un dispositivo emite un escaneo utilizando los servicios del sistema iOS y registra un llamada de retorno lo que significa que el sistema operativo "llama"/"activa" la aplicación si se encuentra un dispositivo que ha sido escaneado.

Cuando se busca un dispositivo, hay varios parámetros que se pueden ajustar y que afectan a la intensidad de la energía, pero también a la latencia cuando se interactúa con BLE. En general, es necesario equilibrar estos parámetros para obtener la mejor experiencia. En primer plano, la búsqueda de dispositivos y la conexión a los mismos es muy rápida en iOS, pero en segundo plano, iOS ignora algunas opciones que los desarrolladores pueden configurar, pero sobre todo, reduce la frecuencia del escaneo, lo que reduce mucho el uso de energía, pero también introduce mucha latencia. iOS también decide cuando para emitir la llamada de retorno a la aplicación descrita anteriormente.

He descubierto que el ahorro de energía en iOS 11.1 es mucho más agresivo que en iOS 10. Estás usando iOS 11 cuando se produjeron esos problemas?

Fuente: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html#//apple_ref/doc/uid/TP40013257-CH7-SW1

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X