Périphérique périphérique IOS dans BACKGROUND

Nous avons besoin dans notre projet de détecter la proximité d'un iPhone qui exécute une application personnalisée qui utilise Bluetooth LE.

Le détecteur (Scanner, Central …) sera implémenté à l'aide d'un circuit embedded BLE (Texas ou Nordic). Je veux dire que le scanner n'est pas un autre périphérique IOS … Core Bluetooth en cours d'exécution en tant que centrale ..

Pour que le détecteur devine la proximité, l'idée est très simple, il suffit de faire la publicité d'un service avec un propriétaire UUID.

Alors qu'en premier plan tout fonctionne correctement, et l'UUID et un nom local sont annoncés (l'UUID dans le package de publicité principal, et le nom local dans le package de réponse SCAN ….), et notre scanner est capable de décider si cet iOS périphérique exécute notre application.

Le problème se pose en allant à l'arrière-plan …..

L'iOS arrête de diffuser l'UUID et le nom local. (Comme la documentation de Core Bluetooth explique … je sais …)

À ce moment (arrière-plan), IOS commence à diffuser un DATA SPECIAL FABRICANT dans le package de publicité principal, et rien dans le package de réponse SCAN.

Le package de données que nous voyons à l'aide d'un Bluetooth Sniffer est:

0x14 (longueur du package n'incluant pas cet octet). 0xFF (type de données AD spécifique au fabricant).

Et alors :

0x4C, 0x00 (cette donnée est l'identificateur du fabricant, si le package est conforme à la spécification BLE 4.0). 0x01, 0x00,0x00, 0x00, 0x00,0x00,0x80, et dix 0x00 plus ….

Je sais que Apple dit que tandis qu'en arrière-plan SEULEMENT UN AUTRE APPAREIL IOS RECHERCHE POUR UN SERVICE SPÉCIFIQUE PEUT LE DÉCOUVRIR. (Vraiment je ne sais pas comment ils peuvent y parvenir, à less qu'ils se connectent au périphérique et récupérer les services, ou si le périphérique connaît d'autres périphériques IOS scanne à cause de son adresse dans le SCAN REQUEST puis modifie datatables de publicité en arrière-plan).

Les questions principales sont:

Y at-il une documentation ou une connaissance de ce que datatables de ce fabricant signifie … Peut-être qu'il serait possible au scanner de savoir sur la base de cette information qu'il s'agit d'un appareil iOS en arrière-plan, puis se connecter pour voir si le service personnalisé est là . (Pas une solution rapide et propre … mais je ne vois pas d'autre solution de contournement ….)

Est-ce que quelqu'un a travaillé avec ce scénario … et a trouvé une solution propre …..

J'ai entendu des gens qui obligent l'application à ne pas aller à l'arrière-plan.

Cette limitation, va arrêter beaucoup de projets possibles.