J'ai joué avec l'utilisation d'appareils iOS en tant que diffuseurs et récepteurs en utilisant les nouvelles API iBeacon dans iOS 7.
Les documents ne détaillent pas à quelle distance le périphérique récepteur doit voir chaque indicateur de proximité, et les appelle spécifiquement comme "relatifs". Lors de l'expérimentation d'une application de démonstration, j'ai observé ces distances (récepteur iPhone ==, diffuseur iPad ==):
loin - 50 pieds?
Près - 2-3 pieds
Immédiat - 2 pouces
Ceux-ci me semblaient vraiment petits, et il y a peut-être un indice dans la référence de classe CLBeaconRegion, qui vous permet de spécifier la force du signal de votre appareil à 1 m de distance.
deviceDataWithMeasuredPower:
Récupère les données qui peuvent être utilisées pour publier le périphérique actuel comme balise.
Paramètres
puissance mesurée
La valeur de l'indicateur de force du signal reçu (RSSI) (mesurée en décibels) pour l'appareil. Cette valeur représente la force mesurée de la balise à un mètre de distance et est utilisée pendant la télémétrie. Spécifiez nil pour utiliser la valeur par défaut du périphérique.
Mon étalonnage amateur a donné -60, que j'ai réglé et re-testé:
Loin - centaines (ish) pieds
Près - ~ 50 pieds
Immédiat - 1 mètre (légèrement moins)
Les résultats de mon deuxième test sont-ils les gammes "idéales" selon Apple? Ils sont vraiment loin du réglage "par défaut" que j'ai connu lors du premier test.
Ou devrais-je peut-être considérer ces gammes "calibrables" selon mes besoins?
D'après ce que j'ai compris de l'API, il n'y a jamais de garantie sur la distance réelle, vous ne devez pas utiliser les lectures pour être considéré comme une mesure précise. La proximité est plutôt utilisée pour déterminer la distance relative entre les différentes balises afin que vous puissiez répondre en fonction des besoins de vos applications.
Cela dit, Apple dessine définitivement une zone grise dans leur documentation. La description de measuredPower
est intrigante et incite facilement à penser que vous pouvez utiliser cette valeur pour obtenir une distance précise lecture (une fois calibré bien sûr). Je ne pense tout simplement pas que ce soit le cas cependant, avec la probabilité d'atténuation du signal dans ces appareils de faible puissance, je ne m'attends pas à ce que vous obteniez des lectures toujours précises d'une distance réelle.
A partir de la référence CLBeacon
, la description de accuracy
lit
Indique la précision horizontale d'un sigma en mètres. Utilisez cette propriété pour différencier les balises ayant la même valeur de proximité. Ne l'utilisez pas pour identifier un emplacement précis pour la balise. Les valeurs de précision peuvent varier en raison de RF interférence.
Je pense que cela résonne inexplicablement tout au long de l'utilisation de la fonction iBeacon.
C'est toute mon interprétation, je ne suis pas allé aussi loin que de tester cela dans plusieurs environnements au fil du temps pour voir si des lectures cohérentes sont données. Je ne sais pas si cela aide du tout.